无法使用x86 g ++编译x64 LD_PRELOAD

时间:2012-06-12 14:00:17

标签: c++ compilation g++

我的命令怎么了?我想在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行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

谢谢!

1 个答案:

答案 0 :(得分: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

存在。