使用QT编译:找不到libGL.so.1

时间:2018-07-24 16:03:45

标签: c++ qt opengl cmake

在使用CMake之后,我尝试使用make编译一个简单的Qt程序,并且不断出现此错误:

/usr/bin/ld: warning: libGL.so.1, needed by /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1, not found (try using -rpath or -rpath-link)
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1: undefined reference to `glGetTexParameterfv'
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1: undefined reference to `glHint'
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1: undefined reference to `glClearColor'
/usr/lib/x86_64-linux-gnu/libQt5Gui.so.5.5.1: undefined reference to `glFlush'
...
collect2: error: ld returned 1 exit status

我已经通过libgl1-mesa-dev重新安装了sudo apt install --reinstall libgl1-mesa-dev,确保在libGL.so.1目录中安装了/usr/lib/x86_64-linux-gnu/mesa,并且没有运行sudo ldconfig

我不确定是什么原因造成的,并且在其他任何地方都没有看到这个问题。这似乎是我所忽略的依赖关系,但是我使用sudo apt install qt5-default安装了Qt,所以我认为可以处理依赖关系。

这是我的CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)

project(SimpleQt)

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_AUTOMOC ON)

find_package(Qt5Widgets CONFIG REQUIRED)

include_directories(include)

add_executable(SimpleQt src/main.cpp)

target_link_libraries(growth Qt5::Widgets)

1 个答案:

答案 0 :(得分:0)

感谢Ripi2在评论中,我找到了一种使它起作用的方法。显然我必须将OpenGL与我的项目链接。这是我更新的CMakeLists.txt:

cmake_minimum_required(VERSION 2.6)

project(SimpleQt)

set(CMAKE_CXX_STANDARD 11)

set(CMAKE_AUTOMOC ON)

find_package(OpenGL Required) # Added this line
find_package(Qt5Widgets CONFIG REQUIRED)

include_directories(include ${OPENGL_INCLUDE_DIRS}) # Updated this line

add_executable(SimpleQt src/main.cpp)

target_link_libraries(growth Qt5::Widgets ${OPENGL_LIBRARIES}) # Updated this line

不过,我没有回答,因为这绝对不是应该的。 Qt网站上的所有示例均未将OpenGL显示为链接要求,因此我认为必须有更好的方法。