GCC 4.6和图书馆链接

时间:2013-03-13 11:08:58

标签: c++ linux qt gcc compiler-construction

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

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

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的更新导致头痛。

0 个答案:

没有答案