collect2: error: ld вернул 1 состояние выхода при создании .so файла с кодовыми блоками (64-битная версия) - PullRequest
0 голосов
/ 22 января 2019

Моя проблема заключается в создании .so файла в кодовых блоках, проект, который делает мой .so файл в более старой версии (32-разрядной), завершился неудачей со следующими ошибками в новой версии (64-разрядной)

/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

кодовая строка командной строки

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/liblibTestso.so -m64 -fPIC 

помогите мне решить это, большое спасибо

1 Ответ

0 голосов
/ 27 января 2019

Я видел много ссылок об этой ошибке, никто не ответил четко на мой вопрос, когда вы переходите с 32-битного на 64-битный системный кодовый блок Linux, выдает упомянутую ошибку

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

...