写点什么

Linux 环境混合使用静态库与动态库

作者:Loken
  • 2022 年 5 月 27 日
  • 本文字数:500 字

    阅读完需:约 2 分钟

目前 静态库 跟 动态库 编译,使用的方法都讲了一遍。但是在实际工程项目里面,可能会遇到一些第三方提供的动态库,跟一些第四方提供的静态库。

这些库都需要链接进去你自身的项目进行调用,本文主要讲解混合调用的方式。

还是以之前的例子为基础,libstar.so 动态库已经编译好,并且放置在 /usr/local/star/lib 目录下。现在来了一个新的大佬 theseus (波塞冬的儿子忒修斯)。

忒修斯 不但可以操作 3 颗星球,还会做饭。所以我们需要封装一个 libcook.a 静态库给 忒修斯 调用,完整的项目下载,theseus ,提取码:3yil

下载完成 theseus 项目之后,请放置到 Document 项目,如下图:



开始执行以下命令开始编译:

cd ~/Documents/theseus/libcookgcc -c -o chicken.o chicken.cgcc -c -o fish.o fish.cgcc -c -o noodle.o noodle.car -rcs libcook.a noodle.o fish.o chicken.o# 把 libcook.a 移动到 /usr/libsudo mv libcook.a /usr/lib
复制代码

继续编译:

cd ~/Documents/theseusgcc -c -o theseus.o theseus.cgcc -o theseus theseus.o -Wl,-Bstatic -lcook -Wl,-Bdynamic -lstar -L/usr/local/star/lib
复制代码

运行结果如下:



这样 libstar 就是动态链接,而 libcook 就是静态链接。

发布于: 刚刚阅读数: 4
用户头像

Loken

关注

音视频工程师 2022.04.21 加入

音视频工程师,个人博客 www.xianwaizhiyin.net

评论

发布
暂无评论
Linux环境混合使用静态库与动态库_音视频_Loken_InfoQ写作社区