ошибка перемещения общей библиотеки R_X86_64_PC32 - PullRequest
2 голосов
/ 16 марта 2012

Я пытаюсь создать 32-битную библиотеку на 64-битной версии Ubuntu. Я создаю .so следующим образом

gcc - общий доступ -Wl, -soname, libtest.so * .o

Я получаю / usr / bin / ld: перемещение R_X86_64_PC32 против символа "set_bright" не может использоваться при создании общего объекта; перекомпилировать с -fPIC.

Я уже пытался скомпилировать с -fPIC. Это не сработало.

Пожалуйста, дайте мне знать, если мне нужно использовать какой-либо флаг при компиляции .c или какой-либо флаг при создании .so

спасибо,

1 Ответ

1 голос
/ 16 марта 2012

Я полагаю, что вы получите эту ошибку, если вы вызываете функцию, объявленную как скрытую, например,

int set_hidden(void) __attribute__((visibility("hidden")));

, и она не определена в том же общем объекте.

Чтобы решить ееВы также должны связать объектный файл, содержащий определение set_hidden, или удалить вызов к нему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...