Ubuntu20.04安装libglew-dev后缺失eglew.h头文件问题咨询
Ubuntu 20.04 编译ffmpeg vaapi gl demo缺失eglew.h解决方案
问题原因
Ubuntu 20.04官方源提供的libglew-dev(对应GLEW 2.1.0版本)在打包编译时默认未开启EGL平台绑定支持,因此安装后不会在/usr/include/GL路径下放置eglew.h头文件,无论安装多少其他关联的GL/EGL开发包都无法补全这个文件。
可选解决方法
方法1:自行编译安装带EGL支持的GLEW(不使用项目内置源码)
该方法会将带EGL支持的GLEW安装到系统全局目录,后续其他项目也可以直接复用:
- 先卸载原有系统源安装的无EGL支持的GLEW:
sudo apt remove libglew-dev libglew2.1 - 安装编译所需的基础依赖:
sudo apt install build-essential libegl1-mesa-dev libgl1-mesa-dev cmake - 下载GLEW 2.1.0版本源码,编译时指定开启EGL支持后安装到系统:
# 进入你存放源码的目录,解压下载好的GLEW 2.1.0版本源码包 cd glew make SYSTEM=linux-egl sudo make install sudo ldconfig - 安装完成后
eglew.h会默认部署到/usr/include/GL目录,回到demo项目重新执行编译流程即可正常识别头文件。
方法2:直接使用项目内置的GLEW源码编译
该方法不需要修改系统全局依赖,不会和系统已安装的GLEW版本产生冲突,也是项目作者默认适配的方式:
- 打开项目根目录的
CMakeLists.txt配置文件,注释掉find_package(GLEW REQUIRED)这类查找系统GLEW的配置行。 - 找到内置GLEW的编译开关(一般为
USE_BUILTIN_GLEW相关的option配置),将其值设置为ON,开启内置源码编译逻辑。 - 按常规CMake流程创建build目录执行编译即可,构建过程会自动编译内置的GLEW源码生成带EGL支持的静态库,链接到目标程序中,不会出现头文件缺失报错。
- 该方法的优势是依赖版本和作者开发测试时的版本完全一致,基本不会出现版本兼容导致的奇怪问题,适合不想改动系统全局环境的场景。
内容的提问来源于stack exchange,提问作者Berni
相关产品推荐
相关产品推荐

