Linux ubuntu OpenSSL + curl 靜態庫編譯及使用

環境: ubuntu 16 64位;

openssl官網:https://www.openssl.org

下載源碼

源碼地址爲:https://www.openssl.org/source/old/;當前最新版本爲 1.1.0f,https://www.openssl.org/source/old/1.1.0/openssl-1.1.0f.tar.gz

源碼編譯

解壓之後,進入源碼目錄openssl-1.1.0f,執行如下命令。因爲只需要編譯靜態庫,也沒有特殊要求,所以使用的編譯選項配置很簡單:

./config -fPIC no-shared --prefix=/home/aa/Downloads/linux

make all

make install

--prefix  用來指定輸出目錄  ,-fPIC:指示生成位置無關的代碼,這個選項是在把openssl生成的靜態庫鏈接到動態庫的時候提示錯誤添加的;no-shared:指示生成靜態庫。

最終在指定目錄下會編譯出libssl.a和libcrypto.a兩個庫文件,在開發的時候只需要包含頭件並鏈接這兩個庫就可以了。

 

附錄:

關於openssl的編譯選項的解讀:

全局選項

第一類是全局性選項:

--openssldir=OPENSSLDIR 安裝目錄,默認是 /usr/local/ssl 。

--prefix=PREFIX 設置 lib include bin 目錄的前綴,默認爲 OPENSSLDIR 目錄。

--install_prefix=DESTDIR 設置安裝時以此目錄作爲"根"目錄,通常用於打包,默認爲空。

zlib
zlib-dynamic
no-zlib 使用靜態的zlib壓縮庫、使用動態的zlib壓縮庫、不使用zlib壓縮功能。

threads
no-threads 是否編譯支持多線程的庫。默認支持。

shared
no-shared 是否生成動態連接庫。

asm
no-asm 是否在編譯過程中使用匯編代碼加快編譯過程。

enable-sse2
no-sse2 啓用/禁用SSE2指令集加速。如果你的CPU支持SSE2指令集,就可以打開,否則就要關閉。

gmp
no-gmp 啓用/禁用GMP庫

rfc3779
no-rfc3779 啓用/禁用實現X509v3證書的IP地址擴展

krb5
no-krb5 啓用/禁用 Kerberos 5 支持

ssl
no-ssl
ssl2
ssl3
no-ssl2
no-ssl3
tls
no-tls 啓用/禁用 SSL(包含了SSL2/SSL3) TLS 協議支持。

dso
no-dso 啓用/禁用調用其它動態鏈接庫的功能。[提示]no-dso僅在no-shared的前提下可用。

[提示]爲了安裝Apache的mod_ssl成功,SSLv2/SSLv3/TLS都必須開啓。

算法選項

第二類用於禁用crypto目錄下相應的子目錄(主要是各種算法)。雖然理論上這些子目錄都可以通過"no-*"語法禁用,但是實際上,爲了能夠最小安裝libcrypto,libssl,openssl,其中的大部分目錄都必須保留,實際可選的目錄僅有如下這些:

no-md2,no-md4,no-mdc2,no-ripemd 這些都是摘要算法,含義一目瞭然。

no-des,no-rc2,no-rc4,no-rc5,no-idea,no-bf,no-cast,no-camellia 這些都是對稱加密算法,含義一目瞭然。"bf"是"Blowfish"的意思。

no-ec,no-dsa,no-ecdsa,no-dh,no-ecdh 這些都是不對稱加密算法,含義一目瞭然。

no-comp 數據壓縮算法。因爲目前實際上並沒有壓縮算法,所以只是定義了一些空接口。

no-store 對象存儲功能。

 

CURL

   https://curl.haxx.se/download/curl-7.61.0.tar.gz

1.下載,解壓;進入目錄;將上面openssl 輸出的整個目錄,命名 openssl 拷貝到 curl 目錄下;

2.編譯:

 ./configure --prefix=/home/aa/Downloads/linux --with-ssl=./openssl --disable-shared

--prefix指定輸出目錄;--with-ssl=./openssl 指定 openssl 目錄;

make all

make install

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章