gcc编译链接动态库


前言

以下内容主要作为学习记录,有不准确的地方希望帮忙指出来,谢谢


以下是本篇文章正文内容,下面示例可供参考

操作步骤

1.直接生成目标so文件

如下图:
在这里插入图片描述

部分参数说明

-fPIC: 表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的,所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
-shared: 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接。相当于一个可执行文件。

这里没有单独生成 .o 中间文件,直接通过 .cc 文件生成了目标 so 文件。

2.先生成.o中间文件再链接成目标so文件

如下图:
在这里插入图片描述

可以看到,生成 .o文件时也加了-fPIC,如果不加,后面链接时会报错。一般在写Makefile文件时建议用第二种方式,先生成多个.o文件,最后再链接成目标文件。

关于-fPIC编译选项可以参考这篇文章
gcc编译参数-fPIC的一些问题

总结

以上就是在Linux下编译链接动态库的简单示例,记录学习过程,供以后参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值