Otrzymywałem podobne błędy linkowania. Mój błąd był mówiąc:
/usr/local/lib/libglfw3.a(x11_init.c.o): In function `initExtensions':
x11_init.c:(.text+0x16d3): undefined reference to `XIQueryVersion'
/usr/local/lib/libglfw3.a(x11_window.c.o): In function `createWindow':
x11_window.c:(.text+0x6de): undefined reference to `XISelectEvents'
Ale ponieważ chciałem CUpewnij flagi linkami z wymaganymi bibliotekami łączących, zajęło mi trochę czasu, aby to zrobić. Wymagane bibliotekami zewnętrznymi, aby skompilować program oparty glfw są:
Requires.private: x11 xrandr xi xxf86vm gl
This wątek pokazuje, jak znaleźć te bibliotekami potrzebne do kompilacji program oparty glfw.
Odtąd spędziłem 2-3 godziny szukając flag łączących Cmake dla powyższych dodatkowych bibliotek łączących. Myślę, że warto tutaj wspomnieć o pomaganiu innym.
Głównie za błąd, o którym wspomniałem powyżej, potrzebowałem tylko flagi łączenia cmake dla xi
, ale dla kompletności wzmiankuję dla nich wszystkich, tj. x11 xrandr xi xxf86vm
. Oto urywek z mojego pliku CMakeLists.txt
:
include_directories(
./src
${X11_xf86vmode_INCLUDE_PATH}
${X11_Xrandr_INCLUDE_PATH}
${X11_Xinput_INCLUDE_PATH}
)
target_link_libraries(
${GLFW_LIBRARIES}
${X11_LIBRARIES}
${X11_Xxf86vm_LIB}
${X11_Xrandr_LIB}
${X11_Xinput_LIB}
)
Ja wybiłem te flagi z tego link. Mam nadzieję, że zaoszczędzi to trochę czasu dla innych. Cieszyć się!
Wpisałbym "XIQueryVersion" w Google. –
Fora, dokumentacja, Google, Wiki;) – gaussblurinc