![为什么链接 OpenSSL 时会出现“未定义引用”错误?](https://linux22.com/image/963334/%E4%B8%BA%E4%BB%80%E4%B9%88%E9%93%BE%E6%8E%A5%20OpenSSL%20%E6%97%B6%E4%BC%9A%E5%87%BA%E7%8E%B0%E2%80%9C%E6%9C%AA%E5%AE%9A%E4%B9%89%E5%BC%95%E7%94%A8%E2%80%9D%E9%94%99%E8%AF%AF%EF%BC%9F.png)
我的编译过程会出现如下错误
..undefined reference to `BN_cmp'
尽管我包括<openssl/bn.h>
然后运行
gcc -lssl -lcrypto test.c -o test
有人可以帮忙吗?(openssl libssl1.0.0,libssl-dev 已安装)
答案1
解决方案很简单,只需-l
在结尾:
gcc test.c -o test -lssl -lcrypto
顺序很重要,因为ld
Ubuntu 11.04 默认使用-as-needed
开关调用,所以依赖于其他库的文件/库必须在这些其他库之前,即test.c
需要libcrypto
,所以它必须在之前-lcrypto
。
有关详细信息,请参阅For more information, seeNatty Narwhal 中的工具链转换。