問(wèn)題:在X86環(huán)境下編譯沒(méi)問(wèn)題的HTTP工程想要進(jìn)行交叉編譯,鏈接的時(shí)候出現(xiàn)搜索到的庫(kù).so文件格式不對(duì)。
問(wèn)題很明顯,外部庫(kù)沒(méi)有進(jìn)行交叉編譯還是X86的格式,我們需要進(jìn)行單獨(dú)的編譯并安裝庫(kù),以openssl為例。
利用arm-none-linux-gnueabi-gcc交叉編譯openssl,生成靜態(tài)庫(kù)文件libcrypto.a ,libssl.a
- 從openssl官網(wǎng)下載openssl最新版本openssl-1.0.2。下載地址:http://www.openssl.org/source/
- 導(dǎo)入交叉編譯環(huán)境
source /opt/fsl-imx-x11/4.1.15-2.1.0/environment-setup-cortexa9hf-neon-poky-linux-gnueabi
- 解壓openssl源碼,進(jìn)入目錄,執(zhí)行:
./config no-asm -shared --prefix=/usr/local/ssl-1.0.2/
配置,--prefix為安裝目錄
配置完成后:手動(dòng)修改生成的Makefile,并且找到有-m64的地方,全刪之(共2處)
- 如有需要root權(quán)限安裝則
sudo -s進(jìn)入root即可
make & make install
備注:這里遇到arm-poky-linux-gnueabi-arm-poky-linux-gnueabi-gcc找不到的問(wèn)題,一開(kāi)始以為環(huán)境變量沒(méi)配置好,仔細(xì)一看這個(gè)名字有問(wèn)題,前面和后面的arm-none-linux-重復(fù)了,能找到這個(gè)工具鏈才怪。這種問(wèn)題直接看Makefile,vim打開(kāi),查看編譯器的配置

image.png
- 紅框中的原來(lái)是這樣的CC= $(CROSS_COMPILE)arm-poky-linux-gnueabi-gcc
而CROSS_COMPILE變量又是arm-poky-linux-gnueabi-,所以最后拼出來(lái)一個(gè)arm-poky-linux-gnueabi-arm-poky-linux-gnueabi-gcc奇怪的名字,刪掉重復(fù)的部分就行了,問(wèn)題產(chǎn)生原因還沒(méi)找到。- 在qt-creater的pro文件中添加外部庫(kù)的連接
LIBS += -L/usr/local/ssl-1.0.2 -lcrypto
這時(shí)就可以正常的交叉編譯了