创建静态和共享C++库
问题描述:
我想在项目中构建静态和共享库。创建静态和共享C++库
我知道共享库需要用-fpic编译的对象来创建,以获得位置无关的代码,而静态库不需要这个。这一切都很好,我可以创建一个共享或静态库。
我不想编译我的源码两次以获得不同的目标文件,那么通常如何实现?我读了how to get a shared library based on a static one。但是,该示例显示了正在使用-fpic构建的静态库。这是要走的路吗?有什么东西要注意这个吗?
是否有常用方法来编译静态库和共享库?例如。首先静态并基于lib创建一个共享版本?
我很想知道是否有不同的方法和选择时需要考虑的问题。
我在Linux上使用gcc4.4。
在此先感谢!
答
我见过的常见方法实际上是两次编译源码,一次是PIC,一次没有。如果你不这样做,你最终会在静态库中产生PIC开销,或者操作系统无法重定位的共享对象(实际上意味着它不在库的多个客户端之间共享)。
对于这种方法,如果想同时创建静态库和共享库,那么如何安排目标文件?类似于obj/static/...和obj/shared/...? – murrekatt 2011-02-01 14:44:48