去官方網站下載最新版本的 openssl,需要注意推薦使用1.1.1版本,1.1.0及1.0.2版本都已不再支持維護,如系統還在使用老版本的openssl,也應儘快升級到1.1.1版本。
直接點擊上圖中的 openssl-1.1.1g.tar.gz 下載源碼壓縮包,通過瀏覽器完成下載,也可以使用 wget 方式下載,如下
二、配置選項1、下載完成後,進行解壓縮:
tar xzvf openssl-1.1.1g.tar.gz2、查看 INSTALL 及 NOTES.UNIX 文檔了解相關編譯安裝細節,幾個常用的配置選項說明:
–cross-compile-prefix=PREFIX
指定交叉編譯工具鏈,以連接號結束,如 arm-linux-gnueabihf-–prefix=DIR
指定 openssl 的安裝目錄,如果只是想生成庫文件,沒有必要執行 make install 命令,也就可以不用指定該選項–openssldir=DIR
指定 openssl 配置文件的安裝目錄,如果不指定,默認安裝到 –prefix 指定目錄下的 ssl 目錄no-
不支持指定版本協商 no- 不支持指定算法
三、編譯安裝首先需要生成 Makefile 文件,可以通過 config 或者 Configure 腳本配置生成。下面先以 config 配置示例,再用 Configure 配置對比兩者的區別。
$./config --cross-compile-prefix=arm-linux-gnueabihf- --prefix=`pwd`/tmp $make編譯過程中出現如下錯誤:
arm-linux-gnueabihf-gcc: error: unrecognized command line option '-m64'解決辦法:
修改makefile,刪除所有-m64的地方接著編譯出現一堆彙編錯誤,可以通過增加 no-asm 選項解決
如果有出現如下的錯誤信息,因為沒有提供GNU C的ucontext庫,則還需要增加 no-async 選項解決
./libcrypto.so: warning: gethostbyname is obsolescent, use getnameinfo() instead../libcrypto.so: undefined reference to `getcontext'./libcrypto.so: undefined reference to `setcontext'./libcrypto.so: undefined reference to `makecontext'這樣基本就編譯過了,如果用 Configure 來配置生成 Makefile,方式如下:
./Configure linux-armv4 --cross-compile-prefix=arm-linux-gnueabihf- --prefix=`pwd`/tmpconfig 和 Configure 的區別Configure 需要指定平臺信息,比如像上面那樣直接指定是 arm 平臺,則 Makefile 中也就不會出現 m64 選項,不需要像 config 那樣再手動去修改 Makefile 腳本。
而 config 則是自己去檢測當前的系統環境,自動識別系統內核信息和編譯器並設定參數等,然後將相關選項再傳遞給 Configure 腳本去完成最終配置。
而交叉編譯的時候基本就會存在問題,所有更推薦使用 Configure 方式來進行配置操作。但 Configure 需要自己指定目標平臺信息,這個可以通過將 config 腳本放置目標平臺,然後通過 ./config -t 命令來查看其檢測顯示的對應平臺信息,如下:
最後會顯示 ./Configure linux-armv4
補充說明下,配置操作改寫和生成 opensslconf.h 和 opensslv.h 頭文件,opensslv.h 主要記錄當前庫使用的版本信息,而 opensslconf.h 則主要顯示編譯 openssl 庫時的選項配置情況。
近期文章:
二分查找
分治題解
--End--
每周學習總結,相信可以走的更遠。