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

RHEL8.5 64位系统gcc -m32编译32位C程序报stubs-32.h缺失

32位编译开关正确性说明

你使用的-m32是GCC指定生成32位目标程序的标准正确编译参数,本身不存在用法错误,触发的报错和编译开关无关,是系统缺少32位编译依赖导致的。

报错根因

gnu/stubs-32.h是32位版本glibc的核心头文件,RHEL 8.5默认仅安装64位版本的glibc开发组件,不会默认预装32位程序编译需要的头文件、链接库,因此编译时会出现头文件找不到的致命错误。

解决步骤
  • 先确认当前系统已配置可用的RHEL 8.5对应BaseOS、AppStream软件源,32位兼容包均由这两个仓库提供。

如果你的RHEL 8.5没有注册红帽官方订阅,必须先配置对应版本的本地/第三方dnf源,否则后续安装命令会提示找不到glibc-devel.i686包。

  • 执行命令安装32位glibc开发包:
dnf install glibc-devel.i686
  • 如果后续编译进入链接阶段后,出现找不到32位系统库(如libc.so、libm.so)的报错,补充安装基础32位运行、开发依赖:
dnf install libgcc.i686 libstdc++-devel.i686
  • 依赖安装完成后可以先验证头文件是否就位,执行ls /usr/include/gnu/stubs-32.h,如果命令正常返回文件路径,重新执行原gcc -m32 ksi_rpt.c命令即可正常编译。
迁移注意事项

Solaris和Linux的系统调用逻辑、系统接口的结构体定义、部分数据类型的边界实现存在差异,就算编译依赖全部安装完成,后续如果遇到编译报错或者运行异常,要针对这些平台差异做适配,不要默认Solaris上的32位C代码可以直接无修改在Linux上编译运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 00:57:25