找不到openssl符号:x509_it

时间:2018-09-28 16:45:42

标签: openssl

在编译openssl 1.1.0i之前,我通过运行配置了构建:

# ./Configure linux-x86_64

openssl 1.1.0i编译没有明显问题,但在运行时我看到:

Error: LD: symbol not found: 'X509_it'

我在openssl源代码的CHANGES文件中找到了相关的注释:

  

新的编译选项ASN1_ITEM_FUNCTIONS。这会导致新的ASN1   模块以导出返回ASN1_ITEM指针的函数,而不是返回   ASN1_ITEM结构本身。这添加了几个新的宏   允许访问基本的ASN1功能/结构   透明地。结果,代码不应使用ASN1_ITEM引用   直接(例如&X509_it),而是使用相关的宏(例如   作为ASN1_ITEM_rptr(X509))。此选项是为了允许使用新的ASN1   导出结构有问题的平台上的代码(对于   共享库中的示例),但导出函数返回   指向结构的指针不是。

但是我没有在源代码中找到对ASN1_ITEM_FUNCTIONS的任何引用。然后,我检出了openssl git repo以跟踪该注释,并将当时的源代码与1.1.0i进行比较,发现ASN1_ITEM_FUNCTIONS编译选项似乎已被OPENSSL_EXPORT_VAR_AS_FUNCTION取代。在我生成的opensslconf.h中(如果找到):

#undef OPENSSL_EXPORT_VAR_AS_FUNCTION

我无法确定要给哪个选项。/配置自动使用该选项,所以我尝试将#undef更改为#define。可以编译,但仍然出现符号错误。

感觉就像我只是缺少./Configure的选项一样,我需要怎么做才能使缺失的符号得到整理?

0 个答案:

没有答案