两个依赖库之间的未定义符号

时间:2014-10-24 19:32:37

标签: linker dependencies static-libraries symbols nm

首先对标题感到抱歉,但我真的不知道怎么说。您是否有更好的想法随时可以编辑它。

Secound,我做了大量的研究,但无法找到解决方案。如果您在谷歌上找到解决方案,请不要生气。我找了它,但我找不到它(或者我是愚蠢的,这也是可能的)


对于我的问题:

我正在尝试编译一个程序hacc,其中包含许多依赖项diytess。此外,diy也是tess的依赖项之一。

我将diy编译为libdiy.a

我将tess编译为libtess.a

当我尝试编译hacc时,我发错了

[...]/tess/install/lib/libtess.a(tess.cpp.o): in function « item_type(ompi_datatype_t**) »:
tess.cpp:(.text+0x13e): undefined reference to « DIY_FLOAT »

nm告诉我:

nm [...]/diy/install/lib/libdiy.a | grep DIY_FLOAT
0000000000000010 D DIY_FLOAT

nm [...]/tess/install/lib/libtess.a | grep DIY_FLOAT
U DIY_FLOAT
U DIY_FLOAT
使用链接标志

编译

hacc

-L${LIBS}/diy/install/lib  -ldiy  \
-L${LIBS}/tess/install/lib -ltess \

我哪里做错了什么?我是否应该通过在tess内包含所有符号来编译libtess.a

1 个答案:

答案 0 :(得分:0)

  

此外,diy也是tess的依赖之一。

这意味着-ldiy 必须在命令行上跟随-ltess,即您在链接行上的库顺序不正确。更详细的解释herehere