Как построить и установить GLFW 3 и использовать его в проекте Linux



GLFW3



вчера вечером я работал допоздна, пытаясь построить пакеты GLFW 3 для Linux из исходного кода. Этот процесс занял у меня очень много времени, около 3 часов в общей сложности, отчасти потому, что я не знаком с CMake, а отчасти потому, что я был незнаком с GLFW.



Я надеюсь, что этот пост избавит вас от трудностей, которые у меня были вчера! Я подумал, что должен сделать короткую запись и, надеюсь, сэкономить вам несколько часов вашей жизни...



спасибо "urraka", "b6" и "niklas" на IRC-канале #glfw мне удалось получить версию glfw 3.0.1.



оказывается, это не тривиальный процесс (конечно, не для меня, я не эксперт), поскольку в Интернете не так много документации о glfw3, особенно о настройке его с помощью CMake.



меня попросили разделить это на раздел вопросов и ответов, и поэтому я сделал это, и части ответа теперь ниже.



вы сопровождающий GLFW, или член команды GLFW?



Если кто-либо из сопровождающих GLFW3 видит это, то мое сообщение им, Пожалуйста, добавьте раздел "настройка GLFW3 на Windows, Mac OS X и Linux" на ваш сайт! Писать программы с помощью GLFW довольно легко, так как онлайн-документация довольно хороша, быстрое сканирование всех доступных классов и модулей, и вы будете готовы к работе. На примере тестового проекта, представленный здесь тоже очень хорошо. Две основные проблемы, которые я нашел были, во-первых, как настроить GLFW3 в моей системе, а во-вторых, как построить проект GLFW3? Эти две вещи, возможно, недостаточно ясны для неспециалиста.



Edit

2869   6  

6 ответов:

Шаг 1: Установка GLFW 3 на вашей системе с CMAKE

для этой установки я использовал KUbuntu 13.04, 64bit.

первый шаг-загрузить последнюю версию (предполагая, что версии в будущем будут работать аналогичным образом) из www.glfw.org, вероятно, используя это ссылке.

следующим шагом является извлечение архива и открытие терминала. cd в glfw-3.X. X каталог и запустить cmake -G "Unix Makefiles" вам могут потребоваться повышенные привилегии, и вам также может понадобиться сначала установите зависимости сборки. Для этого попробуйте sudo apt-get build-dep glfwилиsudo apt-get build-dep glfw3илисделать это вручную, как я сделал с помощью sudo apt-get install cmake xorg-dev libglu1-mesa-dev... Могут быть другие библиотеки, которые вам нужны, такие как библиотеки pthread... Очевидно, они у меня уже были. (См. параметры-l, заданные для этапа компоновщика g++, ниже.)

вы можете make а то make install, который, вероятно, потребует от вас sudo первый.

хорошо, вы должны получить подробный вывод на последних трех этапах CMake, рассказывая вам, что было построено или где оно было размещено. (В /usr/include, например.)

Шаг 2: Создайте тестовую программу и скомпилировать

следующий шаг-запустить vim ("что?! ВИМ?!"вы говорите) или ваш предпочтительный IDE / текстовый редактор... Я не использовал vim, я использовал Kate, потому что я нахожусь на KUbuntu 13.04... В любом случае, загрузите или скопируйте тестовую программу из здесь (в нижней части страницы) и сохранить, выход.

теперь скомпилировать с помощью g++ -std=c++11 -c main.cpp - не уверен, что c++11-это требуются но я использовал nullptr Итак, мне это было нужно... Возможно, вам потребуется обновить gcc до версии 4.7 или предстоящей версии 4.8... Информация об этом здесь.

затем исправьте свои ошибки, если вы набрали программу вручную или попытались быть "слишком умным", и что-то не сработало... Тогда свяжите его с помощью этого монстра! g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi так что вы видите, в "установить часть "построить зависимости", вы также можете проверить, что у вас есть GL, GLU, X11 Xxf86vm (что бы это ни было) Xrandr posix-thread и Xi (что бы это ни было) развитие библиотеки установлены. Может быть, обновить графические драйверы тоже, я думаю, что GLFW 3 может потребовать OpenGL версии 3 или выше? Возможно, кто-то может это подтвердить? Возможно, Вам также потребуется добавить параметры компоновщика -ldl -lXinerama -lXcursor чтобы заставить его работать правильно, если вы получаете неопределенные ссылки в dlclose (кредит @user2255242).

и, да, мне действительно нужно было так много -ls!

Шаг 3: Вы закончили, хорошего дня!

