You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

交叉编译时出现gcc: error trying to exec 'cc1'错误求助

解决交叉编译Linux内核时gcc: error trying to exec 'cc1'的问题

我碰到过好几次这个问题,通常都是交叉编译工具链的完整性、路径配置或者系统依赖缺失导致的,给你几个具体的排查和解决步骤:

1. 检查交叉编译工具链的完整性

cc1是gcc的核心编译组件,这个错误首先要确认它是否存在于你的工具链中:

  • 执行以下命令查找cc1的位置(注意替换成你工具链实际的gcc版本号,2012.03版本的gcc通常是4.6.3):
    ls /opt/arm-2012.03/arm-none-linux-gnueabi/bin/../libexec/gcc/arm-none-linux-gnueabi/4.6.3/cc1
    
  • 如果命令返回“No such file or directory”,说明你的工具链安装不完整或者下载时文件损坏,需要重新下载完整的Parrot工具链包并重新安装。

2. 配置正确的环境变量

即使工具链里有cc1,如果系统找不到它的路径也会报错,建议把工具链的bin目录添加到系统PATH中:

  • 临时生效(当前shell会话):
    export PATH=/opt/arm-2012.03/arm-none-linux-gnueabi/bin:$PATH
    
  • 永久生效(添加到~/.bashrc或~/.profile):
    echo 'export PATH=/opt/arm-2012.03/arm-none-linux-gnueabi/bin:$PATH' >> ~/.bashrc
    source ~/.bashrc
    

配置完成后,再回到内核目录重新执行编译命令。

3. 安装64位系统所需的32位兼容库

如果你使用的是64位Linux系统,老版本的ARM交叉编译工具链(比如2012.03版本)依赖32位系统库,缺失这些库会导致cc1无法执行:

  • 对于Debian/Ubuntu系列系统:
    sudo apt-get update && sudo apt-get install lib32gcc-s1 lib32stdc++6 lib32z1 lib32ncurses5
    
  • 对于RHEL/CentOS系列系统:
    sudo yum install glibc.i686 libstdc++.i686 zlib.i686 ncurses-libs.i686
    

安装完成后再次尝试编译。

4. 验证工具链是否正常工作

在解决完上述问题后,可以先测试交叉编译gcc是否能正常调用cc1:

arm-none-linux-gnueabi-gcc -v

如果输出中能看到类似COLLECT_GCC_OPTIONS=... -quiet -v ... /opt/arm-2012.03/.../cc1的内容,说明工具链已经正常工作,此时再回到内核目录执行你的编译命令:

make ARCH=arm zImage CROSS_COMPILE=/opt/arm-2012.03/arm-none-linux-gnueabi/bin/arm-none-linux-gnueabi-

(注意:这里建议把CROSS_COMPILE的路径补全到前缀,比如arm-none-linux-gnueabi-,避免路径识别问题)

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:26:26