Как мне скомпилировать target-C в блоках кода? - PullRequest
0 голосов
/ 11 ноября 2018

Я скачал Codeblocks в комплекте с GCC отсюда

C часть работает нормально

Я прочитал вики-урок , в котором говорится, что наличие GCC позволит мне скомпилировать цель C, просто добавив -lobjc к опциям компилятора

Однако я выполнил шаги, упомянутые в этом руководстве, и добавил опцию -lobjc, но она не компилируется

enter image description here

Это сообщение об ошибке сборки, которое я получаю в кодовых блоках:

-------------- Build: Debug in test_prog_proj (compiler: GNU GCC Obj-C Compiler)---------------

mingw32-gcc.exe -Wall -g  -c D:\backup\cb_files\objc_files\test_prog_proj\test_prog.m -o obj\Debug\test_prog.o
mingw32-gcc.exe: error: CreateProcess: No such file or directory
Process terminated with status 1 (0 minute(s), 2 second(s))
1 error(s), 0 warning(s) (0 minute(s), 2 second(s))

Как показано выше, он не показывает опцию -lobjc

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

mingw32-gcc.exe -Wall -g  -c D:\backup\cb_files\objc_files\test_prog_proj\test_prog.m -o obj\Debug\test_prog.o -lobjc 

Но я получаю ту же ошибку в cmd

mingw32-gcc.exe: error: CreateProcess: No such file or directory  

я тоже пробовал

gcc -g -fgnu-runtime -O -c some_class.m  

что я получил отсюда , но это выдает мне ту же ошибку CreateProcess. Как начать компилировать код Objective C в Windows (желательно с использованием GCC и Codeblocks)?

--- EDIT 1 ---

Я сделал так, как предложил в ответе Майка Кингхана ниже, и удалил мое старое инстагляционное кодблоки, затем переустановил MinGW и кодовые блоки отдельно. Удаление Codeblocks удалило папку Codeblocks в Program Files, но когда я снова переустановил Codeblocks (версия без MinGW, связанная вместе), настройки «GNU GCC Obj-C», которые я сделал в предыдущей установке, все еще были там, вместе с флагом -lobjc на вкладке «Настройки компоновщика».

Однако проблема в том, что он все еще не работает. Я получаю следующую ошибку, если пытаюсь собрать кодовые блоки

Goto "Settings->Compiler...->Global compiler settings->GNU GCC Obj-C Compiler->Toolchain executables" and fix the compiler's setup.

Tried to run compiler executable 'C:\Program Files\CodeBlocks\MinGW/bin/mingw32-gcc.exe', but failed!

Skipping... Nothing to be done (all items are up-to-date).  

Вот как Toolchains executable выглядит:

enter image description here

Если я попытаюсь скомпилировать его из cmd, зайдя в папку с файлом .m и введя команду

mingw32-gcc.exe -Wall -g  -c D:\backup\cb_files\objc_files\test_prog_proj\test_prog.m -o obj\Debug\test_prog.o -lobjc  

выдает ошибку

mingw32-gcc.exe: error: CreateProcess: No such file or directory    

В чем здесь проблема?

--- EDIT 2 ---

Следуя предложению в ответе Майка Кингхана, я удалил старый экземпляр «GNU GCC Obj-C Compiler» из списка компиляторов и воссоздал с текущей версией «GNU GCC Compiler»

Однако программа по-прежнему не работает. Это сообщение, которое я получаю в журнале сборки:

-------------- Build: Debug in test_prog_proj (compiler: GNU GCC Obj-C Compiler)---------------

Linking stage skipped (build target has no object files to link)
Nothing to be done (all items are up-to-date).  

Очистка проекта, а затем его сборка выдает то же сообщение. Попытка запустить проект в любом случае дает мне диалоговое окно, в котором говорится, что проект не построен, и, нажав «Да», чтобы построить проект, просто снова появляется то же диалоговое окно «проект еще не построен». Значки файлов в дереве рабочей области вкладки "Проекты" также отображаются серым цветом:

enter image description here

Вот как выглядит исполняемый файл Toolchain:

