我尝试在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);
我错过了什么吗?请指正。谢谢:))
答案 0 :(得分:8)
试试这个:
gcc -g -Wall -o bt_client file_a.c file_b.c -lssl -lcrypto
如果您确定SHA1
或libssl.so
中存在符号libcrypto.so
。
答案 1 :(得分:5)
您需要在命令行末尾提供-lssl和-lcrypto:
gcc -g -Wall -o bt_client file_a.c file_b.c -lssl -lcrypto
答案 2 :(得分:4)
链接应用程序时,链接器会按照您在命令行上提供的顺序查找依赖项。
因此,如果在依赖于该库的源/目标文件之前添加库(如-lssl
),链接器将找不到任何依赖项并忽略该库。
这意味着您必须始终将库放在命令行上。