我在(Ubuntu) Linux上编写了C++应用程序,并将它们编译成两个操作系统:本机使用"g++“(GNU C++编译器)编译到Linux,并使用”i 386-mingw32-g++“(MinGW C++交叉编译器)将它们交叉编译到Windows。
现在,我正在尝试交叉编译" OpenGL“应用程序(从Linux到Windows) --为此,我需要一些OpenGL库文件。
作为OpenGL的一个实现,我使用了“Mesa3D”开源库。幸运的是,Ubuntu为Linux提供了“预编译的”mesa3d库(libgl1-mesa-dev和libglu1-mesa-dev),但不幸的是,没有任何预编译库可用于MinGW交叉编译器(因此是http://www.mesa3d.org版本)--所以我必须从源代码“手动编译它们”(可以从http://www.mesa3d.org主页下载)。
但我不知道该怎么做。在mesa3d源代码中,有一些关于如何为某些特定平台构建库的文档--特别是有"README.MINGW32“自述文件。
但在第一行中有一些命令
mingw32-make -f Makefile.mgw [OPTIONS...]我无法运行,因为我没有安装任何"mingw32-make“程序。通过其他软件,我曾经用“经典”来构建它们。
./configure -> make -> make install过程,但这并不适用于mesa3d库。
例如,我也尝试过
./configure --host=i386-mingw32并且它已经配置好了,但是在输入
make它造成了一些错误
error: #error No PIPE_SUBSYSTEM_WINDOWS_xxx subsystem defined.现在我迷路了。
那么,有谁知道如何构建与mingw32一起使用它们的mingw32库呢?
P.S.:当然,--我不希望使用Microsoft :-)。此外,我还想做所有必要的事情,从Linux构建OpenGL环境,并使用mingw32进行交叉编译。我希望这是可能的。
P.S.2:在http://www.mesa3d.org/systems.html页面上,写着使用MinGW和Mesa3D是“不推荐的”。我是在正确的方式使用它就这样?
发布于 2010-01-02 23:51:10
不需要为Mesa3D编译MinGW。MinGW包含GL库;它只是不被称为libGL.a或libGLU.a;相反,这些库被称为libopengl32.a和libglu32.a。遗憾的是,这正是微软在Visual上的下所决定的名称,所以MinGW的Windows和GNU/Linux版本都决定包括上面提到的库。
因此,当交叉编译Windows时,只需更改:
-lGL -lGLU转到
-lopengl32 -lglu32GNU/Linux上的Mesa3D实际上是OpenGL实现的一个名称。这是因为OpenGL是一个商标,而SGI的政策不允许任何人在不支付大笔钱的情况下使用该名称。尽管如此,SGI还是向作者Brian提供了测试套件的副本。
Mesa3D在大多数平台上都有本地的OpenGL实现,称为软件“健全检查”库,它模拟了许多高端硬件的特性。但是在GNU/Linux上,更重要的是所谓的DRI或直接呈现接口。这是真正的交易,硬件加速等等。这个库也称为Mesa3D;实际上,为DRI提供服务是Mesa3D的一部分,也是X11和内核的一部分。
Mesa3D在GNU/Linux和其他免费平台上提供了与OpenGL兼容的报头。
摘要: Mesa3D是OpenGL的GNU实现的名称,因为该名称是注册商标的。这个库包含了一个优秀的、功能丰富的、正确的和相对快速的软件实现。它还包括硬件加速的直接渲染接口。
https://stackoverflow.com/questions/1989431
复制相似问题