我想从这个site(底部)编译一个示例代码。我下载了GLFW 3.0.4源代码,并将其构建在自定义位置。我使用了一个默认设置,并且GLFW被构建为一个静态库。我的CMakeLists.txt看起来是这样的:UBuntu 14.04上的GLFW - 链接器错误LTS
cmake_minimum_required(VERSION 2.8)
project(glfw_test_project)
SET(CMAKE_CXX_FLAGS "-Wall -Werror -g -std=c++11")
find_package(OpenGL REQUIRED)
include_directories(/home/user/MyLibs/OpenGL/glfw-3.0.4/include)
link_directories(/home/user/MyLibs/OpenGL/glfw-3.0.4/build/src)
add_executable(glfw_test main.cpp)
target_link_libraries(glfw_test ${OPENGL_gl_LIBRARY})
target_link_libraries(glfw_test glfw3)
当我运行使我获得以下信息:
Linking CXX executable glfw_test
/usr/bin/ld: /home/user/MyLibs/OpenGL/glfw-3.0.4/build/src/libglfw3.a(x11_clipboard.c.o): undefined reference to symbol 'XConvertSelection'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [glfw_test] Error 1
make[1]: *** [CMakeFiles/glfw_test.dir/all] Error 2
make: *** [all] Error 2
有什么不对?
编辑1 当我建立GLFW作为动态库时,一切正常。然后我的CMakeLists.txt中的最后一行必须替换为:
target_link_libraries(glfw_test glfw)
使用静态库时出了什么问题?
可能重复NetBeans](http://stackoverflow.com/questions/23171894/cant-compile-easy-source-in-c-and-opengl-glfw-in-linux-in-netbeans) – Mehrdad
我没有找到任何解决方案对我的问题。 – Irbis
你尝试过'-lX11'吗? – Mehrdad