为什么我用gcc -static链接得到未定义的引用错误

时间:2011-12-19 17:00:17

标签: eclipse gcc static libpcap libssl

我正在尝试静态编译libpcap和libssl(使用-static)并且链接器会给我这些错误:

more undefined references to `ASN1_const_check_infinite_end' follow myprogram       line 0, external location: /lib64/libssl.a(ssl_asn1.o)  
more undefined references to `BIO_test_flags' follow    myprogram   line 0, external location: /lib64/libssl.a(ssl_lib.o)   
------------------------truncated for brevity----------------------------------

我正在使用ubuntu 11.4 i686_64和libssl.a上的nm结果与greping BIO_test_flags,是:U BIO_test_flags 这意味着该符号是未定义的符号,所有未定义的符号都处于相同的状态。

如何解决此链接问题? (欢迎任何想法或方法) [请注意,静态编译对我来说是必须的]

1 个答案:

答案 0 :(得分:0)

据推测,缺少一个静态库。也许你可以通过观察来判断哪一个,但如果没有,这里有几种方法可以解决这个问题:

-t添加到您的链接命令,看看是否有帮助。

尝试strace链接命令(请注意gcc调用链接器作为子进程,因此您需要关注分支)并查看它找不到的库文件以及它在哪里查找对他们来说。