我一直试图获得一些实现GFLW3的简单GL代码,以便在QT上编译(在Ubuntu13.04上)。但是,当它尝试构建时,我总是得到相同的输出:
undefined reference to symbol 'XF86VidModeQueryExtension'然后我转到.pro文件并链接lXxf86vm.so库文件并添加了-lXxf86vm,但是它仍然提供了相同的输出:
g++ -m64 -o GL-Test main.o windowtest.o frametest.o -L/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1 -L/user/lib/x86_64-linux-gnu/libXxf86vm.so
-L/user/lib/x86_64-linux-gnu/libXxf86vm.a -L/user/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0
-L/home/syk435/Testing\ Gl/GL-Test/../../../../usr/lib/x86_64-linux-gnu/ -lXxf86vm -lX11 -lGL -L/usr/local/lib -lglfw3
/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_init.c.o): undefined reference to symbol 'XF86VidModeQueryExtension'
/usr/bin/ld: note: 'XF86VidModeQueryExtension' is defined in DSO /home/syk435/Testing Gl/GL-Test/../../../../usr/lib/x86_64-linux-gnu//libXxf86vm.so
so try adding it to the linker command line
/home/syk435/Testing Gl/GL-Test/../../../../usr/lib/x86_64-linux-gnu//libXxf86vm.so:
could not read symbols: Invalid operation
collect2: error: ld returned 1 exit status正如您所看到的,我尝试了四种不同的方法来链接正确的lib,但是它仍然给了我相同的“未定义引用”和“符号无法读取”错误。对连接的正确方式有什么见解吗?
编辑: Pro文件: TEMPLATE = app
CONFIG += console
CONFIG -= app_bundle
CONFIG -= qt
CONFIG += link_pkgconfig
PKGCONFIG += x11
CONFIG += link_pkgconfig
PKGCONFIG += gl
CONFIG += link_pkgconfig
PKGCONFIG += glfw3
LIBS += -lXxf86vm -L/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.so
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.a
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0发布于 2013-12-31 01:23:13
问题在于:
LIBS += -lXxf86vm -L/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.so
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.a
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/libXxf86vm.so.1.0.0您使用的是带有文件名的-L选项,而不是路径!您应该将这四行更改为:
LIBS += -lXxf86vm -L/user/lib/x86_64-linux-gnu/其次,如果排序很重要,您也需要将LIBS用于glfw3,如下所示:
LIBS += -lglfw3 -lXxf86vm -L/user/lib/x86_64-linux-gnu/如果需要,也不要忘记分配glfw3路径。这取决于你的设置。您可能会尝试交换当前PKGCONFIG和LIBS语句的顺序,但如果您移动代码,这并不是未来的证据。另外,如果您可以在两个库之间共享路径,我不会亲自使用PKGCONFIG,只是LIBS。
https://stackoverflow.com/questions/20850123
复制相似问题