我下载了与GCC from here捆绑在一起的代码块
C部分运行正常
我读过这个wiki tutorial,它说拥有GCC将使我可以通过仅向编译器选项中添加-lobjc来编译目标C
但是,我已按照本教程中提到的步骤进行操作,并添加了-lobjc选项,但该选项无法编译
这是我在代码块中看到的构建错误消息:
-------------- 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选项
我还尝试通过进入包含.m文件的文件夹在Windows cmd中手动编译上述程序。我给出了以下命令:
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
我得到了from here,但这给了我同样的CreateProcess错误。如何开始在Windows中(最好使用GCC和代码块)编译Objective C代码?
---编辑1 ---
我按照下面的suggested in Mike Kinghan's answer进行操作,并卸载了较旧的Codeblock集成,然后分别重新安装了MinGW和Codeblock。 Codeblocks卸载删除了Program Files中的Codeblocks文件夹,但是当我再次重新安装Codeblocks(没有将MinGW捆绑在一起的版本)时,我在上一次安装中所做的“ GNU GCC Obj-C”设置仍然存在,并且带有-lobjc标志在“链接器设置”标签中。
但是,问题在于它仍然无法正常工作。如果我尝试从Codeblocks进行构建,则会收到以下错误
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
如下所示:
如果我尝试通过使用.m文件进入文件夹并发出命令
从cmd进行编译,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
这是什么问题?
---编辑2 ---
按照Mike Kinghan的回答,我在编译器列表中删除了“ GNU GCC Obj-C编译器”的旧实例,并使用“ GNU GCC编译器”的当前版本进行了重新创建
但是,该程序仍然无法运行。这是我在构建日志中得到的消息:
-------------- 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).
清理项目,然后再次构建它,将得到相同的消息。无论如何,尝试运行该项目都会给我一个对话框,提示该项目尚未构建,然后单击“是”来构建该项目,只是再次弹出相同的“尚未构建的项目”对话框。 “项目”选项卡的“工作区”树中的文件图标似乎也显示为灰色:
这是可执行工具链的外观:
我也在链接器设置中将-lobjc
也添加为mentioned here。
我右键单击“项目”树中的项目图标,转到“构建选项”,并在“链接器设置”中也添加了-lobjc:
此项目目前有什么问题?
---编辑3 ---
我最终完全卸载了Codeblock(从Windows的“开始”菜单中卸载,删除了%APPDATA%中的codeblocks文件夹),卸载了MinGW(删除了c:\ MinGW文件夹),然后重新安装了所有内容。我按照the Wiki中的所有说明进行操作(Troubleshooting部分除外,但我认为该部分无关紧要),但仍然不起作用(与 Edit 2 中描述的问题相同) >在本文中)。
如何获取代码块来检测和编译obj-C代码?另外,当我尝试从Codeblocks界面构建编译器命令行参数时,它没有显示。为什么会这样,如何获得显示的完整命令行信息?
答案 0 :(得分:2)
我们将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以及任何其他编译器 想要。
然后,用codeblocks-17.12-setup.exe
安装程序(不是 codeblocks-17.12mingw-setup.exe
)替换您的CB安装,
来自https://sourceforge.net/projects/codeblocks/files/Binaries/17.12/Windows/
。此安装程序包括 no 编译器和
将自动检测您的MinGW安装。
然后像在CB IDE中创建GNU GCC Obj-C编译器设置一样进行操作。
稍后...仍然无法正常工作
您的 GNU GCC Obj-C 编译器设置与以前的版本相同
CB安装,并且由于您的
新的MinGW安装不再是Code :: Blocks的一部分。如你所见,
仍会在C:\Program Files\Codeblocks\MinGW
中寻找工具链可执行文件,
而您的新MinGW在其他地方。
当您重新安装Code :: Blocks时,您应该已经看到了它自动检测编译器的尝试,
并且它在C:\MinGW
中检测到您的MinGW工具链。它将已经配置
GNU GCC编译器的编译器设置,并以正确的路径
工具链可执行文件。但是它不会修改任何持久的编译器设置,
您创建了自己,例如 GNU GCC Obj-C 。
首先检查自动检测到的设置 GNU GCC编译器是否正确 通过创建“ Hello world” C控制台项目并看到可以构建它。 我认为您可以,但如果不能,请进入 GNU GCC编译器设置 自己,并手动正确设置编译器的安装目录。
然后,为您的 GNU GCC Obj-C 设置相同的编译器安装目录。 编译器设置。