【发布时间】:2016-02-22 22:09:36
【问题描述】:
我需要创建一个共享库,它自己的依赖项(包括 libc/libstdc++)必须静态链接到它以生成一个独立的二进制文件。我试着这样做
g++ -c -fpic -o foo.o foo.cpp
g++ -static -shared -o foo.so foo.o
失败:
/usr/bin/ld.bfd.real: /usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/crtbeginT.o: relocation R_X86_64_32 against `__TMC_END__' can not be used when making a shared object; recompile with -fPIC
/usr/local/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/crtbeginT.o: could not read symbols: Bad value
collect2: error: ld returned 1 exit status
谁能告诉我我做错了什么?
【问题讨论】:
-
-fPIC可能区分大小写。不知道是不是这个问题。 -
@Simple:我尝试使用
-fPIC,但仍然遇到同样的错误。 -
试试
-static-libstdc++。有关相关链接选项,请参阅 gcc.gnu.org/onlinedocs/gcc/Link-Options.html。 -
@Simple,如果
-fpic无效,则会出现错误。它区分大小写,但-fpic和-fPIC都是有效选项(某些目标略有不同,请参阅手册)。
标签: c++ shared-libraries static-linking