openssl安裝:遇到問題及解決方法
gcc遇到的問題:
/usr/bin/ld: /tmp/ccaJXv8h.o: in function main': test_openssl.c:(.text+0xf): undefined reference to
OPENSSL_init_crypto'
collect2: 錯誤:ld 返回 1
/usr/bin/ld: /tmp/ccoMj648.o: undefined reference to symbol 'OPENSSL_init_crypto@@OPENSSL_1_1_0'
/usr/bin/ld: /usr/lib64/libcrypto.so.1.1: error adding symbols: DSO missing from command line
collect2: 錯誤:ld 返回 1
/usr/bin/ld: /tmp/cc45EJ1R.o: in function main': test_openssl.c:(.text+0xf): undefined reference to
OPENSSL_init_crypto'
collect2: 錯誤:ld 返回 1
gcc -o to test_openssl.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread
解決方案:
=======================================================================================================
gcc -o to test_openssl.c -I /usr/local/ssl/inlcude -L /usr/local/ssl/lib -lssl -lcrypto -ldl -lpthread
原因分析:
在鏈接這個庫的時候一定要注意2個問題:
1.openssl庫的版本問題,請直接鏈到你需要的openssl庫路徑,比如我的就是/usr/local/ssl/lib,
2.注意-lssl -lcrypto要寫在-ldl -lpthread前面,這四個必須要。
相關知識:
-L :此選項是指定鏈接庫的文件夾地址
-l(小寫的L):-lssl 即是尋找/usr/local/openssl/lib目錄下的 libssl.a 這個庫,編譯器會自動尋找 libssl.a或者libssl.so
-I(大寫的i):指定頭文件的文件夾地址