在行的未定义引用`SHA1'

时间:2014-04-10 12:38:13

标签: c linux gcc

我尝试在linux上编译库。这个库使用<openssl/sha.h>库。我已将此库包含在源文件中。之后,我使用标记-lssl和标记-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);

我错过了什么吗?请指正。谢谢:))

3 个答案:

答案 0 :(得分:8)

试试这个:

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

如果您确定SHA1libssl.so中存在符号libcrypto.so

答案 1 :(得分:5)

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

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

答案 2 :(得分:4)

链接应用程序时,链接器会按照您在命令行上提供的顺序查找依赖项。

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

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