2014-09-04 3 views
1

Я только что получил эту ошибку, когда я попытался создать общую библиотеку в моем убунте 14.04 64 битной системы:Ядра сбрасывали при создании разделяемой библиотеки

g++ -Wall -g -Iinclude -c /home/pure/Schreibtisch/TestDLL/src/test.cpp -o obj/Debug/src/test.o 

g++ -shared obj/Debug/src/test.o -o bin/Debug/TestDLL.so 
collect2: error: ld terminated with signal 6 [Abgebrochen], core dumped 
/usr/bin/ld: ld: wcsrtombs.c:99: __wcsrtombs: Zusicherung »data.__outbuf[-1] == '\0'« nicht erfüllt. 

Я также попытался сделать простую разделяемую библиотеку из простых класс с пустым конструктором и пустой деструктор, пришла такая же ошибка.

Может ли кто-нибудь помочь мне, как это исправить? Если вам нужна дополнительная информация, я могу сказать им.

чистый @ чисто QOSMIO-X500: ~ $, что г ++

/usr/bin/g++

чистый @ чистокровные QOSMIO-X500: ~ $ г ++ --version

g++ (Ubuntu 4.8.2-19ubuntu1) 4.8.2 Copyright (C) 2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

И это:

LC_ALL=C g++ -shared /home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o -o /home/pure/Schreibtisch/TestDLL/libTestDLL.so

возвращается сейчас:

/usr/bin/ld: /home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o: relocation R_X86_64_32S against `_ZTV4test' can not be used when making a shared object; recompile with -fPIC /home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o: error adding symbols: Bad value collect2: error: ld returned 1 exit status

+0

Анализ основного файла с помощью 'gdb'. – 0x499602D2

+0

Попробуйте создать тот же исходный код в английской системе. –

+0

Да, пожалуйста, сделайте что-то вроде экспорта LC_ALL = C (или аналогичного для вашей оболочки) перед запуском процесса компиляции. –

ответ

1

/usr/bin/ld: /home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o: relocation R_X86_64_32S against `_ZTV4test' can not be used when making a shared object; recompile with -fPIC /home/pure/Schreibtisch/TestDLL/obj/Debug/src/test.o: error adding symbols: Bad value collect2: error: ld returned 1 exit status

Я не знаю, почему вы получаете сбой с вашей родной локалью (немецкий язык) и полезное сообщение об ошибке с использованием стандартного языкового стандарта. Однако теперь сам компоновщик сообщает вам, что не так: вы не скомпилировали свой объектный код с -fPIC.

PIC означает позиции независимого кода и необходим для разделяемых библиотек, потому что их расположение в памяти не известно заранее. Например, код, созданный с помощью -fPIC, использует относительные, а не абсолютные адреса для переходов.

+0

Получил, никаких ошибок, скомпилировал и получил общую библиотеку сейчас! Благодаря! – PuRe

Смежные вопросы