我已将openssl / md5.h包含在我的源代码中。
#include <openssl/md5.h>
这是我(部分)我的代码:
char *pf_generate_pfdhr_string(int firstfree, int numpages)
{
const int md5_digest_len = 16;
char hash[md5_digest_len];
MD5_CTX md5_ctx;
MD5_Init(&md5_ctx);
int hdr_arr[2] = {firstfree, numpages};
MD5_Update(&md5_ctx, hdr_arr, 2*sizeof(int));
MD5_Final(hash, &md5_ctx);
return hash;
}
这是我的输出
ranlib build/libpf.a
cc -g -O2 -Wall -Wextra -Isrc -rdynamic tests/pf_tests.c build/libpf.a -o tests/pf_tests
Undefined symbols for architecture x86_64:
"_MD5_Final", referenced from:
_pf_generate_pfdhr_string in libpf.a(pf.o)
"_MD5_Init", referenced from:
_pf_generate_pfdhr_string in libpf.a(pf.o)
"_MD5_Update", referenced from:
_pf_generate_pfdhr_string in libpf.a(pf.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [tests/pf_tests] Error 1
我已经包含了头文件,因此编译器知道该函数存在。但是,它似乎无法找到md5库的目标文件。如何将其包含在我的构建中?
如果我使用Make,最好的方法是什么?
谢谢。
答案 0 :(得分:4)
查看适用于您平台的文档。它可能是-lcrypto -lssl
。它可能不是。如果您的平台支持pkg-config
,请使用pkg-config --libs openssl
。