Я'м пытаясь связать статические библиотеки в общедоступную библиотеку , я'м получаю следующее сообщение об ошибке
в <предварительно> /usr/Бен/ЛД: ../../../библиотеки/log4cplus/liblog4cplus.а(fileappender.о): R_X86_64_32S переезд против местного символ' не могут быть использованы при создании общих объектов; перекомпилируйте с -спос ../../../библиотеки/log4cplus/liblog4cplus.ответ: не может читать символы: плохо значение взыскать 2: для LD вернулся 1 статус выхода </пред>
Но это работает на 32-битной машине без такой ошибки. Я пробовал добавлять -спосил
флаги вручную Makefile, который тоже ничего'т решить проблему
Я попробовал `-весь-архиве флагом, как предложил here, но без успеха.
в <предварительно> /usr/Бен/ЛД: ../../../библиотеки/log4cplus/liblog4cplus.а(appenderattachableimpl.о): переезд R_X86_64_32S против `vtable для log4cplus::Сио::AppenderAttachable' не могут быть использованы при создании общих объектов; перекомпилируйте с -спос ../../../библиотеки/log4cplus/liblog4cplus.а(appenderattachableimpl.о): не мог читать символы: плохо значение взыскать 2: для LD вернулся 1 статус выхода </пред>
разархивировать log4cplus-1.1.0.zip
./настройки --включить-статический=да --включить-потоки=да
делать
г++ -frtti -ж -с-спос -я Include_Directory и" myfile.cpp
г++ -общие-спос -frtti -я Include_Directory" но-о mysofile.так мой_файл.о-от WL,--все-архиве " от../../../библиотеки/log4cplus/liblog4cplus.а" -от WL,--нет-все-архиве -ЛПНП
Предполагая, что вы создаете общую библиотеку, скорее всего, происходит то, что вариант liblog4cplus.а вы используете это'т скомпилирован с-спос
. В Linux, вы можете подтвердить это путем извлечения файлов из статической библиотеки и проверка их перемещений:
ar -x liblog4cplus.a
readelf --relocs fileappender.o | egrep '(GOT|PLT|JU?MP_SLOT)'
Если вывод пустой, то статическая библиотека не позиционно-независимый и не может использоваться для создания общих объектов.
Поскольку статическая библиотека содержит объектный код, который уже был составлен, обеспечивая -спосил флаг выиграл'т помочь.
Вам нужно связаться с версии `liblog4cplus.в составленном с-спос и использовать это вместо этого.
Я'ве получил аналогичную ошибку при установке ГКЛ, который должен ПЗС Либ(libccd) такой:
/usr/Бен/ЛД: /usr/местные/библиотека/libccd.а(КБО.о): R_X86_64_32S переезд против местного символ' не могут быть использованы при создании общих объектов; перекомпилируйте с -спос
Я считаю, что есть два разных файла по кличке "libccd.а" :
Я решил проблему путем удаления первого файла.
Переезд R_X86_64_PC32 в отношении неопределенного символа , как правило, происходит, когда LDFLAGS устанавливаются с твердеть а CFLAGS не . Может быть, просто ошибка пользователь: Если вы используете -технические характеристики=в/usr/lib В/об / мин/редхат/редхат-закаленные-ЛД во время ссылки, также нужно использовать характеристики=в/usr/lib В/об / мин/редхат/редхат-закаленные-СС1 во время компиляции, и как вы компиляции и компоновки в то же время, вы должны либо оба, либо удалить -технические характеристики=в/usr/lib В/об / мин/редхат/редхат-закаленные-ЛД . Общие исправления : https://bugzilla.redhat.com/show_bug.cgi?id=1304277#c3 https://github.com/rpmfusion/lxdream/blob/master/lxdream-0.9.1-implicit.patch