我想從這個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