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