Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Compiler construction &引用&书信电报;项目>;-“调试”;使用无效的编译器。编译器选项中的工具链路径可能未正确设置?_Compiler Construction_Path_Linker_Codeblocks_Toolchain - Fatal编程技术网

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}}