我正在尝试在 64 位主机(运行 CentOS 5.8)上构建 valgrind(3.7.0)。我需要使用 valgrind 来检查 32 位程序的性能(构建在 32 位主机上,我需要 32 位,因为程序需要在 32 位和 64 位主机上运行)。
问题是我的 64 位主机没有 gcc,所以我使用“sudo yum install gcc”和斯坦福大学的 repo 镜像安装了 gcc(这个 64 位主机的默认 repos 不可用,因此 yum 超时)。这使我能够构建 valgrind,并且它适用于本地内容(例如“valgrind ls -l”),但在尝试为我在另一台主机上构建的 32 位程序运行它时失败。我终于发现 valgrind 的配置脚本检测到我在主机上没有 32 位构建支持(通过运行“configure --enable-only32bit”报告“正在检查 32 位构建支持......没有”) .
那么如何获得对 gcc 等的 32 位支持呢?我尝试了“yum search gcc | grep i386”,然后安装了任何看起来像 32 位 C 的东西(“sudo yum install compat-glibc.i386 compat-libgcc-296.i386 compat-libstdc++-296.i386 compat-libstdc++-33. i386 libgcc.i386 libstdc++.i386 libstdc++-devel.i386 libstdc++44-devel.i386 edac-utils.i386 edac-utils.x86_64 nspluginwrapper.i386") 但“configure --enable-only32bit”仍然报告不支持 32 位.
PS:yum.conf 看起来非常小,即没有排除。唯一奇怪的是“installonly_limit = 5”
好的,这是独家新闻,感谢在编译 Nachos 源代码时出现错误“gnu/stubs-32.h:没有这样的文件或目录”
简短的回答是安装 glibc-devel.i386 (无论如何在 CentOS 5.8 上......对于不同的发行版,它有不同的名称,例如 glibc-devel.i686、libc6-dev-i386 等),可能除了其他软件包我在上面列出了(我没有卸载那些以查看 glibc-devel.i386 本身是否足够)。
通过检查配置脚本并看到它尝试使用“-m32”编译最小的 C 程序,我找到了要搜索的正确问题,如果失败,则配置脚本报告“不支持 32 位”。所以我创建了经典的 HelloWorld C 程序并编译它(“cc -m32 hello.c”)。这抱怨缺少头文件“gnu/stubs-32.h”。所以谷歌搜索“what package has gnu/stubs-32.h”把我带到了我上面引用的stackoverflow页面。