循环链接静态库(linux)未定义的库

时间:2011-07-31 15:46:50

标签: static-libraries

我为静态库做了一个构建,然后放在一个位置。现在,当我构建我的源代码时,我得到UNDEFINED REFERENCES用于库间调用。例如:

  

/home/xyz/lib/libA.a(ClassA.a):对classB::funB()

的未定义引用

此处classB.a也是一个静态库。

在我的源代码项目文件中,静态链接顺序为:

LIBS+=   -lclassB -lclassA

现在当我反转库顺序时,我开始在库B的类中获取库A中的函数调用错误。

2 个答案:

答案 0 :(得分:2)

对于这种情况,您通常需要例如。

LIBS += -lclassA -lclassB -lclassA

将classA库链接两次有助于解决循环依赖关系。

答案 1 :(得分:0)

好的朋友,我找到了解决方案。

我在gcc上使用qmake构建工具,我只是要告诉qmake我的一些静态库是循环依赖的。

所以我用qmake链接器标志修改了我的.pro文件

   QMAKE_LFLAGS += -Wl , --start-group --end-group

gcc的文档说你需要把你的档案名称放在--start-group --end-group之间,但是qmake足够聪明,可以找到依赖的库,并且会自动完成。

玩得开心。