aarch64-linux-gnu/bin/ld: cannot find -lz collect2: error: ld returned 1 exit status解決方案

起因

    從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工具鏈有時出現

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