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

Итак, у меня есть базовый сценарий «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.

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

helloworld.m

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

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

Я провел некоторое исследование и заметил, что ответы на это уже помогают мне запустить скрипт 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
1
задан 13 April 2016 в 14:54

3 ответа

В 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
6
ответ дан 24 May 2018 в 19:22

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

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.

2
ответ дан 24 May 2018 в 19:22
  • 1
    Это имеет смысл, однако это не сработало. Я не совсем понимаю, к чему это призывает, я понимаю, что GCC - это мой компилятор / программа, которую я использую для запуска моего кода в termianl, но в каком каталоге есть «-o " вызов и почему "привет" необходимо до helloworld.m, когда он нигде в моем файле или не связан с ним. И хотя требуемое имя исполняемого файла имеет смысл, на самом деле у меня его нет. Это всего лишь текстовый файл, введенный в gedit, сохраненный в формате объектива-c. Я попытаюсь обновить свой вопрос, чтобы описать мою проблему, чтобы увидеть, дает ли это лучший результат. – Casey 7 August 2013 в 01:36
  • 2
    man gcc выводит страницы руководства для gcc. Я предлагаю вам прочитать. "-офобар" просто выдает файл с именем foobar, а не по умолчанию, который является a.out. – ubfan1 7 August 2013 в 02:41
gcc -o hello hello.m

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

sudo apt-get install gobjc
0
ответ дан 24 May 2018 в 19:22
  • 1
    Результатом запуска первой команды, которую я настроил для использования правильного имени файла моего проекта, закончилось этим результатом: gcc: фатальная ошибка: компиляция входных файлов не завершена. Я также проверил, был ли установлен gobjc, выполнив вторую команду, и она фактически установлена. Я что-то пропустил? – Casey 5 August 2013 в 06:45
  • 2
    Похоже, вы использовали неправильное имя файла. Правильно ли вы получили дело и не имеете каких-либо неприятных вещей, таких как пробелы в названии? – ubfan1 5 August 2013 в 09:55
  • 3
    я сначала использовал вашу точную команду, но потом понял, что имя моего файла не hello.m, поэтому я ввел это точно: " gcc -o helloworld.m " Тем не менее, мой файл находится в моих документах, я чувствую, что есть строка, которую мне не хватает, чтобы помочь найти файл в моих документах. Я просто не знаю, что это за команда. – Casey 7 August 2013 в 00:57

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

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