未定义的符号_EVP_PKEY_CTX_new_id

时间:2015-12-31 17:17:35

标签: c++ macos openssl clang

我有这个不能在OS X上编译的C ++代码:

#include <iostream>
#include <openssl/evp.h>

int main(int argc,char *argv[]){
        EVP_PKEY_CTX *pctx;
        pctx = EVP_PKEY_CTX_new_id(EVP_PKEY_EC, NULL);
        return 0;
}

在链接中我收到此错误:

Undefined symbols for architecture x86_64:
  "_EVP_PKEY_CTX_new_id", referenced from:
      _main in test-a22ea1.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

编译:

g++ test.cpp -o test -lssl -lcrypto

OpenSSl doc,说应该定义: https://www.openssl.org/docs/manmaster/crypto/EVP_PKEY_CTX_new.html

此代码在Linux(Debian 7 with OpenSSL 1.0.1e)上运行良好。但不是OS X.有什么建议吗?

我的配置:

  • OS X:10.11.2
  • clang:Apple LLVM 7.0.2版(clang-700.1.81)
  • openSSL:OpenSSL 1.0.2e 2015年12月3日(随Homebrew一起安装)

感谢新年快乐:)

1 个答案:

答案 0 :(得分:1)

链接器是否可能选择已安装在系统上的另一版本的sslcrypto库文件?尝试添加-L开关以及自制软件安装文件的路径。