对于我正在交叉编译的程序,我如何在ubuntu上将GLEW交叉编译到windows

How can I cross-compile GLEW on ubuntu to windows for a program I am cross-compiling?

本文关键字:交叉编译 上将 ubuntu GLEW windows 于我正 程序      更新时间:2023-10-16

我正在使用OpenGL、GLU、freeGLUT、GLEW和SOIL(OpenGL纹理的图像加载程序)进行一个小项目。我想将我的项目交叉编译到windows,因为它最终将成为我计划销售的游戏,而且使用windows的人比使用Linux的人多。不幸的是,我使用的交叉编译器MinGW不支持GLEW网站上预先构建的GLEW库。

我已经下载了GLEW源代码包,如何将其编译到我需要的libglew32.a(以及另外两个我忘记了名称的文件,其中一个我认为是静态版本)文件中?已经包含了一个makefile,我应该使用它吗?(我只是不确定这是否会使一个库可用于MinGW)

TL;DR如何在ubuntu上为MinGW编译GLEW?

当创建要在多个平台上运行的软件并计划交叉编译时,最好将第三方库的源代码(如果没有源代码,则将库本身包含在内)包含到项目源代码和构建树中。

理想情况下,所有东西都可以从源树中构建,但有时(通常)情况并非如此,因此您必须手动进行多次构建,在主项目的构建系统可以访问的某个位置复制生成的二进制文件。

对于交叉编译,通常可以归结为准确地指定要使用的工具链二进制文件。例如,在Linux上,MinGW交叉编译器的名称通常类似于i686-w64-mingw32-…(或类似名称)。配置第三方库构建时,必须指定要使用的库。根据构建系统的不同,这可能通过CCCXXLD和其他一些环境变量发生,也可能通过BUILDHOSTTARGET变量发生(请参见此处https://stackoverflow.com/a/5139451/524368)。

最好的情况是,如果你能将第三方的所有东西集成到你的项目构建系统中,因为这让你不用手动管理。就我个人而言,我已经非常喜欢CMake构建系统,因为它支持树外构建,如果你有自己使用CMake的库,你可以简单地将它们的源树复制到项目的子目录中,并包括它们的CMake配置。

请注意,如果构建本身不太复杂,那么替换项目构建系统通常是一个有效的选择(替换Linux内核或ffmpeg之类的构建系统是疯狂的,替换GLFW之类的构建体系可能是一个可行的选择)。