【发布时间】:2014-01-05 09:21:54
【问题描述】:
我正在为一个项目使用 Code::Blocks。我已经好几年没在 Linux 上使用过 IDE了,所以我对 Linux IDE 有点脱节。
我正在处理一个使用 FIPS 验证库的 OpenSSL 项目。我复制了 GCC 编译器工具链并将其修改为使用 OpenSSL 的 fipsld(并将其设置为默认值)。
当项目的代码通过 F8 在 Code::Blocks 下执行时,FIPS_mode_set 失败并出现错误 252104805 (0xF06D065)。 0xF06D065 是:
$ openssl errstr 0xF06D065
error:0F06D065:common libcrypto routines:FIPS_mode_set:fips mode not supported
这告诉我 Code::Blocks 没有使用我在 /usr/local/ssl/lib 中指定的 OpenSSL。相反,该程序正在使用 Debian 在/usr/lib/x86_64-linux-gnu/ 中提供的非 FIPS 库。
链接库设置的图像如下。请注意,库是完全指定的,没有任何机会。
CodeBlocks 显然正在使用 LD_LIBRARY_PATH(如下所示)。
我还验证了该项目使用了正确的搜索目录 - /usr/local/ssl/include 用于标头,/usr/local/ssl/lib 用于链接器。
将编译器日志记录设置为“完整命令行”设置,这是我从构建日志中得到的:
-------------- Build: Debug in ac ---------------
Compiling: main.cpp
/home/jwalton/Desktop/ac/main.cpp:8:5: warning: unused parameter ‘argc’ [-Wunused-parameter]
/home/jwalton/Desktop/ac/main.cpp:8:5: warning: unused parameter ‘argv’ [-Wunused-parameter]
Linking console executable: bin/Debug/ac
Output size is 569.67 KB
Process terminated with status 0 (0 minutes, 0 seconds)
0 errors, 2 warnings
我知道 Basile Starynkevitch 对 rpath 和 LD_PRELOAD 技巧的建议,但这似乎是 IDE 应该为我处理的事情之一(Visual Studio 会正确处理它,甚至给我们set Working Directories to find additional libraries 的输入框。
在调试器下执行程序时,任何想法如何使 Code::Blocks 使用/usr/local/ssl/lib 中的共享对象?
【问题讨论】:
-
请从 CodeBlocks 发布完整的构建日志。为此设置“显示完整命令行”选项:forums.codeblocks.org/index.php?topic=662.0
-
Alex - 谢谢,已添加。
标签: c linux dll shared-libraries codeblocks