You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Ubuntu安装的ARM64交叉编译器带版本后缀致autoconf识别失败原因?

解决configure找不到带版本后缀的ARM64交叉编译器问题

你遇到的问题本质是configure脚本默认会查找不带版本后缀的交叉编译工具链(比如aarch64-linux-gnu-gcc),但你的工具链全部带有-4.8后缀,所以脚本找不到它们,转而 fallback 到本地gcc了。下面是几个可行的解决方法,按推荐程度排序:

1. 显式指定交叉编译器环境变量

这是最直接且不影响系统其他配置的方法,在执行configure前设置CCCXX等环境变量,指定你的带后缀工具链:

CC=aarch64-linux-gnu-gcc-4.8 CXX=aarch64-linux-gnu-g++-4.8 ./configure --host=aarch64-linux-gnu

如果还需要用到其他工具(比如链接器ld、汇编器as),也可以一并指定:

CC=aarch64-linux-gnu-gcc-4.8 \
CXX=aarch64-linux-gnu-g++-4.8 \
LD=aarch64-linux-gnu-ld-4.8 \
AS=aarch64-linux-gnu-as-4.8 \
./configure --host=aarch64-linux-gnu

2. 创建软链接统一工具链名称

如果你希望后续不用每次都指定环境变量,可以给带后缀的工具链创建不带后缀的软链接,让configure能默认找到它们:

sudo ln -s /usr/bin/aarch64-linux-gnu-gcc-4.8 /usr/bin/aarch64-linux-gnu-gcc
sudo ln -s /usr/bin/aarch64-linux-gnu-g++-4.8 /usr/bin/aarch64-linux-gnu-g++
sudo ln -s /usr/bin/aarch64-linux-gnu-ld-4.8 /usr/bin/aarch64-linux-gnu-ld

注意:如果系统中已经存在不带后缀的同名工具链(比如更高版本的aarch64编译器),这个操作会覆盖原有链接,所以执行前最好先检查一下。

3. 检查是否安装了完整的交叉编译依赖

除了gcc本身,交叉编译还需要配套的二进制工具、标准库头文件等,你可以检查是否安装了以下Ubuntu 16.04下的对应包:

  • binutils-aarch64-linux-gnu:提供交叉编译用的链接器、汇编器等工具
  • libc6-dev-arm64-cross:ARM64架构的C标准库头文件和静态库
  • gcc-4.8-aarch64-linux-gnu:你已经安装的交叉编译器主包

可以用下面的命令安装缺失的包:

sudo apt-get install binutils-aarch64-linux-gnu libc6-dev-arm64-cross

4. 显式指定configure的架构参数(可选)

如果遇到configure识别架构有问题,可以显式指定--build参数(你的主机架构),配合前面的环境变量一起使用:

CC=aarch64-linux-gnu-gcc-4.8 CXX=aarch64-linux-gnu-g++-4.8 ./configure --host=aarch64-linux-gnu --build=x86_64-linux-gnu

内容的提问来源于stack exchange,提问作者user3909192

火山引擎 最新活动