Итак, у меня есть базовый сценарий «hello world» для Objective-C, у меня есть Ubuntu на моем ноутбуке и вы хотите использовать Ubuntu для начала компиляции базовых идей, дополнительных классов или чего-нибудь, что стоит кодировать для любого из моих текущих проектов на go, так что я могу немного кодировать везде, где бы я ни был, и не всегда должен быть на моем iMac.
Теперь мой единственный вопрос: как мне создать и запустить этот код в терминале? Очевидно, что это не так важно, поскольку я кодирую iOS и OSX, поэтому единственный отображаемый код - это все, что не вызывает сценарии SDK или Cocoa, поэтому в основном он должен отображать только основные текстовые команды, такие как «NSLog» или что бы вы ни делали, вы получаете то, что я пытаюсь сделать, чего я хочу. Таким образом, я могу, по крайней мере, проверить небольшие ошибки.
Я посмотрел вокруг, и я нашел несколько подсказок для сценариев оболочки по умолчанию и таких, которые вызывают в каталоге gcc или что-то в этом роде из моего понимания. Я создал свою собственную папку для проектов Objective-C, расположенных в моих документах, и я понятия не имел, реализует ли она мою возможность запускать файл с помощью команд терминала, которые я пытался или нет, но в случае, если я храню проекты в:
Главная> Документы> Objective-C> helloworld.m
Также при запуске командной строки:
gcc -o helloworld.m
или это [!d7 ]
gcc -I/home/caseyerdmann/Documents/Objective-C/helloworld.m
или любая версия этой командной строки. Я получаю эту ошибку:
gcc: fatal error: no input files
compilation terminated.
Я считаю, что у меня есть все файлы компилятора, но я не против полного учебника, независимо от того, это работает. Теперь, чтобы прояснить и собрать визуальную помощь для вас, ребята, чтобы попытаться помочь мне, мой текстовый файл находится в моих документах:
И вы можете визуально см. каталог, в который он помещен. Теперь, когда я запускаю какие-либо из приведенных выше команд, которые я пробовал в терминале, он дает этот результат:
Не имеет значения, какая команда Я использую это всегда так. Надеюсь, это поможет немного больше, чтобы дать ответ на мою ситуацию. Я не против полного руководства и необходимости сохранять файл в другом месте или делать какие-либо другие изменения любыми способами, на самом деле это было бы оценено! Я просто хотел бы, чтобы это выполнялось.
Я провел некоторое исследование и заметил, что ответы на это уже помогают мне запустить скрипт hello.m, который входит в библиотеки GNUstep, это не то, что Я пытаюсь это сделать. Однако из-за того, что у меня возникли проблемы с запуском скрипта по умолчанию, я думаю, что у меня может быть и другая проблема, я продолжу исследования, чтобы узнать, могу ли я запустить этот скрипт, тем временем любая помощь будет оценена!
UPDATE: я пробовал новую команду и дал новый результат, хотя это было также неудачно при компиляции, я думаю, что это может помочь ответить другим, чтобы ответить на это. Это то, что я пробовал:
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
В Ubuntu 14.04 LTS, продолжайте и установите компилятор GNU объектно-c:
sudo apt-get install gobjc
Проверьте версию:
gcc --version
должен сказать что-то вроде: [!d2 ]
gcc (Ubuntu 4.8.2-19ubuntu1) 4.8.2
....
Установите библиотеки разработки GNUStep (эквивалент Cocoa на macosx):
sudo apt-get install gnustep-devel
Он должен работать и компилироваться с помощью:
gcc HelloWorld.m `gnustep-config --objc-flags` `gnustep-config --base-libs` -o HelloWorld
:
./HelloWorld
Вам не хватает имени исполняемого файла. Итак, команда должна выглядеть так:
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.
gcc -o hello hello.m
должен создать исполняемый файл цели c, если установлен компилятор. Если нет, установите его:
sudo apt-get install gobjc