我希望在一个项目中同时构建静态库和共享库。
我知道,共享库需要从使用-fpic编译的对象中创建,以获得独立于位置的代码,而静态库不需要这样做。这一切都很好,我可以创建一个共享库或静态库。
我不想编译我的源代码两次以获得不同的对象文件,那么这通常是如何完成的呢?我读过how to get a shared library based on a static one。但是,该示例显示了正在使用-fpic构建的静态库。这是该走的路吗?这有什么值得注意的吗?
是否存在编译静态库和共享库的通用方法?例如,首先是静态的,并基于库创建共享版本?
我想知道是否有不同的方法,以及在选择.时应该考虑什么。
我在Linux上使用gcc4.4。
提前感谢!
发布于 2011-02-01 14:36:58
实际上,我看到的常见方法是编译您的源代码两次,一次用PIC编译,一次不编译。如果不这样做,就会在静态库中产生PIC开销,或者是一个不能被OS重新定位的共享对象(实际上意味着它不会在库的多个客户端之间共享)。
https://stackoverflow.com/questions/4863791
复制相似问题