2012-06-12 107 views
1

我试图编译在x64平台(Ubuntu的)X32 LD_PRELOAD,我命令:在64位编译X32位的Ubuntu LD_PRELOAD

g++ -fPIC -m32 -shared -Wl,-soname,test.so -ldl -o test.so test.cpp 

但我发现了错误:

/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/libstdc++.so when searching for -lstdc++ 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/libstdc++.a when searching for -lstdc++ 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/libstdc++.so when searching for -lstdc++ 
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.4.5/libstdc++.a when searching for -lstdc++ 
/usr/bin/ld: cannot find -lstdc++ 
collect2: ld returned 1 exit status 

我该如何解决这个问题? 谢谢!

+0

您可能会丢失一些multilib软件包,或者您的32位标准C++库不在lib路径中。 –

回答

4

您需要安装由您的发行版提供的32位开发包。您看到此错误是因为您没有32位libstdC++链接。

尝试安装Ubuntu的g++-multilib软件包。