错误:函数'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); 
+0

请说明如何配置库。也就是说,配置线是什么,配置输出是什么。一个问题也可能有帮助,所以我们提供一个答案,你有什么问题。 – jww

+0

能够通过向CFLAG添加-Wno-error =隐式函数声明来解决此问题。 –

+0

我相当确定不会解决问题。我相信你只是简单地解决了这个问题。 – jww

这个方法调用包装用“的#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的顶部添加一个函数原型以避免将来出现问题(以后的代码更改)。 –