将静态库转换为共享库?
- 2024-10-29 08:35:00
- admin 原创
- 58
问题描述:
我有一个第三方库,主要由大量静态(.a
)库文件组成。我可以将其编译为单个.a
库文件,但我确实需要它是一个单个.so
共享库文件。
有没有办法将静态.a
文件转换为共享.so
文件?或者更一般地说,有没有一种好的方法可以将大量静态.a
文件与少量.o
目标文件合并为一个.so
文件?
解决方案 1:
这样做(当然要使用适当的 -L)
gcc -shared -o megalib.so foo.o bar.o -la_static_lib -lb_static_lib
不做嗎?
解决方案 2:
如果静态库中的对象是在没有 -fPIC 或类似选项的情况下编译的,则无法执行此操作。
解决方案 3:
g++ -shared -o megalib.so foo.o bar.o -Wl,--whole-archive -la_static_lib -lb_static_lib -Wl,--no-whole-archive -lc_static_lib -lother_shared_object
我不确定 gcc 是否如此,但对于 g++,我必须添加 --whole-archive 链接器选项,以便将静态库中的对象包含在共享对象中。如果要链接到 libc_static_lib.a 和 libother_shared_object.so,但不将它们作为一个整体包含在 megalib.so 中,则必须使用 --no-whole-archive 选项。
解决方案 4:
ar -x
`.a`如果您想要专注于s 中的特定对象并且不想自己添加任何内容,那么这也很有用。
例子:
ar -x lib***.a
gcc -shared *.o -o lib***.so
解决方案 5:
ar -x lib***.a
gcc -shared *.o -o lib***.so
相关推荐
热门文章
项目管理软件有哪些?
- 2024年20款好用的项目管理软件推荐,项目管理提效的20个工具和技巧
- 2024年开源项目管理软件有哪些?推荐5款好用的项目管理工具
- 项目管理软件有哪些?推荐7款超好用的项目管理工具
- 项目管理软件哪个最好用?盘点推荐5款好用的项目管理工具
- 项目管理软件有哪些最好用?推荐6款好用的项目管理工具
- 项目管理软件有哪些,盘点推荐国内外超好用的7款项目管理工具
- 2024项目管理软件排行榜(10类常用的项目管理工具全推荐)
- 项目管理软件排行榜:2024年项目经理必备5款开源项目管理软件汇总
- 2024年常用的项目管理软件有哪些?推荐这10款国内外好用的项目管理工具
- 项目管理必备:盘点2024年13款好用的项目管理软件
热门标签
云禅道AD