未定义的'XtInitialize'引用

时间:2015-11-09 20:09:16

标签: c linux x11

我正在尝试在Athena linux上编译和链接Ubuntu Xt程序。

我已将程序编译成目标文件但无论如何都无法将其与Xt库链接。

我的链接器调用是

ld /usr/lib/x86_64-linux-gnu/libXt.a program.o

我收到此链接器错误

program.o: In function `main':
program.c:(.text+0x37): undefined reference to `XtInitialize'
program.c:(.text+0x42): undefined reference to `commandWidgetClass'
program.c:(.text+0x5e): undefined reference to `XtCreateManagedWidget'
program.c:(.text+0x75): undefined reference to `XtStrings'
program.c:(.text+0x7d): undefined reference to `XtAddCallback'
program.c:(.text+0x89): undefined reference to `XtRealizeWidget'
program.c:(.text+0x8e): undefined reference to `XtMainLoop'

我用Xt探测nm库,并且符号在那里:

nm /usr/lib/x86_64-linux-gnu/libXt.a | grep XtInitialize
                 U _XtInitializeActionData
0000000000000360 T XtInitializeWidgetClass
00000000000018b0 T XtInitialize
                 U XtInitializeWidgetClass
00000000000006d0 T _XtInitializeActionData
                 U XtInitializeWidgetClass

知道什么是错的吗?

1 个答案:

答案 0 :(得分:1)

尝试:

ld  program.o /usr/lib/x86_64-linux-gnu/libXt.a

对于ld的参数顺序很重要,它希望在带有引用的目标文件之后找到库。