0

私のコマンドの何が問題になっていますか?x86 g++でx64ld_preloadをコンパイルしたいのですが、次のコマンドを実行します。

g ++ -fPIC -m64 -shared -Wl、-soname、test.so -ldl -o test.so test.cpp

エラー

/usr/include/c++/4.4/bits/stl_tree.h:62、/usr/include/c++/4.4/set:60、test.cpp:17からインクルードされたファイル:/usr/include/c++/4.4 /bits/stl_algobase.h:60:致命的なエラー:bits / c ++ config.h:そのようなファイルまたはディレクトリのコンパイルは終了しませんでした。make:* [test.so]エラー1

17行test.cpp

#include <set>

パッケージg++-multilibがインストールされています。

upd

ファイル検索:

#include <...> search starts here:
 /usr/include/c++/4.4
 /usr/include/c++/4.4/backward
 /usr/local/include
 /usr/lib/gcc/i686-linux-gnu/4.4.5/include
 /usr/lib/gcc/i686-linux-gnu/4.4.5/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include

ありがとう!

4

1 に答える 1

1

GNU C++ ライブラリのファイルbits/c++config.hはアーキテクチャに依存します。

32ビット版は

 /usr/include/c++/4.4/i486-linux-gnu/bits/c++config.h

またはディストリビューションに応じて同様。

32 ビット プラットフォームでは、64 ビット バージョンが

 /usr/include/c++/4.4/i486-linux-gnu/64/bits/c++config.h

編集

検索されるディレクトリを確認するには、次のように入力します。

$ g++ -m64 -c -v test.cpp

次のようなものを報告する必要があります

Using built-in specs.
Target: i486-linux-gnu
...
#include <...> search starts here:
 /usr/include/c++/4.4
 /usr/include/c++/4.4/i486-linux-gnu/64
 /usr/include/c++/4.4/backward
 /usr/local/include
 /usr/lib/gcc/i486-linux-gnu/4.4.1/include
 /usr/lib/gcc/i486-linux-gnu/4.4.1/include-fixed
 /usr/include/x86_64-linux-gnu
 /usr/include

かどうかを確認する必要があります

 /usr/include/c++/4.4/i486-linux-gnu/64

リストに載っています。

また、ファイル

/usr/include/c++/4.4/i486-linux-gnu/64/bits/c++config.h

存在します。

于 2012-06-12T14:50:07.193 に答える