我在跟随https://learnopengl.com/上的教程学习OpenGL,但在使用cmake(请看Creating a window)时遇到了问题。
我基于GLFW文档编写了我的CMakeLists.txt文件。
cmake_minimum_required(VERSION 3.14)
project(openglTuto)
include_directories(include)
add_executable(gltuto src/main.c src/glad.c)
find_package(glfw3 3.3 REQUIRED)
find_package(OpenGL REQUIRED)
target_link_libraries(gltuto glfw)
target_include_directories(gltuto PUBLIC ${OPENGL_INCLUDE_DIR})
target_link_libraries(gltuto ${OPENGL_gl_LIBRARY})
CMake构建我的配置成功了,但是Ninja编译失败并输出错误。
[1/1] 链接 C 可执行文件 gltuto
FAILED: gltuto : && /usr/bin/cc CMakeFiles/gltuto.dir/src/main.c.o CMakeFiles/gltuto.dir/src/glad.c.o -o gltuto /usr/lib/libglfw.so.3.3 && :
/usr/bin/ld: CMakeFiles/gltuto.dir/src/glad.c.o: 对符号' dlclose@@GLIBC_2.2.5 '未定义
/usr/bin/ld: /usr/lib/libdl.so.2: 错误:缺少命令行中的DSO
collect2: error: ld returned 1 exit status
ninja: build stopped: subcommand failed.
-ldl
。虽然在第一次链接时传递库的绝对路径真的很奇怪。 - o11c