我尝试在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
Run Code Online (Sandbox Code Playgroud)
第130行的代码是:
SHA1((unsigned char *) null_padded_name, 20, (unsigned char *)name_sha1);
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?请指正.谢谢 :)
试试这个:
gcc -g -Wall -o bt_client file_a.c file_b.c -lssl -lcrypto
Run Code Online (Sandbox Code Playgroud)
如果您确定符号SHA1存在于libssl.so或中libcrypto.so.
当您链接应用程序时,链接器会按照您在命令行中提供的顺序查找依赖项。
因此,如果-lssl在依赖于该库的源/目标文件之前添加一个库(如),链接器将找不到任何依赖项并忽略该库。
这意味着您必须始终将库放在命令行的最后。
您需要在命令行末尾提供-lssl和-lcrypto:
gcc -g -Wall -o bt_client file_a.c file_b.c -lssl -lcrypto
Run Code Online (Sandbox Code Playgroud)