saide_a Ответов: 4

Перемещение R_X86_64_PC32 против символа в кодовых блоках


всем привет
моя проблема заключается в создании файла .so в codeblocks , проект, который делает мой файл .so в старой версии(32 бит), не удался со следующими ошибками в новой версии(64 бит)
g++ -Wall -fexceptions -g -Iinclude -c /home/amini/codes/testr/main.cpp -o obj/Debug/main.o
g++ -Wall -fexceptions -g -Iinclude -c /home/amini/codes/testr/src/tester.cpp -o obj/Debug/src/tester.o
g++ -shared  obj/Debug/main.o obj/Debug/src/tester.o  -o bin/Debug/libtestr.so -fPIC  
/usr/bin/ld: obj/Debug/src/tester.o: relocation R_X86_64_PC32 against symbol `_ZTV6tester' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status


Что я уже пробовал:

когда я добавляю команду в опцию compilor, только последняя командная строка получает-fPIC
как я могу добавить его ко всем командам для создания всех объектных файлов,
Я протестировал его в терминале linux он решает мою проблему

Richard MacCutchan

Отредактируйте файлы make или установите их в качестве глобальной переменной, как описано в документации g++.

saide_a

в codeblocks где я могу его добавить

Richard MacCutchan

Извините, понятия не имею, я никогда не пользовался кодовыми блоками. Но опять же я бы посоветовал вам проверить документацию.

4 Ответов

Рейтинг:
2

saide_a

добавляя опцию-fPIC к компилятору, проблема не решается, потому что другие объектные файлы не работают с этой опцией, тогда вы должны перейти к настройке> compiler> other setting> advance option и добавить туда-fPIC


Рейтинг:
2

Werner Cloete

Я обнаружил, что закрытие блоков кода::, его повторное открытие и перестройка моего проекта работают.


Рейтинг:
1

Werner Cloete

Я обнаружил, что закрывающий код::Blocks, открывая его снова и перестраивая мой проект, работал.


Рейтинг:
1

Werner Cloete

Я обнаружил, что закрытие блоков кода, его повторное открытие и перестройка моего проекта работают.