У меня возникали подобные ошибки связи. Моя ошибка говорит:
/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'
Но так как я хотел Cmake связывающих флагов для требуемой связывающей LIBS, это мне потребовалось некоторое время, чтобы сделать это. Требуемый внешние LIBS, чтобы скомпилировать программу на основе glfw, являются:
Requires.private: x11 xrandr xi xxf86vm gl
This нити показывает, как найти эту LIBS, необходимую для компиляции программы на основе glfw.
Так как я потратил 2-3 часа на поиск флагов Cmake для вышеупомянутых дополнительных ссылок libs. Я думаю, что стоит упомянуть здесь, чтобы помочь другим.
Главным образом для ошибки, о которой я упомянул выше, мне нужен был только флаг связи cmake только для xi
, но для полноты я упоминаю для всех из них, то есть x11 xrandr xi xxf86vm
. Вот отрывок из моего 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}
)
Я извлек эти флаги из этого link. Надеюсь, это сэкономит время другим. Наслаждайтесь!
Я бы напечатал 'XIQueryVersion' в Google. –
Форумы, документация, Google, Wiki;) – gaussblurinc