【发布时间】:2011-08-01 09:15:56
【问题描述】:
我正在实现一个 OpenSSL 代码,并且已经包含了所需的头文件,但我仍然收到 *
之类的错误对
SSL_library_init的未定义引用
我猜这是链接错误而不是编译错误。
我正在使用 slickeditor 在 Linux 机器中实现它。
【问题讨论】:
-
你是如何调用链接器的?您是否指示它链接到 OpenSSL 库,例如使用
-lcrypto用于 gcc? -
不。我得到的机器已经有openssl。当我执行 which openssl 时,它显示的路径类似于 /usr/bin/openssl。所以我做的下一步是在我现有的代码中包含头文件,然后在 slickeditor 属性中我尝试包含 -llibeay32 和 -lssleay32。但没有快乐
-
OpenSSL 库称为 libcrypto。使用 -lcrypto 链接到它。我对 SlickEdit 一无所知。它是在为您调用编译器和链接器,是在 makefile 中完成的,还是在命令行中完成的?您需要以某种方式告诉链接器链接到 libcrypto。对于在命令行上调用 gcc,这意味着添加选项
-lcrypto。 -
抱歉,
SSL_library_init在 libssl 中,因此链接选项将是-lssl。ldd $(which openssl)将向您展示您的 openssl 是如何链接的以及这些库在哪里。如果它仍然不起作用,则该目录可能不在链接器的路径上。您可以使用-Lpath添加该路径,例如-L/lib/ -
你应该得到一个在命令行上工作的最小测试用例。
#include "whatever" \n int main(void) { SSL_library_init(blah, blah, blah); return 0; },然后是g++ my_minimal_test_case.c++ -lssl。如果这可行,那么您不了解您的编辑器/IDE。如果没有,那么您有一些配置问题。
标签: c openssl undefined-reference