启用eudev执行Buildroot make命令时提示未找到C99编译器求助
解决Buildroot启用eudev时的C99编译器错误
首先明确:你执行gcc --std=c99时的输出是正常现象——这个命令只指定了编译标准,但没有提供任何输入文件,所以编译器提示缺少输入文件,这不是导致eudev编译失败的原因。真正的问题是Buildroot在交叉编译eudev时,使用的交叉编译器未启用C99支持,或者该交叉编译器本身不支持C99。
以下是具体解决步骤:
重新进入Buildroot的menuconfig,导航到
Toolchain菜单:- 如果使用Buildroot自带的工具链(
Toolchain type选择Buildroot toolchain),确保C compiler相关选项中启用了C99支持。部分版本的Buildroot里有明确的Enable C99 support选项,直接勾选即可;如果没有该选项,确认gcc version选择的是4.3及以上版本(gcc 4.3及以后默认支持C99)。 - 如果使用外部交叉工具链(
Toolchain type选择External toolchain),先验证该工具链的gcc是否支持C99:找到交叉编译器的路径(比如arm-linux-gnueabihf-gcc),执行arm-linux-gnueabihf-gcc --std=c99 -E -x c /dev/null,如果无报错则说明工具链支持C99,接着在Buildroot的外部工具链配置中,确保External toolchain gcc version设置正确,且Enable C99 support已勾选。
- 如果使用Buildroot自带的工具链(
清理eudev的编译缓存:
执行make eudev-dirclean,避免之前的错误配置残留,然后重新执行make。若上述步骤无效,尝试清理整个Buildroot编译目录:
执行make clean,重新进入menuconfig确认所有配置后,再执行make从头编译。
内容的提问来源于stack exchange,提问作者AB3
相关产品推荐
相关产品推荐

