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: ca...
起因
从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工具链有时出现
更多推荐
所有评论(0)