如何包含openssl / md5库的目标文件?

时间:2014-02-22 12:35:11

标签: c unix

我已将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,最好的方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:4)

查看适用于您平台的文档。它可能是-lcrypto -lssl。它可能不是。如果您的平台支持pkg-config,请使用pkg-config --libs openssl