为什么在链接 OpenSSL 时会出现“未定义引用”错误?

ein*_*lex 7 gcc openssl

我的编译过程引发了类似的错误

..undefined reference to `BN_cmp'
Run Code Online (Sandbox Code Playgroud)

虽然我包括 <openssl/bn.h>

并运行 gcc -lssl -lcrypto test.c -o test

有人可以帮忙吗?(openssl libssl1.0.0, libssl-dev 已安装)

ish*_*ish 14

解决方案就像-l最后添加标志一样简单:

gcc test.c -o test -lssl -lcrypto
Run Code Online (Sandbox Code Playgroud)

顺序很重要,因为默认情况下ld使用-as-neededswitch调用 Ubuntu 11.04 ,因此依赖于其他库的文件/库必须在这些其他库之前,即test.c需要libcrypto,所以它必须在-lcrypto.

有关更多信息,请参阅Natty Narwhal 中的工具链转换