一:配置環境
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...