首页 文章

使用静态链接的libstdc创建共享库时失败

提问于
浏览
1

在64位x86机器中使用gcc 4.5.1,我首先按如下方式创建a.o:g -fPIC -c a.cc -o a.o

然后尝试创建liba.so如下:g -static-libstdc -shared -W1,-soname,liba.so -o liba.so.1.0.0 a.o

但失败了,并提供以下信息:在创建共享对象时,不能使用针对`vtable for __gnu_cxx :: stdio_filebuf>的重定位R_X86_64_32S;用-fPIC重新编译

我尝试重新编译libstdc库,添加了-fPIC,但无论如何都失败了

2 回答

  • 0

    There是关于stackoverflow关于此主题的类似问题,它引用了关于libstdc的静态链接的external site .

  • 0

    我希望静态libstdc库不是用 -fPIC 构建的,因此无法链接到共享库 .

    从理论上讲,你可以将非PIC编译的代码放入动态库中,但它不可共享(每个使用它的程序都必须有自己的副本)所以它通常没有实现 .

    您将需要链接共享C库,使您自己的库成为静态库,或者自己重建libstdc并从构建目录中获取.o文件 .

相关问题