1、建立C文件,构造共享库。
前面和静态链接一样。(https://blog.csdn.net/zl6481033/article/details/85340096)。
-fpic 选项指示编译器生成与位置无关的代码,-shared 选项指示链接器创建一个共享的目标文件。一旦创建了这个库就可以链接到程序中。
2、链接,创建可执行文件。
这样就创建了一个可执行文件,文件的形式使它在运行时可以和libvector.so链接。基本思路是,当创建可执行文件时,静态执行一些链接,然后再程序加载时动态完成链接过程。
动态链接器通过执行下面的重定位完成链接任务:重定位libc.so的文本和数据到某个内存段,重定位libvector.so的文本和数据到另一个内存段,重定位prog21中所有对lib.so和libvector.so定义的符号的引用。
最后,动态链接器将控制传递给应用程序。从这个时刻开始,共享库的位置就固定了并且在程序执行过程中不会改变。