使用Buildroot工具链交叉编译Android版GCC时make报错如何解决?
解决交叉编译GCC时
arm-linux-ar: command not found的问题 从你的配置和错误输出来看,核心问题出在工具链前缀不匹配,加上几个配置参数的小失误,还有编译依赖缺失。下面是一步步的解决办法:
1. 修正--host参数,匹配你的工具链前缀
你使用的Buildroot工具链是aarch64-buildroot-linux-uclibc-前缀的(比如aarch64-buildroot-linux-uclibc-gcc),但你在configure时指定了--host=arm-linux——这会让make试图寻找arm-linux-ar这类工具,而你的工具链里根本没有这个命名的程序。
把--host参数改成和工具链一致的前缀:
--host=aarch64-buildroot-linux-uclibc
2. 手动指定工具链的辅助工具
为了避免系统找不到工具链里的ar、as、ranlib等工具,直接在configure命令里明确指定它们的路径:
AR=/home/buildroot-2017.02-rc3/output/host/usr/bin/aarch64-buildroot-linux-uclibc-ar \ AS=/home/buildroot-2017.02-rc3/output/host/usr/bin/aarch64-buildroot-linux-uclibc-as \ RANLIB=/home/buildroot-2017.02-rc3/output/host/usr/bin/aarch64-buildroot-linux-uclibc-ranlib \
3. 清理旧配置,用修正后的命令重新configure
之前的configure已经生成了错误的Makefile,先彻底清理:
make distclean
然后用修正后的完整configure命令执行(我调整了CFLAGS里的链接参数,这些应该放在LDFLAGS里,且configure会自动检测gmp/mpfr/mpc):
./configure --prefix=/home/Desktop/gcc_5/build/ \ CC=/home/buildroot-2017.02-rc3/output/host/usr/bin/aarch64-buildroot-linux-uclibc-gcc \ CXX=/home/buildroot-2017.02-rc3/output/host/usr/bin/aarch64-buildroot-linux-uclibc-g++ \ AR=/home/buildroot-2017.02-rc3/output/host/usr/bin/aarch64-buildroot-linux-uclibc-ar \ AS=/home/buildroot-2017.02-rc3/output/host/usr/bin/aarch64-buildroot-linux-uclibc-as \ RANLIB=/home/buildroot-2017.02-rc3/output/host/usr/bin/aarch64-buildroot-linux-uclibc-ranlib \ CFLAGS="-I/home/buildroot-2017.02-rc3/output/host/usr/include/ -fPIC -static" \ LDFLAGS="-L/home/buildroot-2017.02-rc3/output/host/usr/lib -lgmp -lmpfr -lmpc" \ --host=aarch64-buildroot-linux-uclibc \ --disable-shared --disable-f77 --disable-fc --disable-fortran
4. 安装缺失的编译依赖工具
从configure的输出可以看到,你还缺少bison、flex、makeinfo这些GCC编译必需的工具,先安装它们:
- Debian/Ubuntu系统:
sudo apt-get install bison flex texinfo - RHEL/CentOS系统:
sudo yum install bison flex texinfo
完成这些步骤后,再执行make应该就能解决arm-linux-ar: command not found的问题了。
内容的提问来源于stack exchange,提问作者Doha
相关产品推荐
相关产品推荐

