在macOS构建Buildroot树莓派OS镜像时提示gcc未找到
macOS下Buildroot编译树莓派镜像提示缺失gcc的解决方法
问题场景
在macOS上基于Buildroot为树莓派Zero W构建OS镜像时,执行make提示缺失gcc;通过Homebrew安装gcc 11.3.0_2后,再次执行make仍报错:
You must install 'gcc' on your build machine make: *** [dependencies] Error 1
执行make clean后问题依旧。查看当前gcc版本,发现实际调用的是Apple Clang:
% 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 12.0.0 (clang-1200.0.32.29) Target: x86_64-apple-darwin20.2.0 Thread model: posix InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
原因分析
Homebrew安装的GCC不会替换系统默认的gcc命令(系统默认gcc是Clang的别名),而是以gcc-11(对应版本号)的形式存在,导致Buildroot的依赖检测无法识别已安装的GCC。
解决步骤
方法1:临时修改环境变量(当前shell会话生效)
- 把Homebrew安装的GCC目录加到PATH最前端:
export PATH=$(brew --prefix gcc)/bin:$PATH
- 验证当前
gcc是否为Homebrew版本:
gcc -v
输出应显示gcc 11.3.0_2的相关信息,之后重新执行make即可。
方法2:永久修改环境变量(所有shell会话生效)
- 打开shell配置文件:
- zsh用户:
open ~/.zshrc - bash用户:
open ~/.bash_profile
- zsh用户:
- 在文件末尾添加:
export PATH=$(brew --prefix gcc)/bin:$PATH
- 保存文件后,执行命令使配置生效:
- zsh用户:
source ~/.zshrc - bash用户:
source ~/.bash_profile
- zsh用户:
- 验证后执行
make。
方法3:直接指定编译工具链(单次编译生效)
执行make时直接指定CC和CXX为Homebrew安装的GCC:
make CC=gcc-11 CXX=g++-11
内容的提问来源于stack exchange,提问作者sagism
相关产品推荐
相关产品推荐

