2012-07-20 60 views
4

我試圖在64位主機(運行CentOS 5.8)上建立valgrind(3.7.0)。我需要使用valgrind來檢查32位程序(建立在32位主機上,我需要32位程序,因爲程序需要在32位和64位主機上運行)的性能。在64位CentOS 5主機上建立32位

問題是我的64位主機沒有gcc,所以我使用「sudo yum install gcc」和斯坦福大學的回購鏡像安裝了gcc(這個64位主機的默認回放是不可用的,因此yum是計時出)。這允許我構建valgrind,並且它適用於本地的東西(例如「valgrind ls -l」),但是在嘗試運行我在另一個主機上構建的32位程序時失敗。我終於明白,valgrind的配置腳本檢測到我沒有在主機上的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」

OK,這裏是瓢,由於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是否足夠本身)。

我通過檢查configure腳本並看到它試圖編譯一個帶有「-m32」的最小C程序並且如果失敗,那麼配置腳本報告「沒有32位支持」來尋找正確的問題。所以我創建了經典的HelloWorld C程序並編譯它(「cc -m32 hello.c」)。這抱怨缺少頭文件「gnu/stubs-32.h」。所以谷歌搜索「什麼軟件包有gnu/stubs-32.h」將我帶到上面引用的stackoverflow頁面。

回答