创建静态和共享C ++库

时间:2011-02-01 14:31:41

标签: c++ gcc shared-libraries static-libraries building

我想在项目中构建静态和共享库

我知道需要从使用-fpic编译的对象创建共享库以获取位置无关代码,而静态库不需要这样。这很好,我可以创建共享库或静态库。

我不想两次编译我的源代码以获取不同的目标文件,所以通常如何做?我看了how to get a shared library based on a static one。但是,该示例显示了使用-fpic构建的静态库。这是要走的路吗?有什么需要注意的吗?

是否有通用方法来编译静态库和共享库?例如。首先是静态的并且基于lib创建了一个共享版本?

我很想知道是否有不同的方法,以及选择时应该考虑什么。

我在Linux上使用gcc4.4。

提前致谢!

1 个答案:

答案 0 :(得分:6)

我见过的常见方法实际上是两次编译你的源,一次使用PIC而一次没有。如果你不这样做,你要么在静态库中使用PIC开销,要么在操作系统无法重新定位的共享对象(实际上意味着它不是在库的多个客户端之间共享)。