构建binutils时,bfd组件无法链接,因为它链接到libiberty的系统版本而不是binutuils / libiberty / lib64 / libiberty.a下的构建版本。
我看不到配置参数允许我覆盖它。指示configure构造LD_LIBRARY_PATH的最佳方法是什么,该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
。
答案 0 :(得分:0)
我查看了生成的automakefile,LDFLAGS只指定了系统库:
LDFLAGS := -L/usr/lib64 -L/usr/lib
所以我将其指定为配置的参数。稍微hacky,但看不出更好的出路:
LDFLAGS="-L./ -L../ -L../libiberty/pic -L/usr/lib64 -L/usr/lib" ./confgiure --enable-shared