最近要寫一個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看一下相關選項