基於Inter32的虛擬機的ARM32交叉編譯環境配置(ubunt)

一:配置環境

cd /opt/
sudo tar -xvf gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf.tar.xz -C .

 

/etc/bash.bashrc中加入:

export PATH=/opt/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/bin/:$PATH
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
export CC=arm-linux-gnueabihf-gcc
export CXX=arm-linux-gnueabihf-g++
export LD=arm-linux-gnueabihf-ld
export AR=arm-linux-gnueabihf-ar
export AS=arm-linux-gnueabihf-as
export RANLIB=arm-linux-gnueabihf-ranlib

 

二:指定庫搜索路徑,有三種方法(選擇1種即可)

1:

export LD_LIBRARY_PATH=/opt/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib

如果該變量有多個路徑,遵從先到先得的原則,即前面的和後面的存在同樣的庫文件,會取到前面的。

2:

cd /etc/

cat ld.so.conf

cd ld.so.conf.d

建立arm-linux-gnueabihf.conf

vim arm-linux-gnueabihf.conf

加入:/opt/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib

保存退出,

刷新ld.so.cache(敲入命令:ldconfig),這個緩存是爲了增加搜索lib庫的速度,不用每次都讀文件而是預先將文件路徑讀入到內存中。

如果不配置第2點,還沒有配置第1,3點,搜索路徑時會從$PATH中獲取,先到先得。

3.在編譯階段,加入指定搜索路徑:

 -L /opt/gcc-linaro-7.4.1-2019.02-i686_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib -lxxx -lxxx -lxxx

 

關於庫的擴展:想運行時指定依賴庫的搜索,還有一種方法在編譯階段指定絕對路徑,編譯選項:

-Wl,-rpath /xxx/yyy/zzz/

 

話外:.so.1.2.3中1表示主版本號,2爲次版本號,3爲發佈版本號。一般更新so庫是在主版本號相同的情況下走更新流程,如果主版本號不同一般是要從裝的。

reboot重啓虛擬機

 

三,編譯連接

 $CC ...

$CXX...

 

 

 


 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章