OpenSSL靜態庫編譯及使用(linux環境),openssllinux

來源:互聯網
上載者:User

OpenSSL靜態庫編譯及使用(linux環境),openssllinux

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-sharedmake

其中,-fPIC:指示產生位置無關的代碼,這個選項是在把openssl產生的靜態庫連結到動態庫的時候提示錯誤添加的;no-shared:指示產生靜態庫。

最終在目前的目錄下會編譯出libssl.a和libcrypto.a兩個庫檔案,在開發的時候只需要包含頭件並連結這兩個庫就可以了。

開發使用

有一點需要注意的是編譯產生的庫libssl.a和libcrypto.a存在依賴關係,要把libssl.a放在libcrypto.a前面,不然可能出現未定義的錯誤。庫的標頭檔在openssl-1.1.0f/include/openssl目錄中。

將openssl-1.1.0f/include/openssl目錄拷貝到自己模組的標頭檔目錄(./inc)下,將libssl.a和libcrypto.a靜態庫拷貝到自己模組的庫檔案目錄(./lib)下,在makefile中添加標頭檔目錄和lib庫:

INCLUDE += ******** -I./incLIB += ******* -L./lib -lssl -lcrypto

在使用openssl庫函數時,添加如下標頭檔(按需添加)即可:

#include <openssl/bio.h>#include <openssl/ssl.h> #include <openssl/err.h>

 

附錄:

關於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 Object Storage Service功能。

更多細節可以查看 crypto/store/README 檔案。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.