我有这个不能在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.有什么建议吗?
我的配置:
感谢新年快乐:)
答案 0 :(得分:1)
链接器是否可能选择已安装在系统上的另一版本的ssl
和crypto
库文件?尝试添加-L开关以及自制软件安装文件的路径。