Linux环境封装静态库

简介: Linux环境封装静态库

先解释 一下 编译静态库 跟 封装静态库的 区别,编译静态库 就是前文中的 把多个 .o 文件打包成一个 libxxx.a 静态库。

而 封装静态库 是已经有一个第三方的 静态库,我们想在 这个第三方静态库 上面再加一些功能,提供给客户使用。

还是以之前的 poseidon (波塞冬)项目为基础。现在又来了一位新大佬,hades (冥王),这位大佬除了 可以操作 3颗 星球之外,还可以控制世间万物的生死。

所以我们需要基于 libstart.a ,再加一些功能给 hades 用。相关文件我已经创建好了,下载 hades 即可,提取码:wfny 。



把 hades 放在 Document 目录下,如下图:

我新建了 两个 文件 dog.c 跟 pig.c ,冥王可以控制 猪 跟 狗死亡。

现在开始封装 新的静态库 libpower.a ,命令如下:

gcc -c -o dog.o dog.c
gcc -c -o pig.o pig.c
# 解压原来的静态库
ar -x libstar.a
ar -rcs libpower.a moon.o sun.o earth.o dog.o pig.o

编译新的静态库,需要先解压。用 objdump 查看一下 libpower.a 的内容:

objdump -d libpower.a > libpower.txt

实际上,就是解压之后,再打包,我们使用第三方项目的静态库的时候也可以这样,先解压,再打包我们自己的 .o 文件进去。


libpower.a 这个静态库的使用方法,也是跟之前类似的,可以把它放到 /usr/lib 下面,然后用以下命令编译:

sudo mv libpower.a /usr/lib
gcc -c -o hades.o hades.c
gcc -o hades hades.o -static -lpower

至此,封装第三方静态库的方法讲解完毕,实际上就是解压,然后再打包压缩。

如果你不解压,直接把 libstar.a 跟其他两个 .o 文件一起打包,会有问题。

目录
相关文章
|
3天前
|
Ubuntu Linux 编译器
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
【Linux】详解动静态库的制作和使用&&动静态库在系统中的配置步骤
|
2天前
|
Linux vr&ar C语言
|
5天前
|
关系型数据库 MySQL Linux
在Linux系统上实现高效安装与部署环境的全方位指南
在Linux系统上实现高效安装与部署环境的全方位指南
|
6天前
|
JSON Java Linux
【探索Linux】P.30(序列化和反序列化 | JSON序列化库 [ C++ ] )
【探索Linux】P.30(序列化和反序列化 | JSON序列化库 [ C++ ] )
20 2
|
6天前
|
存储 Linux 编译器
【探索Linux】P.13(文件系统 | 软硬链接 | 动态库和静态库)
【探索Linux】P.13(文件系统 | 软硬链接 | 动态库和静态库)
12 0
|
6天前
|
运维 NoSQL Linux
linux环境收集core文件步骤
请注意,生成core文件可能会占用磁盘空间,因此应谨慎使用。一旦完成故障排查,建议将相关的core文件删除以释放磁盘空间。
32 5
|
6天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
24 5
|
7天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
15 3
|
8月前
|
安全 Linux 测试技术
配置Goby工具环境(win,linux,macOS)
配置Goby工具环境(win,linux,macOS)
362 2