Я программирую приложения C++ на (Ubuntu) Linux и компилирую их в 2 операционных системы: исходно к Linux при помощи "g ++" (компилятор C++ GNU) и кросс-компилируют их к Windows при помощи "i386-mingw32-g ++" (кросс-компилятор C++ MinGW).
Теперь, я пытаюсь кросс-скомпилировать приложения "OpenGL" (от Linux до Windows) - для этого мне нужны некоторые файлы библиотеки OpenGL.
Как реализация OpenGL, я использую "Мезаструктуру 3D" библиотека с открытым исходным кодом. К счастью, предложения Ubuntu "предварительно скомпилировали" mesa3d библиотеки (libgl1-mesa-dev и libglu1-mesa-dev) для Linux, но к сожалению, нет никаких предварительно скомпилированных библиотек для использования с кросс-компилятором MinGW (таким образом версии Windows их) - таким образом, я "ДОЛЖЕН" вручную скомпилировать их "из источника" (который может быть загружен с домашней страницы http://www.mesa3d.org).
Но я понятия не имею, чтобы сделать это. В mesa3d исходном коде существуют некоторые документы, как создать библиотеки для некоторых определенных платформ - конкретно существует файл "README.MINGW32" readme.
Но только на первых строках существует некоторая команда
mingw32-make -f Makefile.mgw [OPTIONS...]
который я не могу выполнить, потому что я не имею, любой "mingw32-делает" программу установленной. Другим программным обеспечением я раньше создавал их с "классиком"
./configure -> make -> make install
процедура, но это не работает над mesa3d библиотеками.
Например, я также попробовал
./configure --host=i386-mingw32
и это было настроено хорошо, но после ввода
make
это бросило некоторую ошибку
error: #error No PIPE_SUBSYSTEM_WINDOWS_xxx subsystem defined.
и теперь я ПОТЕРЯН:-(.
Кто-либо знает, как создать mesa3d библиотеки для использования их с mingw32?
P.S.: И конечно, я не ХОЧУ не использовать Microsoft Visual Studio НИКОГДА:-). И также я хотел бы сделать все необходимые вещи создать среду OpenGL из Linux и использующий mingw32 для кросс-компиляции. Я надеюсь, что это возможно.
P.S.2: На странице http://www.mesa3d.org/systems.html там записан то использование, MinGW с 3D Мезаструктурой "удерживается от использования". Я нахожусь на правильном способе использовать его просто тот путь?
Нет необходимости компилировать Mesa3D для MinGW. MinGW включает в себя библиотеку GL; она просто не называется libGL.a
или libGLU.a
; вместо этого библиотеки называются libopengl32.a
и libglu32.a
. К сожалению, именно так Microsoft решила называть их под Windows на Visual Studio, поэтому и Windows, и GNU/Linux релиз MinGW решили включить библиотеки, названные выше.
Так что при перекрестной компиляции для Windows просто измените:
-lGL -lGLU
на
-lopengl32 -lglu32
Mesa3D на GNU/Linux - это на самом деле название для libre реализации OpenGL. Это происходит потому, что OpenGL является товарным знаком, а политика SGI не позволяла никому использовать это название, не заплатив огромную сумму денег. Несмотря на это, SGI предоставила автору, Брайану Полу, копию тестирующего набора.
Mesa3D работает на большинстве платформ с родной реализацией OpenGL, известной как библиотека "проверки здравомыслия" программного обеспечения с эмуляцией многочисленных возможностей, доступных только для высокоаппаратного обеспечения. Но в GNU/Linux гораздо важнее то, что называется DRI или прямой интерфейс рендеринга. Это реальная вещь, аппаратное ускорение и все такое. Эта библиотека также называется Mesa3D; на самом деле обеспечение DRI является частью Mesa3D, а также X11 и ядра.
Mesa3D предоставляет libre совместимые с OpenGL заголовки на GNU/Linux и других свободных платформах.
Summary: Mesa3D - это название для реализации OpenGL в GNU/Linux, поскольку это название защищено товарными знаками. Эта библиотека включает в себя отличную, функциональную, правильную и относительно быструю программную реализацию. Она также включает интерфейс прямого рендеринга для аппаратного ускорения.