这有点学术性,因为我已经解决了(我想!),但好奇是否有人知道为什么它发生了。
我正在开发一个已经开发了几年的项目,我们有几个我们依赖的库,例如:
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
的更新导致头痛。