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 文件一起打包,会有问题。

目录
相关文章
|
29天前
|
安全 Linux 网络安全
Linux环境中安装和使用Paramiko
Linux环境中安装和使用Paramiko
84 12
|
28天前
|
Java 关系型数据库 MySQL
Linux环境
Linux环境
34 5
|
5天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
70 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
2天前
|
Linux UED iOS开发
|
7天前
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
|
10天前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
13 3
|
13天前
|
Linux API 开发工具
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
ijkplayer是由B站研发的移动端播放器,基于FFmpeg 3.4,支持Android和iOS。其源码托管于GitHub,截至2024年9月15日,获得了3.24万星标和0.81万分支,尽管已停止更新6年。本文档介绍了如何在Linux环境下编译ijkplayer的so库,以便在较新的开发环境中使用。首先需安装编译工具并调整/tmp分区大小,接着下载并安装Android SDK和NDK,最后下载ijkplayer源码并编译。详细步骤包括环境准备、工具安装及库编译等。更多FFmpeg开发知识可参考相关书籍。
55 0
FFmpeg开发笔记(五十九)Linux编译ijkplayer的Android平台so库
|
18天前
|
Ubuntu Linux 编译器
Linux/Ubuntu下使用VS Code配置C/C++项目环境调用OpenCV
通过以上步骤,您已经成功在Ubuntu系统下的VS Code中配置了C/C++项目环境,并能够调用OpenCV库进行开发。请确保每一步都按照您的系统实际情况进行适当调整。
165 3
|
2月前
|
Oracle Java 关系型数据库
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
如果遇到"exec format error"问题,文章建议先检查Linux操作系统是32位还是64位,并确保安装了与系统匹配的JDK版本。如果系统是64位的,但出现了错误,可能是因为下载了错误的JDK版本。文章提供了一个链接,指向Oracle官网上的JDK 17 Linux版本下载页面,并附有截图说明。
Linux下JDK环境的配置及 bash: /usr/local/java/bin/java: cannot execute binary file: exec format error问题的解决
|
24天前
|
Unix Linux Go
Linux 使用Yum安装Go和配置环境
Linux 使用Yum安装Go和配置环境