gcc笔记——动态库

首次编辑:24/8/17/16:55
最后编辑:24/8/17/17:18

位置无关代码

动态库应该被编译为位置无关的代码,在这种情况下,glocal offset table这张表记录着所有动态链接符号的位置。

-fpic-fPIC选项都可以生成位置无关的代码。前者编译出更快的代码,但对于global offset table的尺寸有限制,后者则没有。

三种名字

动态库的创建

  1. 位置无关的目标文件
gcc -fpic -c source1.c source2.c
  1. 位置无关的动态库
gcc -fpic source1.o source2.o -shared -Wl,-soname,libsource.so.1 -o libsource.so.1.1

-Wl作用是将后面的选项传递给链接器ld。-soname表示在目标库中嵌入soname信息,这样当有可知性文件需要调用库source的时候,就会通过这个soname信息来寻找拥有相同soname的动态库。

参考

评论