OpenSSL 1.0.1f和“未定义的符号引用'SSL_state @@ OPENSSL_1.0.0”

时间:2017-01-09 15:26:56

标签: c++ linker openssl dpkg

今天早上我将OpenSSL版本更新为1.0.1f,同时编译我正在使用的项目,我从链接器收到了这个OpenSSL错误:

  

/ usr / bin / ld:janus-dtls.o:对符号'SSL_state @@ OPENSSL_1.0.0'的未定义引用   //lib/x86_64-linux-gnu/libssl.so.1.0.0:添加符号时出错:命令行中缺少DSO   collect2:错误:ld返回1退出状态

我去了互联网上寻找线索,我发现的唯一一件事是我需要用-lssl和-lcrypto编译项目。 但问题是我已经做了:

  

./ Makefile:598:JANUS_LIBS = -pthread -L / usr / local / lib -lnice -lgthread-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -ljansson -lssl -lcrypto -lsofia-sip-你好

所以我猜我会问DPKG也许是我伪造的东西。这是答案:

  

$ pkg-config --libs openssl

-L/usr/local/lib -lssl -lcrypto 

这正是我所做的。

有没有人遇到过这个错误并且修复了它?

或许我做错了什么我看不到?

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

符号请求在链接之前发出,因此lib的顺序是严格的。

如果LibA有符号,LibB需要该订单

gcc mod1.o mod2.o -lLibA -lLibB

仔细检查makefile中的所有库是否都缺失。