64 ビット ホスト (CentOS 5.8 を実行) で valgrind (3.7.0) をビルドしようとしています。32 ビット プログラムのパフォーマンスを調べるには、valgrind を使用する必要があります (32 ビット ホスト上に構築されています。プログラムは 32 ビットおよび 64 ビット ホストで実行する必要があるため、32 ビットが必要です)。
問題は、私の 64 ビット ホストに gcc がなかったことです。そのため、スタンフォード大学のリポジトリ ミラーで「sudo yum install gcc」を使用して gcc をインストールしました (この 64 ビット ホストのデフォルトのリポジトリが利用できなかったため、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」です
OK、これがスクープです。Nachos ソース コードのコンパイル中に発生したエラー「gnu/stubs-32.h: No such file or directory」のおかげです。
簡単な答えは、おそらく他のパッケージに加えて、glibc-devel.i386 をインストールすることです (CentOS 5.8 では ... 異なるディストリビューションでは異なる名前が付けられています。たとえば、glibc-devel.i686、libc6-dev-i386 など)。上にリストしました (glibc-devel.i386 だけで十分かどうかを確認するために、それらをアンインストールしませんでした)。
configure スクリプトを調べて、「-m32」を指定して最小限の C プログラムをコンパイルしようとすることを確認し、それが失敗した場合、configure スクリプトは「32 ビット サポートなし」と報告することで、検索する正しい質問にたどり着きました。そこで、古典的な HelloWorld C プログラムを作成してコンパイルしました ("cc -m32 hello.c")。これは、欠落しているヘッダー ファイル「gnu/stubs-32.h」を訴えていました。そのため、「どのパッケージに gnu/stubs-32.h が含まれているか」を Google 検索すると、上記で引用したスタックオーバーフローのページにたどり着きました。