1

首先对不起标题,但我真的不知道该怎么说。您有什么更好的想法可以随时编辑。

其次,我进行了广泛的研究,但找不到解决方案。如果您在 google 上找到解决方案,请不要生气。我找了也没找到(或者我很笨,这也是可能的)


对于我的问题:

我正在尝试编译一个程序,该程序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吗?

4

1 回答 1

0

而且diy也是tess的依赖之一。

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

于 2014-10-25T19:58:05.013 回答