未定义的对'SHA1'的引用

我尝试在Linux上编译一个库。 这个库文件使用<openssl/sha.h>库。 我已经将这个库包含在源文件中。 之后,我用flag -lssl和flag -lcrypto来编译这个项目。 所以这里是我的命令:

gcc -g -Wall -lssl -lcrypto -o bt_client file_a.c file_b.c

但是我遇到错误:

 undefined reference to `SHA1' at line 130 

130行代码是:

 SHA1((unsigned char *) null_padded_name, 20, (unsigned char *)name_sha1); 

我想念什么? 请纠正我 谢谢 :)

链接应用程序时,链接程序按命令行上的顺序查找依赖关系。

因此,如果在依赖于该库的源/目标文件之前添加一个库(如-lssl ),链接程序将不会找到任何依赖关系并忽略该库。

这意味着您必须始终将库放在命令行上。

尝试这个:

 gcc -g -Wall -o bt_client file_a.c file_b.c -lssl -lcrypto 

如果您确定符号SHA1存在于libssl.solibcrypto.so

您需要在命令行末尾提供-lssl和-lcrypto:

 gcc -g -Wall -o bt_client file_a.c file_b.c -lssl -lcrypto