在64位CentOS 5主机上构建32位

时间:2012-07-20 19:40:30

标签: gcc centos 32bit-64bit valgrind yum

我正在尝试在64位主机(运行CentOS 5.8)上构建valgrind(3.7.0)。我需要使用valgrind来检查32位程序的性能(在32位主机上构建,我需要32位,因为程序需要在32位和64位主机上运行)。

问题是我的64位主机没有gcc,所以我使用“sudo yum install gcc”和斯坦福大学的repo镜像安装了gcc(这个64位主机的默认存储库不可用,因此yum超时了)。这允许我构建valgrind,它适用于本地的东西(例如“valgrind ls -l”),但在尝试运行它为我在另一台主机上构建的32位程序时失败了。我终于想通了valgrind的configure脚本检测到我没有在主机上有32位构建支持(通过运行“configure --enable-only32bit”,它报告“检查32位构建支持......没有”) 。

那么如何获得32位gcc等支持?我试过“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”

好的,这是独家新闻,感谢Error "gnu/stubs-32.h: No such file or directory" while compiling Nachos source code

简短的回答是安装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”。所以谷歌搜索“什么包有gnu / stubs-32.h”把我带到了我上面提到的stackoverflow页面。

1 个答案:

答案 0 :(得分:2)

尝试:

yum install glibc-devel.i686

如果这不起作用,请检查此解决方案:How to compile a 32-bit binary on a 64-bit linux machine with gcc/cmake