我有一个的libstdc ++ _ pic.a我的系统(Ubuntu的12.04,GCC 4.6.3)上,想必这是-fPIC创建的libstdc ++版本。 我也有一个的libstdc ++。一。
我看到下面的错误,当我尝试静态链接的libstdc ++与通过-static-的libstdc ++链接标志的共享库:
:-1: error: /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a(functexcept.o): relocation R_X86_64_32 against `std::bad_exception::~bad_exception()' can not be used when making a shared object; recompile with -fPIC
所以我假设它是利用非PIC的版本,因为我希望基于默认命名。 我怎么可以指示使用的libstdc ++ _ pic.a文件的链接?
更新1 _pic版本是在32位的gcc子/usr/lib/gcc/x86_64-linux-gnu/4.6/32
,我也不在了64个版本所在的父文件夹看_pic版本。 看来,我的gcc版本不能在64位PIC静态的libstdc ++编译。
更新2我能安装的libstdc 64位版本++ _通过检查我的gcc版本,然后安装包pic.a:
gcc --version gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3 sudo apt-get install libstdc++6-4.6-pic
现在我看到它在/usr/lib/gcc/x86_64-linux-gnu/4.6/
。 仍然需要弄清楚如何告诉链接器使用它。