1. 程式人生 > >Sqlite,libevent,openssl,mosquito交叉編譯

Sqlite,libevent,openssl,mosquito交叉編譯

nss toc arm-linux uil exp tls efi out crypt

一、設置交叉編譯環境

  1. 在makefile所在目錄(或源代碼根目錄)打開終端。
  2. 在終端中設置交叉編譯所需的臨時環境變量(也可寫到配置文件中設置為全局環境變量),其中交叉編譯工具鏈的名稱和目錄需要根據實際目錄設置,每次編譯前執行以下命令:
export CC=/home/hk/Desktop/sixin/gcc-4.9/bin/mips-linux-gcc  
export CXX=/home/hk/Desktop/sixin/gcc-4.9/bin/mips-linux-g++
export AR=/home/hk/Desktop/sixin/gcc-4.9/bin/mips-linux-ar
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/hk/Desktop/sixin/gcc-4.9/lib

二、交叉編譯sqlite3

1.設置交叉編譯環境。

2.執行以下命令配置編譯選項。 --prefix= 後面跟的是編譯出來的庫的安裝目錄,需要根據實際情況設置,--host= 後面的內容根據交叉編譯工具設置。

./configure --host=arm-linux-gnueabihf --prefix=/home/hk/Desktop/moxa/sqlite-autoconf-3071600/out

make   #編譯
make install #安裝

三、交叉編譯openssl

1.設置交叉編譯環境。

2.執行以下命令配置編譯選項。 --prefix= 後面跟的是編譯出來的庫的安裝目錄,需要根據實際情況設置。

  • 編譯靜態庫,linux:‘arm-linux-gnueabihf-gcc‘arm-linux-gnueabihf-gcc根據交叉編譯工具設置。

    ./Configure linux-elf-arm -DB_ENDIAN linux:'arm-linux-gnueabihf-gcc'  --prefix=[輸出路徑]
    make
    make install
  • 編譯動態庫

./config -fPIC no-asm -shared --prefix=/home/hk/Desktop/openssl-1.0.0/out

# 配置完成之後需要修改makefile,將makefile中的 -m64 刪除。
make
make install

註意:盡量使用靜態庫,動態庫有時會出錯。

四、交叉編譯libevent

1.設置交叉編譯環境。

2.執行以下命令配置編譯選項。 --prefix= 後面跟的是編譯出來的庫的安裝目錄,需要根據實際情況設置。

3.CPPFLAGS="-I/usr/local/Cellar/openssl/1.0.2h_1/include"為openssl頭文件目錄,LDFLAGS=LDFLAGS="-L/usr/local/Cellar/openssl/1.0.2h_1/lib -lssl -lcrypto"是編譯出來的openssl庫目錄,需要根據實際情況設置。

./configure --host=arm-linux CPPFLAGS="-I/usr/local/Cellar/openssl/1.0.2h_1/include" LDFLAGS="-L/usr/local/Cellar/openssl/1.0.2h_1/lib -lssl -lcrypto"  --prefix=/usr/local

make 
make install

五、交叉編譯 paho.mqtt.c ,需要先交叉編譯 openssl

1.設置交叉編譯環境。

2.修改makefile ,在129行添加如下,CFLAGS += -I後面的內容為openssl頭文件目錄,LDFLAGS += -L是編譯出來的openssl庫目錄,需要根據實際情況設置。

# 修改makefile ,在129行添加如下, -I參數後面的內容為 交叉編譯openssl庫安裝目錄
CFLAGS += -I./../openssl-1.1.0g/install/include
LDFLAGS += -L./../openssl-1.1.0g/install/lib

#修改後執行make命令編譯
make

3.編譯完成後,會在當前目錄創建build目錄,進入build目錄,裏面有一個output目錄和一個版本頭文件,output目錄中存放著編譯出來的庫文件,examples和測試程序。

六、交叉編譯 mosquitto

  1. 設置交叉編譯環境。
  2. 修改源文件目錄下的 config.mk文件。
    • WITH_TLS、WITH_TLS_PSK、WITH_SRV、WITH_UUID 、WITH_DOCS設置為 no
    • 在文件頭部設置依賴的paho.mqtt.copenssl頭文件和庫目錄,如下所示:
#  -I參數後面的內容為paho.mqtt.c庫和openssl頭文件目錄,-L參數後面的內容為編譯好的paho.mqtt.c庫和openssl庫目錄 ,註意: 實際修改時需要不使用[]。
CFLAGS += -I[paho.mqtt.c源代碼目錄下的src目錄] -I[openssl頭文件目錄]
LDFLAGS += -L[編譯處的paho.mqtt.c庫目錄]    -L[編譯出來的openssl庫目錄] -lssl -lcrypto 

Sqlite,libevent,openssl,mosquito交叉編譯