有
-static
和没有 -static
有什么区别
当我使用 gcc 编译共享库时
-static
我遇到错误
/usr/sbin/ld.gold: error: /usr/lib/gcc/x86_64-pc-linux-gnu/13.2.1/crtbeginT.o: requires dynamic R_X86_64_32 reloc against '__TMC_END__' which may overflow at runtime; recompile with -fPIC
当我用Google搜索这个错误的解决方案时,我发现这似乎是一个经典问题。
如果我想让它发挥作用,我就应该这样做。
cp crtbeginS.o crtbeginT.o
所以,如果我使用gcc编译动态库,有
-static
和没有-static
有什么区别。
而且,我应该用
-static
编译一个共享库吗?
顺便说一句,当我在bazel中使用cc_shared_libray构建共享库时,也会出现这个错误,看来cc_shared_library默认使用
-static
编译共享库
只需使用-shared 而不是-static