libX11中的“命令行中缺少DSO”

时间:2017-09-04 00:20:40

标签: linker-errors

编译此文件时

g++ -m64 -Wl,-O1 -o qjoypad 
    axis.o axis_edit.o axisw.o button.o button_edit.o buttonw.o event.o flash.o icon.o joypad.o joypadw.o joyslider.o keycode.o layout.o layout_edit.o main.o quickset.o getkey.o moc_axis.o moc_axis_edit.o moc_button.o moc_button_edit.o moc_flash.o moc_icon.o moc_joypad.o moc_joypadw.o moc_keycode.o moc_layout.o moc_getkey.o moc_layout_edit.o    
    -L/usr/lib/x86_64-linux-gnu -lXtst -lQtGui -lQtCore -lpthread -lXtst

我收到以下错误:

/usr/bin/ld: keycode.o: undefined reference to symbol 'XKeycodeToKeysym'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line

但是,符号只是一个全局变量:

$ readelf -s /usr/lib/x86_64-linux-gnu/libX11.so.6 | grep XKeycode
     259: 000000000008a000   646 FUNC    GLOBAL DEFAULT   11 XKeycodeToKeysym
    1308: 0000000000029830    73 FUNC    GLOBAL DEFAULT   11 _XKeycodeToKeysym

我发现了这个question,但是用户只是在错误的位置链接,或者questionpkgconfig相关联。据我所知,我的构建命令应该是正确的。

2 个答案:

答案 0 :(得分:0)

发现了这个问题。由于某种原因,我必须特别包含-lX11命令没有执行的.configure

答案 1 :(得分:0)

在Makefile中查找

LIBS = -lfoo -lbar ...

并将其添加到那里。