0

这有点学术性,因为我已经解决了它(我认为!),但好奇是否有人知道它为什么会发生。

我正在开发一个已经开发了几年的项目,我们有几个我们依赖的库,例如:

myencryption.so
|
 ----- #include <openssl/sha.h>

mymainapp
|
----- LIBS += -lmyencryption -lssl -lcrypto

当它失败时,它会失败并显示如下消息:

../../bin/libbcencryption.so: undefined reference to `SHA256_Update'
../../bin/libbcencryption.so: undefined reference to `SHA256_Final'
../../bin/libbcencryption.so: undefined reference to `SHA256_Init'

过去可以正常工作和构建,现在我们正在向前推进我们的平台,并且 GCC 4.6 是可用的最新版本,它会导致以这种方式链接库的重大构建问题,但只有当库与二进制文件链接时。现在让构建工作它的结构:

myencryption.so
|
 ----- #include <openssl/sha.h>
 ----- LIBS += -lssl -lcrypto

哪个工作正常。还需要其他东西,例如对以前编译中从未需要的 Qt 库的引用。

但是,我在 GCC 发行说明中找不到对此类更改的任何参考,因此我非常好奇是否有人知道它是否更改或是否涉及其他因素,因此这是一个基于 Qt 的项目,它是从基础迁移而来的Ubuntu 11.04 到 12.10 平台,GCC 版本从 4.5.2 到 4.6.3。除了在 Ubuntu 中进行的任何升级之外,构建过程中的任何内容都没有改变。

编辑:看起来评论中引用的答案接近于解释问题,并更新了ld导致头痛的问题。

4

0 回答 0