我的命令怎么了?我想在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
谢谢!
答案 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
存在。