前言
以下内容主要作为学习记录,有不准确的地方希望帮忙指出来,谢谢
以下是本篇文章正文内容,下面示例可供参考
操作步骤
1.直接生成目标so文件
如下图:
部分参数说明
-fPIC: 表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的,所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
-shared: 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件。
这里没有单独生成 .o 中间文件,直接通过 .cc 文件生成了目标 so 文件。
2.先生成.o中间文件再链接成目标so文件
如下图:
可以看到,生成 .o文件时也加了-fPIC,如果不加,后面链接时会报错。一般在写Makefile文件时建议用第二种方式,先生成多个.o文件,最后再链接成目标文件。
关于-fPIC编译选项可以参考这篇文章
gcc编译参数-fPIC的一些问题