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.


person Craig    schedule 29.08.2013    source источник


Ответы (1)


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

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

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

LDFLAGS="-L./ -L../ -L../libiberty/pic -L/usr/lib64 -L/usr/lib" ./confgiure --enable-shared
person Craig    schedule 29.08.2013