编译GCC 7.2.0提示gnu/stubs-32.h不存在 无root权限需找对应源码包
报错原因与解决方案
该报错是编译GCC默认开启的32位兼容组件(multilib)时,缺少glibc库的32位开发头文件导致的,你可以根据需求选择以下任意一种方案解决,全程不需要root权限。
方案1:直接禁用32位兼容支持(最简方案)
如果你没有使用GCC编译32位程序的需求,直接在执行GCC的configure配置步骤时添加--disable-multilib参数即可,跳过32位相关组件的编译,不会再触发该报错。
方案2:手动补全缺失头文件(需要保留32位支持时使用)
你需要下载glibc源码包获取缺失的头文件,操作步骤如下:
- 先查询当前系统预装的glibc版本,避免后续兼容性问题:
输出第一行即为系统glibc版本,例:ldd --versionldd (Ubuntu GLIBC 2.35-0ubuntu3.1) 2.35对应的版本为2.35 - 下载和系统版本一致的glibc源码压缩包,解压后进入源码目录
- 找到头文件路径:x86_64架构下路径为
sysdeps/unix/sysv/linux/x86_64/bits/stubs-32.h,其他架构对应替换路径中的架构标识即可 - 在自己的用户目录下创建自定义头文件存放路径:
mkdir -p ~/local/include/gnu - 将找到的
stubs-32.h拷贝到刚才创建的目录下:cp sysdeps/unix/sysv/linux/x86_64/bits/stubs-32.h ~/local/include/gnu/ - 重新执行GCC的configure步骤,添加自定义头文件路径参数即可:
CFLAGS="-I$HOME/local/include" CXXFLAGS="-I$HOME/local/include" ./configure [你的其他配置参数]
内容的提问来源于stack exchange,提问作者JB_User
相关产品推荐
相关产品推荐

