2016-09-29 188 views
0

嘗試將升級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

回答

2

這個方法調用包裝用「的#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的頂部添加一個函數原型以避免將來出現問題(以後的代碼更改)。 –