macos 平台交叉编译 gcc,报错 Specified CC_FOR_BUILD doesn‘t seem to work 的解决

在macos 11.5上尝试编译gcc-4.7.1,目标为i686-none-linux-gnu时遇到错误。原因是本地gcc版本过高。解决方法是利用macos上较低版本的gcc(gcc-7.5.0_3)进行编译,通过设置CC环境变量为/usr/local/Cellar/gcc@7/7.5.0_3/bin/gcc-7来成功完成编译。

背景

我在 macos 11.5 上面编译 gcc-4.7.1,target=i686-none-linux-gnu,结果报错

checking for gcc option to accept ISO Standard C... (cached) none needed
checking how to run the C preprocessor... gcc -E
checking build system compiler gcc... rm: conftest.dSYM: is a directory
rm: conftest.dSYM: is a directory
no
configure: error: Specified CC_FOR_BUILD doesn't seem to work
make[1]: *** [configure-gmp] Error 1
make: *** [all] Error 2

原因

我macos上的gcc 版本和要编译的目标gcc版本差距太大

➜  build gcc -v
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 13.0.0 (clang-1300.0.29.3)
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
<think>好的,我需要解决用户遇到的GCC编译错误:Specified CC_FOR_BUILD doesn't seem to work。根据用户提供的引用信息,尤其是引用[1]和引用[2],我需要整理出解决方案。 首先,用户是在macOS 11.5上交叉编译GCC-4.7.1,目标平台是i686-none-linux-gnu。错误出现在配置阶段,提示CC_FOR_BUILD无效,导致configure失败。可能的原因包括环境变量冲突或编译器配置问题。 根据引用[1]中的情况,类似的问题可能与环境变量有关。引用[2]提到需要清空LD_LIBRARY_PATH,这可能干扰编译过程。所以第一步应该是清理环境变量,尤其是LD_LIBRARY_PATH和可能影响编译的其他变量,比如CC、CFLAGS等。 另外,引用[3]指出需要提供自己的GCC交叉编译器,这可能意味着用户需要正确设置交叉编译工具链的路径。可能需要指定CC_FOR_BUILD为宿主系统的编译器,而不是目标平台的编译器。 可能的解决步骤包括: 1. 清空环境变量,特别是LD_LIBRARY_PATH,使用export LD_LIBRARY_PATH=。 2. 设置CC_FOR_BUILD为宿主机的gcc,例如export CC_FOR_BUILD=/usr/bin/gcc。 3. 确保其他相关变量如CC、CXX正确指向交叉编译器。 4. 重新运行configure,并检查是否有其他依赖库的问题,如GMP、MPFR等需要预先安装或正确配置。 5. 如果问题依旧,可能需要检查GCC源码的配置选项,确保交叉编译的参数正确,特别是目标平台和宿主平台的区分。 另外,用户使用的GCC版本较旧(4.7.1),可能在macOS 11.5上存在兼容性问题,可以考虑尝试更新的GCC版本或者查找针对该版本的补丁。 需要将这些步骤整理成清晰的解决方案,并生成相关问题,帮助用户进一步排查可能的问题。</think>### 解决方案:GCC编译报错`Specified CC_FOR_BUILD doesn't seem to work` #### 问题原因 此错误通常由以下原因导致: 1. **环境变量冲突**:系统环境变量(如`LD_LIBRARY_PATH`)可能干扰编译过程,导致编译器无法正确识别宿主机的构建工具[^2]。 2. **编译器配置错误**:`CC_FOR_BUILD`未正确指向宿主机的原生编译器,或交叉编译工具链配置不完整[^1][^3]。 --- #### 分步解决 1. **清理环境变量** 在编译前清空可能冲突的环境变量: ```bash export LD_LIBRARY_PATH= # 清空库路径变量 unset CC CFLAGS CXXFLAGS LDFLAGS # 移除自定义编译标志 ``` 2. **明确指定编译器路径** 手动设置`CC_FOR_BUILD`为宿主机的原生编译器(如macOS自带的`gcc`或`clang`): ```bash export CC_FOR_BUILD=/usr/bin/gcc # 假设gcc路径为/usr/bin/gcc ``` 3. **验证交叉编译工具链** 确保已正确安装交叉编译工具链(如`i686-none-linux-gnu-gcc`),并在配置时指定目标平台: ```bash ./configure --target=i686-none-linux-gnu --prefix=/安装路径 ``` 4. **检查依赖库** GCC编译依赖GMP、MPFR等数学库。若未正确安装,需提前通过源码或包管理器安装,并通过`--with-gmp`、`--with-mpfr`指定路径: ```bash ./configure --with-gmp=/usr/local --with-mpfr=/usr/local ... ``` 5. **重新编译** 执行完整编译流程: ```bash make clean # 清理旧文件 make # 重新编译 ``` --- #### 补充说明 - 若使用较旧GCC版本(如4.7.1),可能需应用补丁以兼容新版macOS[^1]。 - 若问题持续,尝试在虚拟机或容器中构建,避免宿主机环境干扰[^3]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值