情況說明
本人在這之前直接在linux下apt-get install已安裝過了openssl,默認(rèn)安裝在usr/bin目錄下,如下圖。
但是,本人在嘗試第一次cmake編譯時,卻報錯:
CMake Error at /usr/share/cmake-3.10/Modules/FindPackageHandleStandardArgs.cmake:137 (message):
Could NOT find OpenSSL, try to set the path to OpenSSL root folder in the
system variable OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found version "1.1.1")
解決辦法
換個路徑重新安裝openssl,按照報錯提示設(shè)置環(huán)境變量,重新編譯。
重新安裝openssl
操作系統(tǒng):Ubuntu18.02
OpenSSL Version: openssl-1.1.1d.tar.gz
OpenSSL下載地址為:https://www.openssl.org/source/
參考博客:https://www.cnblogs.com/relucent/p/11887328.html
1、下載壓縮包
wget https://www.openssl.org/source/openssl-1.1.1d.tar.gz
2、在文件夾下解壓縮,執(zhí)行如下命令:
tar -xzvf openssl-1.1.1d.tar.gz
得到 openssl-1.1.0c 文件夾。
3、進入解壓目錄,執(zhí)行如下命令:
cd openssl-1.1.1d
4、設(shè)定 Openssl 安裝路徑,( --prefix )參數(shù)為要安裝的目錄,執(zhí)行如下命令:
./config --prefix=/usr/local/openssl
5、執(zhí)行命令
./config -t
6、編譯Openssl,編譯需要等待一定的時間
make
7、安裝 Openssl,安裝也需要一定的時間
sudo make install
8、安裝動態(tài)鏈接庫。配置編譯參數(shù),指定openssl為交叉編譯方式
./config linux-generic32 shared no-asm no-async --prefix=/usr/local/openssl CROSS_COMPILE=/usr/local/arm/gcc-arm-9.2-2019.12-x86_64-arm-none-linux-gnueabihf/bin/arm-none-linux-gnueabihf- CC=gcc CXX=g++
簡單參數(shù)說明
no-asm : 不使用匯編程序(do not use assembler).
no-async : 不使用GNU的ucontext庫,有些版本的編譯器不提供GNU C的ucontext庫.
no-tests : 不生成測試額外的測試程序
no-comp : 不建立對SSL / TLS壓縮的支持。 如果這個選項啟用(默認(rèn)設(shè)置),則壓縮只會如果還選擇了zlib或zlib-dynamic選項,則可以正常工作。
no-cms : 不建立對CMS功能的支持
no-ec : 不建立對橢圓曲線的支持
no-ec2m : 不支持二進制橢圓曲線
no-arg: 不支持這些算法,aria, bf, blake2, camellia, cast, chacha,
cmac, des, dh, dsa, ecdh, ecdsa, idea, md4, mdc2, ocb,
poly1305, rc2, rc4, rmd160, scrypt, seed, siphash, sm2, sm3,
sm4 or whirlpool. The “ripemd” algorithm is deprecated and
if used is synonymous with rmd160.
no-ocsp : 不建立對OCSP的支持。
no-sse2 : 不建立對sse2的支持。
no-rfc3779 : 不建立對RFC3779(“用于IP的X.509擴展地址和AS標(biāo)識符”)。
no-srp: 不建立對SRP或基于SRP的密碼套件的支持。。
no-ocsp : 不建立對OCSP的支持。
–prefix: 用于OpenSSL安裝的前綴,其中包含 ==bin, lib, include, share/man,
share/doc/openssl目錄,默認(rèn)的目錄為***/ usr / local==***.
linux-generic32: 表示32位linux系統(tǒng),如果不指定將默認(rèn)按64位編譯.
CROSS_COMPILE: 表示使用的交叉編譯鏈
9、再次編譯安裝
make clean
make
sudo make install
10、執(zhí)行以下命令,查看openssl的依賴關(guān)系。
cd /usr/local
ldd /usr/local/openssl/bin/openssl
11、查看openssl絕對路徑和版本,執(zhí)行如下命令。
which openssl
openssl version
設(shè)置環(huán)境變量
本人重新安裝的openssl如下:
設(shè)置環(huán)境變量:
export PATH=/usr/local/openssl/bin:$PATH
export PATH=/usr/local/openssl:$PATH
文章來源:http://www.zghlxwxcb.cn/news/detail-838684.html
重新cmake編譯成功
文章來源地址http://www.zghlxwxcb.cn/news/detail-838684.html
到了這里,關(guān)于Ubuntu下cmake編譯報錯OPENSSL_ROOT_DIR (missing: OPENSSL_CRYPTO_LIBRARY) (found version “1.1.1“)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!