我正在尝试为没有足够运行它的libstdc ++的系统编译共享库,这意味着我需要将libstdc ++静态链接到库中。我试图直接链接到libstdc ++。(-Wl,-Bstatic -L/path/to/lib64 -lstdc++
),但是我收到的错误似乎表明我的libstdc ++。a与PIC没有关联:
/usr/bin/ld: lib64/libstdc++.a(compatibility.o): relocation R_X86_64_32 against `typeinfo for __cxxabiv1::__forced_unwind' can not be used when making a shared object; recompile with -fPIC
lib64/libstdc++.a: could not read symbols: Bad value
我尝试用CFLAGS =" -fPIC"重新编译GCC。和CXXFLAGS =" -fPIC",但似乎没有做任何事情。
帮助?
答案 0 :(得分:6)
我们的想法是将--with-pic
选项传递给configure
。 GCC构建是一个非常复杂的具有多个阶段的野兽,因此简单地传递CFLAGS变量可能无法按预期工作。
答案 1 :(得分:0)
阅读GCC configure documentation。我在构建--enable-host-shared
时使用了这个标志GCC
,如说明中所述:
指定主机代码应构建为与位置无关的 机器代码(带-fPIC),允许在共享中使用 库,但产生稍慢的编译器。