”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 如何使用 MinGW 在 Windows 上构建 GLEW?分步指南。

如何使用 MinGW 在 Windows 上构建 GLEW?分步指南。

发布于2024-11-07
浏览:597

How to build GLEW on Windows with MinGW? A step-by-step guide.

使用 MinGW 在 Windows 上构建 GLEW:综合指南

使用 GLEW,这是一个无缝集成 OpenGL 和 WGL 函数的纯头文件库,使用 MinGW 增强 Windows 上 OpenGL 应用程序的开发。为了使用 MinGW 有效构建 GLEW,需要一组特定的命令和步骤。

首先,创建两个名为 lib 和 bin 的目录,分别用于存储库和可执行文件。然后,使用以下命令编译 GLEW 源文件:

gcc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.o -c src/glew.c

接下来,构建共享库:

gcc -shared -Wl,-soname,libglew32.dll -Wl,--out-implib,lib/libglew32.dll.a -o lib/glew32.dll src/glew.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32

该命令创建libglew32.dll共享库和相应的导入库lib/libglew32.dll.a。

要创建静态库,请执行以下命令:

ar cr lib/libglew32.a src/glew.o

或者,要生成 pkg-config 文件,请使用以下命令:

sed \
  -e "s|@prefix@|/usr|g" \
  -e "s|@libdir@|/usr/lib|g" \
  -e "s|@exec_prefix@|/usr/bin|g" \
  -e "s|@includedir@|/usr/include/GL|g" \
  -e "s|@version@|1.6.0|g" \
  -e "s|@cflags@||g" \
  -e "s|@libname@|GLEW|g" \
   glew.pc

同样,使用以下命令构建 GLEW MX 库和可执行文件:

# GLEW MX library
gcc -DGLEW_NO_GLU -DGLEW_MX -O2 -Wall -W -Iinclude -DGLEW_BUILD -o src/glew.mx.o -c src/glew.c
gcc -shared -Wl,-soname,libglew32mx.dll -Wl,--out-implib,lib/libglew32mx.dll.a -o lib/glew32mx.dll src/glew.mx.o -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32
ar cr lib/libglew32mx.a src/glew.mx.o

# GLEW MX pkg-config file 
sed \
  -e "s|@prefix@|/usr|g" \
  -e "s|@libdir@|/usr/lib|g" \
  -e "s|@exec_prefix@|/usr/bin|g" \
  -e "s|@includedir@|/usr/include/GL|g" \
  -e "s|@version@|1.6.0|g" \
  -e "s|@cflags@|-DGLEW_MX|g" \
  -e "s|@libname@|GLEWmx|g" \
   glewmx.pc

# GLEW Visualinfo program
gcc -c -O2 -Wall -W -Iinclude -o src/glewinfo.o src/glewinfo.c
gcc -O2 -Wall -W -Iinclude -o bin/glewinfo.exe src/glewinfo.o -Llib -lglew32 -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32

# GLEW Visualinfo program
gcc -c -O2 -Wall -W -Iinclude -o src/visualinfo.o src/visualinfo.c
gcc -O2 -Wall -W -Iinclude -o bin/visualinfo.exe src/visualinfo.o -Llib -lglew32 -L/mingw/lib -lglu32 -lopengl32 -lgdi32 -luser32 -lkernel32

通过以下这些根据说明,您可以在 Windows 上使用 MinGW 成功构建 GLEW,创建必要的库和可执行文件。

最新教程 更多>
  • 可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    可以在纯CS中将多个粘性元素彼此堆叠在一起吗?
    [2这里: https://webthemez.com/demo/sticky-multi-header-scroll/index.html </main> <section> { display:grid; grid-template-...
    编程 发布于2025-04-13
  • Python高效删除列表元素值的技巧
    Python高效删除列表元素值的技巧
    如何通过值有效地删除列表元素?在操作列表时,通常需要遇到删除特定元素的需求。直接的方法是使用List.Index查找元素的索引,然后使用DEL删除它。但是,如果列表中不存在该元素,则此方法会引发错误。 以从列表中删除特定值的首次出现,python提供了列表。如果找不到元素,它不会引起错误。 xs ...
    编程 发布于2025-04-13
  • Java是否允许多种返回类型:仔细研究通用方法?
    Java是否允许多种返回类型:仔细研究通用方法?
    在Java中的多个返回类型:一种误解类型:在Java编程中揭示,在Java编程中,Peculiar方法签名可能会出现,可能会出现,使开发人员陷入困境,使开发人员陷入困境。 getResult(string s); ,其中foo是自定义类。该方法声明似乎拥有两种返回类型:列表和E。但这确实是如此吗...
    编程 发布于2025-04-13
  • Python高效去除文本中HTML标签方法
    Python高效去除文本中HTML标签方法
    在Python中剥离HTML标签,以获取原始的文本表示Achieving Text-Only Extraction with Python's MLStripperTo streamline the stripping process, the Python standard librar...
    编程 发布于2025-04-13
  • 如何使用替换指令在GO MOD中解析模块路径差异?
    如何使用替换指令在GO MOD中解析模块路径差异?
    在使用GO MOD时,在GO MOD 中克服模块路径差异时,可能会遇到冲突,其中可能会遇到一个冲突,其中3派对软件包将另一个带有导入套件的path package the Imptioned package the Imptioned package the Imported tocted pac...
    编程 发布于2025-04-13
  • 在ASP.NET MVC中如何通过FormData追加和接收模型?
    在ASP.NET MVC中如何通过FormData追加和接收模型?
    在formdata 让Model = { 事件归还:fromdate, 事件描述:todate, ... }; const Modeljson = json.stringify(model); 将JSON字符串附加到formdata: formdata.append(“ model...
    编程 发布于2025-04-13
  • 为什么尽管有效代码,为什么在PHP中捕获输入?
    为什么尽管有效代码,为什么在PHP中捕获输入?
    在php ;?>" method="post">The intention is to capture the input from the text box and display it when the submit button is clicked.但是,输出...
    编程 发布于2025-04-13
  • 如何有效地选择熊猫数据框中的列?
    如何有效地选择熊猫数据框中的列?
    在处理数据操作任务时,在Pandas DataFrames 中选择列时,选择特定列的必要条件是必要的。在Pandas中,选择列的各种选项。选项1:使用列名 如果已知列索引,请使用ILOC函数选择它们。请注意,python索引基于零。 df1 = df.iloc [:,0:2]#使用索引0和1 c...
    编程 发布于2025-04-13
  • 如何在GO编译器中自定义编译优化?
    如何在GO编译器中自定义编译优化?
    在GO编译器中自定义编译优化 GO中的默认编译过程遵循特定的优化策略。 However, users may need to adjust these optimizations for specific requirements.Optimization Control in Go Compi...
    编程 发布于2025-04-13
  • 对象拟合:IE和Edge中的封面失败,如何修复?
    对象拟合:IE和Edge中的封面失败,如何修复?
    To resolve this issue, we employ a clever CSS solution that solves the problem:position: absolute;top: 50%;left: 50%;transform: translate(-50%, -50%)...
    编程 发布于2025-04-13
  • 如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    如何从Python中的字符串中删除表情符号:固定常见错误的初学者指南?
    从python import codecs import codecs import codecs 导入 text = codecs.decode('这狗\ u0001f602'.encode('utf-8'),'utf-8') 印刷(文字)#带有...
    编程 发布于2025-04-13
  • 如何限制动态大小的父元素中元素的滚动范围?
    如何限制动态大小的父元素中元素的滚动范围?
    在交互式接口中实现垂直滚动元素的CSS高度限制问题:考虑一个布局,其中我们具有与用户垂直滚动一起移动的可滚动地图div,同时与固定的固定sidebar保持一致。但是,地图的滚动无限期扩展,超过了视口的高度,阻止用户访问页面页脚。 映射{} 因此。我们不使用jQuery的“ .aimimate(...
    编程 发布于2025-04-13
  • Django隐藏文件路径,安全下载文件指南
    Django隐藏文件路径,安全下载文件指南
    在某些方案中遮盖路径时,在某些方案中遮盖了可下载的文件,有必要防止直接访问网站上可下载的文件。 Django提供了提供文件的机制,同时通过向用户隐藏其路径来维护安全性。一种方法是通过将随机字符串或时间戳与实际路径相结合,为每个文件手动生成一个隐藏的路径。然后可以在下载URL中使用生成的路径,该路径...
    编程 发布于2025-04-13
  • 如何使用Python理解有效地创建字典?
    如何使用Python理解有效地创建字典?
    在python中,词典综合提供了一种生成新词典的简洁方法。尽管它们与列表综合相似,但存在一些显着差异。与问题所暗示的不同,您无法为钥匙创建字典理解。您必须明确指定键和值。 For example:d = {n: n**2 for n in range(5)}This creates a dicti...
    编程 发布于2025-04-13

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3