2012-06-12 105 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軟件包。