错误:函数'FIPS_crypto_set_id_callback'的隐式声明
问题描述:
尝试将升级OpenSSL从版本1.0.2h集成到1.0.2j时出现以下错误。错误:函数'FIPS_crypto_set_id_callback'的隐式声明
o_init.c:77:5: error: implicit declaration of function 'FIPS_crypto_set_id_callback' is
invalid in C99 [-Werror,-Wimplicit-function-declaration]
FIPS_crypto_set_id_callback(CRYPTO_thread_id);
答
这个方法调用包装用“的#ifndef OPENSSL_NO_DEPRECATED”,它看起来像代码已经从1.1.0分支后移植。
1.1.0的更改历史意味着他们一直在更改代码以改进OpenSSL API级别的管理。你可以尝试在你的“configure”参数中加入“no-deprecated”,但是我很疑惑,因为它看起来是一个1.1.0配置选项。或者修补源代码以删除新的3行代码,因为您之前的版本无论如何都不会调用弃用的方法。
--- a/crypto/o_init.c
+++ b/crypto/o_init.c
@@ -73,9 +73,6 @@
done = 1;
#ifdef OPENSSL_FIPS
FIPS_set_locking_callbacks(CRYPTO_lock, CRYPTO_add_lock);
-# ifndef OPENSSL_NO_DEPRECATED
- FIPS_crypto_set_id_callback(CRYPTO_thread_id);
-# endif
FIPS_set_error_callbacks(ERR_put_error, ERR_add_error_vdata);
FIPS_set_malloc_callbacks(CRYPTO_malloc, CRYPTO_free);
RAND_init_fips();
+0
我刚才指出这是我添加回调的原因。 [链接](https://groups.google.com/forum/#!msg/mailing.openssl.dev/rLNlxFW0AhE/wHm3oBROBQAJ)。所以请注意,它可能取决于您正在使用的FIPS模块,并且最好在o_init.c的顶部添加一个函数原型以避免将来出现问题(以后的代码更改)。 –
请说明如何配置库。也就是说,配置线是什么,配置输出是什么。一个问题也可能有帮助,所以我们提供一个答案,你有什么问题。 – jww
能够通过向CFLAG添加-Wno-error =隐式函数声明来解决此问题。 –
我相当确定不会解决问题。我相信你只是简单地解决了这个问题。 – jww