1. 程式人生 > >交叉編譯openssl/curl支援SSL功能

交叉編譯openssl/curl支援SSL功能

1.開發環境

1)ARM開發板(Cortex A8 ARMv7a ) 和 嵌入式Linux作業系統 2)交叉編譯工具 arm-linux-gnueabihf-gcc 3)openssl和libcurl原始碼(我使用的版本為openssl-1.0.2p.tar.gz,curl-7.60.0.tar.gz)

2.交叉編譯openssl

進入openssl-1.0.2p.tar.gz的解壓目錄後,執行以下命令:

./Configure --prefix=/usr/local/src/arm-linux/openssl --cross-compile-prefix=arm-linux-gnueabihf- no-asm shared linux-armv4 -march=armv7-a -D__ARM_MAX_ARCH__=7
make
make install

引數說明:no-asm是在交叉編譯過程中不使用匯編程式碼程式碼加速編譯過程.原因是它的彙編程式碼是對arm格式不支援的,shared生成動態連線庫。prefix是openssl的安裝目錄。安裝完成後在這個目錄下會有四個安裝目錄:bin include lib ssl 需要注意的是-march後面對應的核心一定要是自己的arm的型號,我這裡填的是armv7-a,若是填錯arm型號不支援執行make過程中會出錯,會給出一堆型號你選擇自己對應的即可。 在這裡插入圖片描述

將指定安裝目錄下–prefix 的lib庫 /usr/local/src/arm-linux/openssl/lib/libssl.so.1.0.0 庫拷貝到開發板的/lib目錄下

3.交叉編譯curl

進入curl-7.60.0.tar.gz的解壓目錄後,執行以下命令進行編譯引數配置:

env LDFLAGS=-R/usr/local/src/arm-linux/openssl/lib ./configure --prefix=/usr/local/src/arm-linux/curl CC=arm-linux-gnueabihf-gcc --host=arm-linux --with-ssl=/usr/local/src/arm-linux/openssl

-with-ssl=/usr/local/src/arm-linux/openssl 預設關閉, 這個就是開啟ssl, 並指定交叉編譯用的openssl庫 在這裡插入圖片描述

這裡SSL support狀態需要為enabled 然後進行

make
make install

將指定安裝目錄下–prefix 的lib庫 /usr/local/src/arm-linux/curl/lib/libcurl.so.4.5.0 庫拷貝到開發板的/lib目錄下即可。