我想在eclipse CDT(RHEL 6.3)中编译可执行文件。我想链接几个库 - 其中一些是静态的,一些是共享的。由于链接器,顺序很重要。
我在settings -> linker -> libraries
下编写了共享库
为了避免使用.so
优先于.a
库的链接器属性,我想编写静态库的完整路径,因此我无法在settings -> linker -> libraries
中编写它 - 因为它会获得-l
选项 - 这不是正确的。我必须在settings -> linker -> miscellaneous
。
编写我的静态库时,我害怕链接器获取.so
库,因为某些库可能位于/usr/lib
路径中,因此链接器会更喜欢.so
那里的lib(即使我告诉他在哪里查找我的静态库-L
),会有两个库,在不同的路径中具有相同的名称,一个.so
,另一个{{ 1}},所以链接器将选择.a
。
我不想从.so
删除库。
现在出现问题:
对于优化,库需要依赖于顺序(来自链接器),eclipse尝试首先链接/usr/lib
,然后链接miscellaneous
(或相反) - 但我是顺序在"更高的分辨率",有一些共享库依赖于静态库,反之亦然。
这个问题有解决方案吗? 我可以在其他地方编写静态库,以便它与共享库一致吗?