7

我想在一个项目中同时构建静态库和共享库。

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

我不想编译我的源代码两次以获得不同的目标文件,那么这通常是如何完成的呢?我阅读了如何获取基于静态库的共享库。但是,该示例显示了使用 -fpic 构建的静态库。这是要走的路吗?有什么需要注意的吗?

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

我很想知道是否有不同的方法来解决这个问题以及选择时要考虑什么。

我在 Linux 上使用 gcc4.4。

提前致谢!

4

1 回答 1

6

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

于 2011-02-01T14:36:58.760 回答