C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 静态编译共享库大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有一些自制函数的共享库,我将其编译到我的其他程序中,但是我必须将结束程序与我用来编译静态库的所有库相关联.这是一个例子:

我在库中有函数foo,它需要来自另一个库libbar.so函数.

在我使用函数foo的主程序中,我必须用-lbar标志编译它.有没有办法可以静态编译我的库,所以它包含了其他库中的所有必需代码,我可以编译我的结束程序而不需要-lbar标志?

解决方法

共享对象(.so)不是库,它们是对象.您无法提取部分内容并将其插入其他库中.

如果构建引用另一个的共享对象,您可以做什么 – 但在运行时需要另一个.只需在链接libfoo时添加-lbar即可.

如果你能够构建libbar,你显然可以创建一个libfoo和libbar组合的库. IIRC,你也可以通过链接.a和.o意图进入libbar,使链接器构建一个libfoo库和libbar所需的部分.例:

@H_618_14@gcc -fPIC -c lib1.c # define foofn(),reference barfn1() gcc -fPIC -c lib2a.c # define barfn1(),reference barfn2() gcc -fPIC -c lib2b.c # define barfn2() gcc -fPIC -c lib2c.c # define barfn3() gcc -c main.c # reference foofn() ar -cru libbar.a lib2*.o gcc -shared -o libfoo.so lib1.o -l. -lbar nm libfoo.so | grep barfn2() # ok,not here gcc -o prog main.o -l. -lfoo env LD_LIBRARY_PATH=. ./prog # works,so foofn(),barfn1() and barfn2() are found

大佬总结

以上是大佬教程为你收集整理的c – 静态编译共享库全部内容,希望文章能够帮你解决c – 静态编译共享库所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。