Как скомпилировать / собрать и запустить программу Objective-C в Ubuntu с помощью Terminal?

Итак, у меня есть базовый скрипт «hello world» для Objective-C, у меня Ubuntu на моем ноутбуке и я хочу использовать Ubuntu, чтобы начать компилировать базовые идеи, дополнительные классы или что-нибудь, что стоит написать для любого из моих текущих проектов на на ходу, чтобы я мог немного кодировать, где бы я ни был, и не всегда должен быть на моем iMac.

helloworld.m

Теперь мой единственный вопрос: как мне собрать и запустить этот код в терминале? Очевидно, что это не так важно, так как я пишу для iOS и OSX, поэтому единственный код, который будет отображаться, это что-нибудь, что не вызывает скрипты SDK или Cocoa, поэтому в основном он должен отображать только основные текстовые команды, такие как «NSLog» или как бы то ни было, вы получаете именно то, что я пытаюсь сделать, чего я и хочу. Таким образом, я могу проверить, по крайней мере, на наличие мелких ошибок.

Я осмотрелся и нашел несколько подсказок для сценариев оболочки по умолчанию и таких, которые вызывают каталог gcc или что-то в этом роде, насколько я понимаю. Я создал свою собственную папку для проектов Objective-C, расположенную в моих документах, и я понятия не имел, влияет ли это на мою способность запускать файл, используя команды терминала, которые я пробовал, или нет, но в случае, если это я сохраняю проекты в:

Главная> Документы> Objective-C> helloworld.m

Также при запуске командной строки:

gcc -o helloworld.m

или это

gcc -I/home/caseyerdmann/Documents/Objective-C/helloworld.m

или любая версия этой командной строки, я получаю эту ошибку:

gcc: fatal error: no input files
compilation terminated.

Я считаю, что у меня установлены все файлы компилятора, но я не против полного учебника, независимо от того, что запускается. Теперь, чтобы уточнить и собрать визуальную помощь для вас, ребята, чтобы попытаться помочь мне лучше, мой текстовый файл находится в моих документах:

filedirectory

И вы можете визуально увидеть каталог, в котором он находится. Теперь, когда я запускаю любую из команд выше, которые я пробовал в терминале, это дает следующий результат:

terminal

Не имеет значения, какие Я использую команду, это всегда так. Я надеюсь, что это поможет немного больше ответить на мою ситуацию. Я не против полного урока и необходимости сохранять свой файл в другом месте или вносить любые другие изменения любым способом, на самом деле это будет оценено! Я просто хотел бы запустить это.

Я провел некоторое исследование и заметил, что ответы на этот вопрос уже помогают мне запустить скрипт hello.m, входящий в библиотеки GNUstep, но это не то, что я пытаюсь сделать. Однако, поскольку у меня возникают проблемы с запуском скрипта по умолчанию, я думаю, что у меня может быть и другая проблема, я собираюсь продолжить исследование, чтобы посмотреть, смогу ли я запустить этот скрипт, в то же время любая помощь будет оценена по достоинству!

ОБНОВЛЕНИЕ: Я попробовал новую команду и дал новый результат, хотя он также был неудачным при компиляции, я думаю, что это может помочь ответить другим, чтобы ответить на этот вопрос. Это то, что я пробовал:

gcc -o helloworld.m -lobjc

и это был результат:

/usr/lib/gcc/x86_64-linux-gnu/4.6/../../../x86_64-linux-gnu/crt1.o: In function `_start':
(.text+0x20): undefined reference to `main'
collect2: ld returned 1 exit status
7
задан 13 April 2016 в 14:54

4 ответа

В Ubuntu 14.04 LTS, разрешение и установка объективный компилятор C GNU:

sudo apt-get install gobjc  

Проверьте версию:

gcc --version

должно сказать что-то как:

gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
....

Установите библиотеки разработки GNUStep (эквивалентный Какао на macosx):

sudo apt-get install gnustep-devel

Это должно работать и скомпилировать с:

gcc HelloWorld.m `gnustep-config --objc-flags` `gnustep-config --base-libs` -o HelloWorld

Необходимо работать с:

./HelloWorld
6
ответ дан 13 April 2016 в 14:54

Вам не хватает имени для исполняемого файла. Таким образом, команда должна выглядеть следующим образом:

gcc -o hello helloworld.m

После компиляции введите

./hello

-o hello и укажите имя выходного файла, который вы хотите создать после компиляции исходного кода. (В этом случае имя выходного файла будет hello.) Это создаст исполняемый файл (с именем hello), который вы затем сможете запустить непосредственно из терминала. Если вы не используете опцию -o во время компиляции, по умолчанию имя исполняемого файла будет a.out. Теперь, чтобы выполнить эту программу, вам нужно набрать

./hello

Приведенные выше команды предполагают, что вы уже находитесь в расположении исходных файлов, но и исходный файл, и целевой выходной файл также могут быть указаны как каталог , Например:

gcc -o ~/Projects/hello ~/Desktop/hello.c

скомпилирует исходный файл C, расположенный на вашем рабочем столе, и поместит исполняемый файл в папку Projects в вашем домашнем каталоге. Чтобы запустить этот исполняемый файл, введите:

./Projects/hello

Или вы также можете сначала перейти в каталог, где находится исходный файл, и запустить над командами. Вам не нужно указывать пути, если вы находитесь в том же каталоге, где находится исходный файл.

Мне интересно, почему у вас расширение файла .m вместо .c.

0
ответ дан 13 April 2016 в 14:54

Я провел небольшое исследование и нашел решение, которое работает на данный момент. Я, вероятно, отправлю новый вопрос, чтобы узнать, есть ли способ сократить это. Но это успешно компилирует мой код. Спасибо всем, кто оказал некоторую помощь, я определенно узнал кое-что новое.

gcc -o hello hello.m \
    -I `gnustep-config --variable=GNUSTEP_SYSTEM_HEADERS` \
    -L `gnustep-config --variable=GNUSTEP_SYSTEM_LIBRARIES` \
    -lgnustep-base -fconstant-string-class=NSConstantString \
    -D_NATIVE_OBJC_EXCEPTIONS
0
ответ дан 13 April 2016 в 14:54
gcc -o hello hello.m

должен создать исполняемый файл target c, если установлен компилятор. Если нет, установите его:

sudo apt-get install gobjc
0
ответ дан 13 April 2016 в 14:54

Другие вопросы по тегам:

Похожие вопросы: