起因
從linaro下載的aarch64工具鏈不包含libz庫,導致有些static參數的編譯程序無法通過,出現類似如下問題:
gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/../lib/gcc/aarch64-linux-gnu/6.3.1/../../../../aarch64-linux-gnu/bin/ld: cannot find -lz
collect2: error: ld returned 1 exit status”
這種情況是由於缺少libz導致,所以需要安裝交叉編譯的zlib庫。
源碼下載
可以從官網http://www.zlib.net/找到源碼包http://www.zlib.net/zlib-1.2.11.tar.gz,下載最新的源碼包。
可能不同的時間段下載的包版本號會不一樣,登錄http://www.zlib.net/官網後搜索"zlib source code"關鍵字即可找到。
配置
下載完成後進行交叉工具鏈配置。
export PATH=$PATH:$HOME/cross/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/bin/
export CC=aarch64-linux-gnu-gcc
export AR=aarch64-linux-gnu-ar
export RANLIB=aarch64-linux-gnu-ranlib
./configure --prefix=$HOME/tools/install/zlib-1.2.11/aarch64 --shared
其中$HOME/cross/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/是我們linaro aarch64交叉工具鏈的放置路徑。
編譯
make
make install
編譯完成後會將所有編譯好的文件放置到上一步./configure的--prefix參數指定的目錄中。
安裝libz到交叉工具鏈中
上一步編譯過程中我們執行“make install”後編譯好的libz組件放到了$HOME/tools/install/zlib-1.2.11/aarch64目錄下。這裏我們要這些文件放到linaro交叉工具鏈相關目錄下。
cd $HOME/tools/install/zlib-1.2.11/aarch64
tar -cf zlib.tar ./*
tar -xf zlib.tar -C $HOME/cross/aarch64/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/aarch64-linux-gnu/libc/usr/
這樣安裝完成後,就可以解決linaro工具鏈有時出現