binutils bfd ссылается на системный iberty вместо встроенного iberty

При сборке binutils компонент bfd не может связать, потому что он связывается с системной версией libiberty, а не со встроенной версией в binutuils/libiberty/lib64/libiberty.a.

Я не вижу аргумента конфигурации, позволяющего мне переопределить это. Каков наилучший способ указать configure для создания LD_LIBRARY_PATH, который предпочитает библиотеки из других компонентов своей сборки над системными версиями? Очевидно, что для этого нужны системные библиотеки, которые являются необходимыми условиями, поэтому я не могу полностью исключить этот путь.

Это ошибка из-за неправильной компиляции версии системы. Версия под binutils/libiberty/lib64 компилируется с -fPIC, поэтому мне нужно указать configure для использования этого.

/lib64/libiberty.a(cplus-dem.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC

Это не кажется тривиальным, чтобы указать .:/usr/lib64:/lib64 поскольку . является binutils/bfd,

1 ответ

Я посмотрел на сгенерированный файл автозапуска, а LDFLAGS указывал только системные библиотеки:

LDFLAGS := -L/usr/lib64 -L/usr/lib

Поэтому я указал это в качестве аргумента для настройки. Немного хакерский, но лучшего выхода не вижу:

LDFLAGS="-L./ -L../ -L../libiberty/pic -L/usr/lib64 -L/usr/lib" ./confgiure --enable-shared
Другие вопросы по тегам