0

我的命令有什么问题?我想在 x86 g++ 上编译 x64 ld_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行测试.cpp

#include <set>

安装包 g++-multilib。

更新

文件搜索:

#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

bits/c++config.hGNU C++ 库中的文件依赖于体系结构。

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 回答