Компиляция 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 пакет.

Другие вопросы по тегам