Compiler construction &引用&书信电报;项目>;-“调试”;使用无效的编译器。编译器选项中的工具链路径可能未正确设置?
我在为非标准编译器设置代码块时遇到问题。我已经挣扎了三四天了(断断续续)。我收到错误信息:Compiler construction &引用&书信电报;项目>;-“调试”;使用无效的编译器。编译器选项中的工具链路径可能未正确设置?,compiler-construction,path,linker,codeblocks,toolchain,Compiler Construction,Path,Linker,Codeblocks,Toolchain,我在为非标准编译器设置代码块时遇到问题。我已经挣扎了三四天了(断断续续)。我收到错误信息: "<project> - Debug" uses an invalid compiler. Probably the toolchain path within the compiler options is not setup correctly?! fipsld将编译fips\u premain.c并执行一些魔术,以确保模块的签名嵌入到生成的可执行文件中。如果不需要fipsld,那么它只
"<project> - Debug" uses an invalid compiler. Probably the toolchain path
within the compiler options is not setup correctly?!
fipsld
将编译fips\u premain.c
并执行一些魔术,以确保模块的签名嵌入到生成的可执行文件中。如果不需要fipsld
,那么它只需调用CC
(因此需要设置原因fipsld\u CC
(另请参见Mike对循环依赖关系的评论))
我已经用makefiles在命令行中这样做了一千次,所以我知道它是有效的
环境
在设置->环境下,我有以下内容:
编译器和调试器
在“设置->编译器和调试器”下,我有以下内容:
以及:
项目
该项目使用FIPSLD编译器:
但当我尝试构建时,我得到了以下结果:
我还尝试将编译器设置为完整的指定路径/usr/local/ssl/fips-2.0/bin/fipsld
(我关闭/打开代码块的次数太多,无法计数,并且多次清理此项目以尝试重新读取配置设置)
问题
如何在代码块中将编译器设置为/usr/local/ssl/fips-2.0/bin/fipsld
和相关:我已经在/usr/local/bin
中安装了gdb-7.6.2
。但是CodeBlocks使用Debian附带的gdb-7.4
,尽管我也为调试器指定了路径(这是usr/local
到/usr/local/bin/gdb
的路径)。你知道这里怎么了吗
为完整起见,这与。在这个SO问题中,OP没有安装工具链。可以通过以下方式解决“无效编译器”难题(至少是这样的
对我来说)。我不知道这是否足以让你建立你的
项目
我假设fipsld
脚本在/usr/local/ssl/fips-2.0/bin/fipsld
中存在并且正确
- 在Code::Blocks IDE中,创建一个名为 选择GCC的副本。(看起来您已成功完成此操作)
- 在新编译器的设置中,单击“工具链可执行文件”选项卡,然后单击“生成”
以下新设置:
- 编译器的安装目录=
- 程序文件->C编译器=/usr/local/ssl/fips-2.0/bin/fipsld
- 编译器的安装目录=
- 保持所有其他编译器设置不变,并且
OK
- 确保Code::Blocks安装了环境变量编辑器插件 依照
- 在环境->环境变量中,添加环境变量 设置: CC=gcc
OK
。不要向设置中添加任何附加路径,除非
因为其他原因,我需要晚些时候再去
我现在能够用新的编译器构建C项目。代码::Blocks发出一个
生成时警告在配置的系统中找不到编译器可执行文件
搜索路径以查找
,但这是一个错误警报
屏幕截图中显示的环境设置:
CC = /usr/local/ssl/fips-2.0/bin/fipsld
FIPSLD_CC = /usr/bin/g++
因为fipsld
脚本的第一行是:
CC=${FIPSLD_CC:-${CC}}
因此,如果您进行了两个设置中的第一个设置,但没有进行第二个设置,那么脚本 将默认
$CC
为其自己的路径名-循环。如果你避免这样做
通过进行这两种设置,第一种设置对于代码::块是多余的:
它不需要引用的环境变量
/usr/local/ssl/fips-2.0/bin/fpsld
,因为您已配置
该脚本作为编译器。只有fipsld
本身需要$CC
,指的是
C编译器。因此,您不妨设置CC=gcc
,
主机C编译器CC=g++
可能适合您的目的,但按惯例
<代码> cc> /COD>指的是你的C编译器,C++编译器是由<代码> CXX/COD>引用的。
至于将/usr/local/bin/gdb配置为调用而不是/usr/bin/gdb的问题,
我只能说我正在运行的v12.11,但是对于12.11谢谢,迈克,我马上就到了。清除“编译器的安装目录”并使用“/usr/local/ssl/fips-2.0/bin/fipsld”就做到了。“如果你做了两个设置中的第一个,但没有做第二个,脚本将默认$CC到它自己的路径名-循环”-是的,如果你没有设置
fipsld\u CC
,那么它会产生很多问题(在那里,完成了…).
CC=${FIPSLD_CC:-${CC}}