Надеюсь, эта информация была правильной, и все работало для вас, и вам понравилось писать тестовую программу GLFW. Также надеюсь, что это руководство помогло, или поможет, несколько человек в будущем, которые боролись, как я был сегодня вчера!

кстати, все теги-это то, что я искал на stackoverflow ищет ответ, которого не существует. (До сих пор.) Надеюсь, это то, что вы искали, если вы были в аналогичном положении к себе.

обратите внимание, что вам не нужно так много -ls Если вы устанавливаете glfw с . (Вы можете включить эту опцию, запустив ccmake первая).
Сюда sudo make install установит общую библиотеку в /usr/local/lib/ligglfw.so. Затем вы можете скомпилировать файл примера с помощью простого:

g++ main.cpp -L /usr/local/lib/ -lglfw

затем не забудьте добавить /usr/local/ lib / в путь поиска для общих библиотек перед запуском программы. Это можно сделать с помощью:

export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}

и вы можете положить, что в твой./~ bashrc, поэтому вам не нужно вводить его все время.

я решил это таким образом

файл pkg-config описывает все необходимые флаги времени компиляции и времени соединения и зависимости, необходимые для использования библиотеки.

pkg-config --static --libs glfw3

показывает мне, что

-L/usr/local/lib -lglfw3 -lrt -lXrandr -lXinerama -lXi -lXcursor -lGL -lm -ldl -lXrender -ldrm -lXdamage -lX11-xcb -lxcb-glx -lxcb-dri2 -lxcb-dri3 -lxcb-present -lxcb-sync -lxshmfence -lXxf86vm -lXfixes -lXext -lX11 -lpthread -lxcb -lXau -lXdmcp  

Я не знаю, если все эти библиотеки действительно необходимы для компиляции, но для меня это работает...

поскольку принятый ответ не позволяет больше редактировать, я собираюсь суммировать его с помощью одной команды copy-paste (замените 3.2.1 последней версией, доступной в первой команде):

version="3.2.1" && \
wget "https://github.com/glfw/glfw/releases/download/${version}/glfw-${version}.zip" && \
unzip glfw-${version}.zip && \
cd glfw-${version} && \
sudo apt-get install cmake xorg-dev libglu1-mesa-dev && \
sudo cmake -G "Unix Makefiles" && \
sudo make && \
sudo make install

если вы хотите скомпилировать программу, используйте следующие команды:

g++ -std=c++11 -c main.cpp && \
g++ main.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXinerama -lXcursor

если вы следуете learnopengl.com учебник вы, возможно, придется настроить рад, а также. В таком случае перейдите по этой ссылке

http://glad.dav1d.de/#profile=core&specification=gl&api=gl%3D3.3&api=gles1%3Dnone&api=gles2%3Dnone&api=glsc2%3Dnone&language=c&loader=on

, а затем нажмите на кнопку "Создать" в правом нижнем углу сайта и скачать zip-файл. Извлеките его и скомпилируйте исходники с помощью следующей команды:

g++ glad/src/glad.c -c -Iglad/include

теперь команды для компиляции вашей программы становятся такими:

g++ -std=c++11 -c main.cpp -Iglad/include && \
g++ main.o glad.o -o main.exec -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXinerama -lXcursor

отличный гид, спасибо. Учитывая большинство инструкций здесь почти построенный для меня, но у меня была одна оставшаяся ошибка.

/usr/bin/ld: //usr/local/lib/libglfw3.a(glx_context.c.o): undefined reference to symbol 'dlclose@@GLIBC_2.2.5'
//lib/x86_64-linux-gnu/libdl.so.2: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status

после поиска этой ошибки, я должен был добавить -ldl в командной строке.

g++ main.cpp -lglfw3 -lX11 -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor -lGL -lpthread -ldl

затем образец приложения "hello GLFW" скомпилирован и связан.

Я довольно новичок в linux, поэтому я не совсем уверен, что именно делает эта дополнительная библиотека... кроме исправления моей ошибки связывания. Я вижу эту строку cmd однако переключитесь на сообщение выше.

Если кто-то становится ленивым и, возможно, возможно, не знает, как настроить оболочку для всех этих библиотек и - ls, затем я создал скрипт python (у вас должен быть python3, у большинства пользователей linux он есть.) это позволяет легко компилировать скрипты и запускать их, не беспокоясь много, он просто имеет регулярные системные вызовы, просто аккуратно расположены, я создал его для себя, но, возможно, это было бы полезно: здесь

Comments

    Ничего не найдено.