enter image description here

Я добавил -lobjc в настройках компоновщика как , упомянутый здесь .

Я щелкнул правой кнопкой мыши значок проекта в дереве проекта, зашел в Параметры сборки и добавил -lobjc в настройках компоновщика:

enter image description here

В чем проблема с этим проектом на данный момент?

--- РЕДАКТИРОВАТЬ 3 ---

В итоге я полностью удалил Codeblocks (удалить из меню «Пуск» Windows, удалить папку codeblocks в% APPDATA%), удалить MinGW (удаление папки c: \ MinGW) и переустановить все с нуля. Я следовал всем инструкциям в вики (кроме раздела Устранение неполадок , но я думаю, что эта часть не имеет значения), и он все еще не работает (та же проблема, что описана в Редактировать 2 в этом посте).

Как получить кодовые блоки для обнаружения и компиляции кода obj-C? Кроме того, он не показывает мне аргументы командной строки компилятора, когда я пытаюсь построить его из интерфейса Codeblocks. Почему это так и как я могу заставить его показать мне какую бы командную строку он ни использовал?

1 Ответ

0 голосов
/ 11 ноября 2018

Программа GCC, которую мы свободно называем «компилятором» - [mingw32-](gcc|g++) - на самом деле это интерфейс компилятора / компоновщика, который вызывает язык real компилятор и / или компоновщик в зависимости от того, какие входные файлы и параметры командной строки указать, что вы хотите это сделать.

Входные файлы с расширением .m указывают, что они являются исходными файлами Objective C которые должны быть скомпилированы с помощью компилятора GNU Objective C, cc1obj. Но ты не поняла Отсюда и неудача, которую вы видите.

Установка GCC будет включать в себя компилятор C cc1 и, опционально, компиляторы для других языков - C ++, Fortran, Objective (C | C ++), Go ... Вы говорите, что установили MinGW GCC как в комплекте с Code :: Blocks. В этом MinGW отсутствует компилятор Objective C cc1obj, потому что сопровождающие считай это нишевым языком.

Лучше удалите установку CB и связанный MinGW, а затем установите MinGW GCC независимо из один из конкурирующих проектов: -

https://sourceforge.net/projects/mingw-w64/
https://sourceforge.net/projects/mingw/

Запустите установщик и убедитесь, что вы получаете Objective C, а также любые другие компиляторы, которые вы хочу.

После этого замените установку CB на установщик codeblocks-17.12-setup.exe ( не codeblocks-17.12mingw-setup.exe), от https://sourceforge.net/projects/codeblocks/files/Binaries/17.12/Windows/. Этот установщик включает в себя no компиляторы и автоматически обнаружит установку MinGW.

Затем продолжите, как вы уже сделали, для создания настройки компилятора GNU GCC Obj-C в CB IDE.

Позже ... все еще не работает

Ваша GNU GCC Obj-C установка компилятора сохранилась из вашей предыдущей CB установить и был устаревшим из-за того, что ваш новая установка MinGW больше не является частью Code :: Blocks. Как вы видите, он по-прежнему ищет исполняемые файлы набора инструментов в C:\Program Files\Codeblocks\MinGW, тогда как ваш новый MinGW где-то еще.

Когда вы переустанавливали Code :: Blocks, вы должны были увидеть его попытку автоматического определения компиляторов, и что он обнаружил ваш набор инструментов MinGW в (скажем) C:\MinGW. Это настроило настройка компилятора для GNU GCC Compiler на этой основе с правильным путем к исполняемые файлы цепочки инструментов. Но он не изменит какие-либо постоянные настройки компилятора, которые вы создали сами, например GNU GCC Obj-C .

Сначала убедитесь, что автоматически определенная настройка GNU GCC Compiler хороша просто создав консольный проект «Hello world» и увидев, что вы можете его построить. Я предполагаю, что вы сможете, но если нет, то перейдите в настройку GNU GCC Compiler самостоятельно и вручную установите каталог установки компилятора правильно.

Затем установите тот же Каталог установки компилятора для вашего GNU GCC Obj-C настройка компилятора.

...