Программирую C++ приложений на (Ubuntu) Linux и компилировать их в 2 операционные системы: изначально в Linux с помощью "г ++" (GNU C++ компилятор) и кросс-компилировать их для Windows используя «i386-mingw32-g ++» (кросс-компилятор MinGW C++).OpenGL + Mesa 3D + MinGW
Теперь я пытаюсь перекрестно скомпилировать приложения OpenGL (от Linux до Windows) - для этого мне нужны файлы библиотеки OpenGL.
В качестве реализации OpenGL я использую библиотеку с открытым исходным кодом «Mesa 3D». К счастью, Ubuntu предлагает «предварительно скомпилированные» библиотеки mesa3d (libgl1-mesa-dev и libglu1-mesa-dev) для Linux, но, к сожалению, нет никаких предварительно скомпилированных библиотек для использования с кросс-компилятором MinGW (таким образом, версии Windows их) - поэтому я «ДОЛЖЕН» вручную скомпилировать их «из источника» (который можно загрузить с http://www.mesa3d.org на главной странице).
Но я не собираюсь это делать. В исходном коде mesa3d есть некоторые документы о том, как создавать библиотеки для некоторых определенных платформ - в частности, есть файл Readme README.MINGW32.
Но только на первых строках есть некоторые команды
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 для r используя их с mingw32?
P.S .: И, конечно, Я НЕ ХОЧУ использовать Microsoft Visual Studio никогда больше :-). Кроме того, я хотел бы сделать все необходимое для создания среды OpenGL из Linux и использования mingw32 для кросс-компиляции. Надеюсь, это возможно.
P.S.2: На странице http://www.mesa3d.org/systems.html написано, что использование MinGW с Mesa 3D «устарело». Я нахожусь на правильном пути, чтобы использовать его именно так?
Просто интересно ... OpenGL обычно используется для доступа к аппаратно ускоренному 3D. Используя mesa на окнах, вы прибегаете к реализации программного обеспечения на окнах. Это действительно то, что вы хотите? В противном случае вам просто нужно использовать библиотеки opengl для окон. – Bahbar
Моя основная цель - «независимость от архитектуры» при написании кода C++ -> поэтому я подумал, что использование кросс-платформенной библиотеки («mesa3d» в этом случае) - хороший способ добиться этого, я не знаю, может быть, я Я ошибаюсь. Так что я должен понимать это так, что в «каждой Windows» есть некоторые «библиотеки», которые реализуют OpenGL, и когда я пишу какой-то код OpenGL на моем Linux-машине, мне не нужно распространять какие-либо дополнительные библиотеки OpenGL с моей программой? Если да, то в каких библиотеках это «opengl.dll», «libopengl.lib» или что? – Petike
OpenGL обычно отображается как часть платформы. Для Windows Microsoft навсегда открыла интерфейс OpenGL (opengl.lib) в своих платформах SDK. Я не уверен точно, как вы собираетесь строить .a для mingw linker из них, но это определенно отличается от использования mesa. – Bahbar