Ubuntu 20.04下gcc-multilib与gcc-9-aarch64-linux-gnu安装冲突解决
解决方案
冲突原因
Ubuntu 20.04官方软件源中,gcc-9-aarch64-linux-gnu与gcc-multilib存在包配置层面的互斥声明,无法直接同时安装。以下两种方案可实现同时具备aarch64交叉编译能力、x86 32位程序编译能力的需求:
方案一:手动安装32位编译依赖(推荐,无需隔离环境)
gcc-multilib是元包,作用是批量安装x86 32位编译所需的头文件、运行库,你可以手动安装对应组件避开冲突:
- 第一步,先安装aarch64交叉编译工具链:
sudo apt install gcc-9-aarch64-linux-gnu
- 第二步,再安装替代
gcc-multilib功能的32位编译组件:
sudo apt install gcc-multilib-i686-linux-gnu libc6-dev:i386 lib32gcc-9-dev
使用方式和之前完全一致:
- 编译x86 32位程序时添加
-m32参数即可 - 交叉编译aarch64程序时使用
aarch64-linux-gnu-gcc-9命令即可
方案二:容器隔离环境
如果需要完整保留原生gcc-multilib包的配置,可以用容器将两个环境隔离:
- 主机环境安装
gcc-multilib,用于本地32位/64位程序编译 - 启动Docker/Podman容器,在容器内安装
gcc-9-aarch64-linux-gnu做交叉编译,两个环境互不影响
功能验证
安装完成后可以执行以下命令验证功能正常:
- 验证32位编译能力:
gcc -m32 test.c -o test_x86_32 && file test_x86_32
输出应包含ELF 32-bit LSB executable, Intel 80386字样
- 验证aarch64交叉编译能力:
aarch64-linux-gnu-gcc-9 test.c -o test_arm64 && file test_arm64
输出应包含ELF 64-bit LSB executable, ARM aarch64字样
内容的提问来源于stack exchange,提问作者xiaogw
相关产品推荐
相关产品推荐

