Компиляция x32-битного LD_PRELOAD на 64-битной Ubuntu
Я пытаюсь скомпилировать x32 LD_PRELOAD на платформе x64 (Ubuntu), моя команда:
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
Как я могу это исправить? Спасибо!
1 ответ
Решение
Вам необходимо установить 32-битные пакеты разработки, предоставляемые вашим дистрибутивом. Вы видите эту ошибку, потому что у вас нет 32-битного libstdC++ для ссылки.
Попробуйте установить Ubuntu g++-multilib
пакет.