Linux环境封装静态库成动态库—编译链接基础知识

作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音

前文《Linux环境封装静态库》是把往一个静态库加一些内容,封装成新的静态库,实际上就是解开 .a 还原成 .o 文件,再重新打包。

但是可能会有这么一种情况, 我们需要 把 libstar.a 加上控制生死的代码,封装成 libpower.so 动态库给 hades (冥王)使用。

其实也可以 把 libstar.a 解开还原成 多个 .o 文件,再一起编译出动态库。

那可不可以不解开,直接使用 ibstart.a,如下:

gcc -fPIC -shared -o libpower.so libstar.a dog.o pig.o 
ldd -r libpower.so
gcc -o hades hades.o libpower.so

linux-c-shared2-1-1

从上图可以看出,虽然可以正常生成动态库,但是链接到 hades 的时候直接报错了。为什么会报错,我也不知道,埋个坑,后面填。

因此,还是需要 解开还原成 多个 .o 文件,再一起编译出动态库,如下:

ar -x libstar.a
gcc -fPIC -shared -o libpower.so dog.o pig.o moon.o earth.o sun.o
gcc -o hades hades.o libpower.so

linux-c-shared2-1-2



感谢 NETINT(镕铭微电子) 赞助《FFmpeg原理》免费版一书的服务器费用,下面是 VPU 产品介绍

版权所属 xianwanzhiyin.net 罗上文 2024 all right reserved,powered by Gitbook该文件修订时间: 2023-09-01 23:51:56

results matching ""

    No results matching ""