首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环链接静态库(linux )未定义库

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

Stack Overflow用户
提问于 2011-07-31 15:46:49
回答 2查看 584关注 0票数 1

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

/home/xyz/lib/libA.a(ClassA.a):对classB::funB()的未定义引用

这里,classB.a也是一个静态库。

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

代码语言:javascript
复制
LIBS+=   -lclassB -lclassA

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

EN

回答 2

Stack Overflow用户

发布于 2011-07-31 18:45:36

对于这种情况,你通常需要。

代码语言:javascript
复制
LIBS += -lclassA -lclassB -lclassA

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

票数 2
EN

Stack Overflow用户

发布于 2011-08-09 05:49:00

好了,朋友们,我找到了解决办法。

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

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

代码语言:javascript
复制
   QMAKE_LFLAGS += -Wl , --start-group --end-group

gcc的文档说,你需要把你的档案名放在--开始组-结束组之间,但是qmake很聪明,可以找到依赖的库,并且会自动地这样做。

玩得开心点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6891852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档