linux編譯32位openssl和libssh2


最近要寫一個sftp上下載的功能, 要用的libssh2, 這里我直接用的現成的壓縮包, openssl為openssl-1.0.2l.tar.gz, libssh2為libssh2-1.8.0.tar.gz, 這里做一個簡單的記錄

首先編譯openssl, 手頭的工作機為64位centos, 由於工作需要, 我需要編譯32位的庫, openssl編譯流程如下

$ cd openssl-1.0.2l

$ ./Configure --prefix=$(HOME)/lib_lnx_32/openssl -m32 386 shared no-asm linux-generic32

$ make

$ make test

$ make install

解釋一下上述流程

1. 首先進入解壓后的openssl目錄

2. 執行openssl自帶的Configure腳本來生成Makefile, 這里我添加了配置選項

--prefix指定了安裝路徑

-m32編譯32位程序(這里如果是aix環境, 則用-maix32)

386指示兼容32位cpu

shared意為要編譯動態庫版本

no-asm不使用匯編代碼

linux-generic32表明統一編譯環境32位的linux

以上這些命令可以在INSTALL說明文件中看到詳細的解釋

3. make編譯源代碼

4. make test進行測試, 檢查是否有錯誤

5. make install將相關頭文件,庫文件等安裝到prefix指定的目錄中

這里貼一下Configure -h給出的配置幫助文檔, 我用到的配置命令紅標出來了

 

 

接下來是libssh2的安裝

$ cd libssh2-1.8.0

$ export CFLAGS=-m32

$ export CPPFLAGS=-m32
$ ./configure --build=i386 --enable-shared --disable-examples-build --enable-static --prefix=$(HOME)/lib_lnx_32/libssh2 --with-openssl CPPFLAGS="-I$(HOME)/lib_lnx_32/openssl/include" LDFLAGS="-L$(HOME)/lib_lnx_32/openssl/lib"

$ make

$ make install

1. 首先進入libssh2的目錄

2.這里導出一下CFLAGS和CPPFLAGS兩個編譯符號(這里如果是aix環境, 導出-maix32), 之后執行腳本時會自動配置成32位輸出

3. 執行configure腳本配置makefile, 對應添加了相關配置選項, 此處我只編譯了靜態庫

--build指明編譯環境(aix似乎直接填對應版本就行了, 比如aix5, aix9等)

--enable-shared指明編譯動態庫

--disable-examples-build指明不編譯例子

--enable-static指明編譯靜態庫

--prefix指定安裝路徑

--with-openssl指示使用openssl

CPPFLAGS指定了openssl頭文件的目錄

LDFLAGS指定了openssl庫目錄

4. 將輸出的庫和頭文件等內容拷貝到prefix目錄

這里同樣貼一下configure -h給出的配置幫助文檔, 用到的配置命令同樣紅標出來了

 

總結一下:如果不在乎32,64, 而且只是本機使用的話, 編譯起來其實挺無腦的, 但是對32位有要求的情況下, 可以使用./configure -h看一下相關選項


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM