You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用GCC编译包含GLUT库的C语言文件?

问题原因

你遇到的两类报错对应两个不同问题:

  • 第一类undefined reference报错是因为编译时没有链接GLUT、OpenGL相关依赖库
  • 第二类cannot find -lxxx报错是因为MinGW环境下的OpenGL相关库命名和Linux不同,且你没有提前安装适配MinGW的GLUT库到对应路径
Windows MinGW 环境解决方案
  • 第一步:安装适配的GLUT库
    优先使用兼容原版GLUT的freeglut(原版GLUT已停止维护),下载对应32位MinGW的freeglut包后:
    • 把GLUT相关头文件放入MinGW安装路径下的include/GL目录
    • 把.a格式的库文件放入MinGW安装路径下的lib目录
    • 把.dll格式的动态库放入MinGW安装路径下的bin目录,或者后续生成exe的同级运行目录
  • 第二步:使用正确的编译命令
    MinGW环境下OpenGL相关库命名和Linux不同,不要用-lGL这类参数,完整编译命令如下:
gcc main.c -o test -lfreeglut -lglu32 -lopengl32 -lwinmm -lgdi32

如果使用的是原版GLUT,把参数里的-lfreeglut换成-lglut32即可。
如果你的GLUT头文件、库文件没有放在MinGW的系统目录,需要手动指定路径:

gcc main.c -o test -I<你的GLUT头文件所在目录路径> -L<你的GLUT库文件所在目录路径> -lfreeglut -lglu32 -lopengl32 -lwinmm -lgdi32
  • 第三步:VLA支持确认
    MinGW的GCC默认支持C99及之后标准的VLA特性,无需额外配置,如果遇到VLA相关报错,可以加-std=c99或者-std=c11参数开启对应C标准支持。
Mac 环境解决方案

Mac系统的OpenGL、GLUT以Framework形式存在,终端编译时不要用Linux风格的链接参数,使用Framework参数即可,完整命令如下:

gcc main.c -o test -framework GLUT -framework OpenGL

Mac下的GCC实际调用的是Clang,编译.c后缀文件时默认走C语言标准,完全支持VLA特性,和Xcode自带构建效果一致。

内容的提问来源于stack exchange,提问作者Jack Freeth

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:18:02