【发布时间】:2013-12-29 22:42:18
【问题描述】:
我有一个程序在 centos4.8 上编译并运行。我已将cryptopp 5.6.2 下载并编译到一个静态库中。运行测试程序时,我在调用
时遇到分段错误CTR_Mode< AES >::Encryption e;
e.SetKeyWithIV( key, key.size(), ctr ); // segmentation fault here
我可以在一个小程序中重新创建它。如果我与 libpthread.a 链接,则会出现错误,如果我不与它链接,程序会按预期运行。
我的应用程序依赖于与 pthread 的链接,所以我希望找到一种方法来编译兼容的 cryptopp。 谢谢
【问题讨论】:
-
假设您使用的是 g++,您是像
g++ <code> -o <output> -pthread那样链接还是使用-lpthread?您应该使用不带“l”的-pthread。 -
这是我的编译批处理 g++ -g -o testcrypto \ testmod.c \ -lstdc++ -lcryptopp -static -pthread
-
更多信息...在制作cryptopp库时,我运行make static test。如果我运行 aes ctr test "cryptest.exe ae 00000000000000000000000000000000 0000000000000000000000000000000000 myfile.txt myfile.encrypted" 没有分段错误
-
附加信息...如果我删除 -static 则测试程序编译并运行正常。将在我们的完整应用程序中调查对此的需求
-
更多信息...如果我强制 #define CRYPTOPP_DISABLE_UNCAUGHT_EXCEPTION 一切似乎都正常