树莓派Tools交叉编译OpenGL(mesa-12.0.5)

2023-11-05

以下shell命令都是在root权限下执行的。得按照顺序来,不然会报找不到包或者一些文件找不到这些话,交叉编译玩多了,自己翻来覆去,整多了后其实也就融会贯通了,有耐心就行。宗旨就是你得让它们找到的到对应文件。一般要么在环境变量里去pkg-config的库文件路径,要么就是在configure时指定下CPPFLAGS、LDFLAGS路径。要么提前aptitude install一些库。

由于博主是在做一个体系 的介绍,如果想要知道前情(一些配置环境)可以自行去主页查找之前的博客。下面的博客含有了树莓派交叉工具链的配置以及一些使用。

Ubuntu20.04下交叉编译树莓派能运行的c++程序(不含第三方库)_jiugeshao的专栏-CSDN博客

Ubuntu交叉编译含有Opencv功能的程序并在树莓派上执行_jiugeshao的专栏-CSDN博客

此外要说明的是,这篇博客写完,接下来的一篇博客就会用此编译出来的OpenGL再去关联交叉编译QT。

1. 下aptitude下面的一个包

aptitude install xutils-dev

2. 下载xproto-7.0.23源码,博主解压缩到了Home目录下,并新建了一个build和install文件夹

进入到build目录下后,执行如下命令交叉编译

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/xproto-7.0.23/install --host=arm-linux 

完毕后再继续执行命令

make 
make install

可以看到install文件夹下就出现了编译好后的文件(接下来的libxua交叉编译时需要依赖如下的文件)

同时在~/.bashrc文件中添加如下的包路径

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/sxhlvye/xproto-7.0.23/install/lib/pkgconfig
export PKG_CONFIG_PATH 

3. 下载libXau-1.0.7源码,博主解压缩到Home目录下,同样并新建了一个build和install的文件夹

cd到build目录下后,执行如下命令

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/libXau-1.0.7/install --host=arm-linux CPPFLAGS="-I/home/sxhlvye/xproto-7.0.23/install/include" LDFLAGS="-L/home/sxhlvye/xproto-7.0.23/install/lib"

再分别执行make和make install指令,成功后可以看到install目录下有了编译好后的文件(接下来的交叉编译libxcb需要依赖其)

4. 下载libpciaccess-0.16源码,博主依然解压缩到home目录下,并新建了build和install文件夹

cd到build目录下 ,执行如下命令

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/libpciaccess-0.16/install --host=arm-linux

完毕后再执行make和make install,可以看到成功获得所需要的的文件(后面交叉编译libdrm-2.4.100时需要依赖它们)

如上一样,需要把此包路径添加到~/.bashrc中

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/sxhlvye/libpciaccess-0.16/install/lib/pkgconfig
export PKG_CONFIG_PATH 

5. 下载源码libdrm-2.4.100,博主依然解压缩到home目录下,并新建了build和install文件夹

cd到build目录下 ,执行如下命令

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/libdrm-2.4.100/install --host=arm-linux --disable-cairo-tests --enable-intel CPPFLAGS="-I/home/sxhlvye/libpciaccess-0.16/install/include" LDFLAGS="-L/home/sxhlvye/libpciaccess-0.16/install/lib"

 完毕后再执行make和make install,可以看到成功获得所需要的的文件(后面交叉编译mesa-12.0.5时需要依赖它们)

6. 下载源码xcb-proto-1.6源码,博主依然解压缩到home目录下,并新建了build和install文件夹

这里注意你的电脑上要有python2.7的环境

 cd到build目录下 ,执行如下命令

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/xcb-proto-1.6/install --host=arm-linux

 完毕后再执行make和make install,可以看到成功获得所需要的的文件(后面交叉编译mesa-12.0.5时需要依赖它们)

 这边需要注意,在~/.bashrc里需要将 上面两个包的pc文件添加到PKG-CONFIG路径中,完毕后记得输入source ~/.bashrc来生效下。

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/sxhlvye/libdrm-2.4.100/install/lib/pkgconfig
export PKG_CONFIG_PATH 

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/sxhlvye/xcb-proto-1.6/install/lib/pkgconfig
export PKG_CONFIG_PATH 

7. 下载libxcb-1.5源码博主依然解压缩到home目录下,也新建了build和install文件夹

先执行sudo apt-get install xsltproc

cd到build目录下 ,执行如下命令

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/libxcb-1.5/install --host=arm-linux CPPFLAGS="-I/home/sxhlvye/libXau-1.0.7/install/include -I/home/sxhlvye/xproto-7.0.23/install/include" LDFLAGS="-L/home/sxhlvye/libXau-1.0.7/install/lib -L/home/sxhlvye/xproto-7.0.23/install/lib"

完毕后再执行make和make install,可以看到成功获得所需要的的文件(后面交叉编译mesa-12.0.5时需要依赖它们)

8. 下载libxshmfence-1.3源码,博主依然解压缩到home目录下,并新建了build和install文件夹

cd到build目下后,执行如下命令,命令中用到了前面(2)中的文件

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/libxshmfence-1.3/install --host=arm-linux CPPFLAGS="-I/home/sxhlvye/xproto-7.0.23/install/include" LDFLAGS="-L/home/sxhlvye/xproto-7.0.23/install/lib"

完毕后再执行make和make install,可以看到成功获得所需要的的文件(后面交叉编译mesa-12.0.5时需要依赖它们)

9. 下载expat-2.2.7源码,博主依然解压缩到home目录下,并新建了build和install文件夹

cd到build目下后,执行如下命令

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/expat-2.2.7//install --host=arm-linux 

完毕后再执行make和make install,可以看到成功获得所需要的的文件(后面交叉编译mesa-12.0.5时需要依赖它们)

10. 下载openssl-OpenSSL_1_1_1-stable源码包,博主依然解压缩到home目录下,并新建了build和install文件夹

cd到build目下后,执行如下命令(注意这条命令格式和其它不太一样

../config no-asm --prefix=/home/sxhlvye/openssl-OpenSSL_1_1_1-stable/install --cross-compile-prefix=arm-linux-gnueabihf-

过程中会出现如下报错:

arm-linux-gnueabihf-gcc: error: unrecognized command line option '-m64'
arm-linux-gnueabihf-gcc: error: unrecognized command line option '-m64'
make[1]: *** [Makefile:707: apps/app_rand.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [Makefile:715: apps/apps.o] Error 1
make[1]: *** [Makefile:723: apps/bf_prefix.o] Error 1
可以打开Makefile文件,将其中含有的-m64字符全部删掉即可。

 完毕后再执行make和make install,可以看到成功获得所需要的的文件(后面交叉编译mesa-12.0.5时需要依赖它们)

11. 下载eudev-3.2.5源码,博主依然解压缩到home目录下,并新建了build和install文件夹

先执行下如下命令 apt-get install gperf,安装下gperf

cd到build目下后,执行如下命令

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/eudev-3.2.5/install --host=arm-linux  --disable-selinux  --disable-blkid

 完毕后再执行make和make install,可以看到成功获得所需要的的文件(后面交叉编译mesa-12.0.5时需要依赖它们) 

至此对于博主的环境,已经准备好交叉编译mesa-12.0.5所需要的第三方库,毕竟每个人电脑配置不一样,一些其它问题,还需要自己发挥聪明才智去解决,注意躲用configure所带的help命令。

12. 下载mesa-12.0.5,博主依然解压缩到home目录下,并新建了build和install文件夹

 这边也要先安装下先行库 apt-get install libudev-dev

cd到build目下后,执行如下命令

CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ ../configure --prefix=/home/sxhlvye/mesa-12.0.5/install --host=arm-linux  --enable-opengl --enable-gles1 --enable-gles2 --disable-cairo-tests --disable-dri3  --disable-glx --disable-egl --enable-intel CPPFLAGS="-I/home/sxhlvye/libpciaccess-0.16/install/include -I/home/sxhlvye/eudev-3.2.5/install/include -I/home/sxhlvye/expat-2.2.7/install/include -I/home/sxhlvye/libxshmfence-1.3/install/include -I/home/sxhlvye/xproto-7.0.23/install/include -I/home/sxhlvye/libxcb-1.5/install/include -I/home/sxhlvye/openssl-OpenSSL_1_1_1-stable/install/include" LDFLAGS="-L/home/sxhlvye/libpciaccess-0.16/install/lib -L/home/sxhlvye/eudev-3.2.5/install/lib -L/home/sxhlvye/expat-2.2.7/install/lib -L/home/sxhlvye/libxshmfence-1.3/install/lib -L/home/sxhlvye/xproto-7.0.23/install/lib -L/home/sxhlvye/libxcb-1.5/install/lib -L/home/sxhlvye/openssl-OpenSSL_1_1_1-stable/install/lib"

make过程中出现的如下报错信息:

 /usr/bin/env: ‘python’: No such file or directory
make[1]: *** [Makefile:1160: git_sha1.h] Error 127
make[1]: Leaving directory '/home/sxhlvye/mesa-12.0.5/build/src'
make: *** [Makefile:676: all-recursive] Error 1

博主已经有了python3环境,版本如下:

Can't find Python when building Qt from sources - Stack Overflow

可参照上面链接的解决方案,执行下面的命令(博主python3软链接的版本就是3.8),所以直接执行了如下了命令。

sudo cp /usr/bin/python3 /usr/bin/python

再次执行make和make install,成功。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

树莓派Tools交叉编译OpenGL(mesa-12.0.5) 的相关文章

  • OpenGL:如何检查用户是否支持glGenBuffers()?

    我检查了文档 它说 OpenGL 版本必须至少为 1 5 才能制作glGenBuffers 工作 用户使用的是1 5版本但是函数调用会导致崩溃 这是文档中的错误 还是用户的驱动程序问题 我正在用这个glGenBuffers 对于VBO 我如
  • 在windows + opengl中选择图形设备

    我知道如何使用 openGL 打开窗口 使用 Win32 或其他工具包 但是当系统有2块显卡时 如何选择要渲染的图形设备 我的编程语言是 C 我专注于 Windows 但任何示例都将受到欢迎 编辑 也许更好地解释我的问题是个好主意 以便添加
  • LWJGL3:重载的 glBufferData 方法

    我正在使用 LWJGL 调用 OpenGL 函数 方法org lwjgl opengl GL15 glBufferData http javadoc lwjgl org org lwjgl opengl GL15 html glBuffer
  • wglCreateContextAttribsARB 函数崩溃

    我尝试写下代码 我有InitializeOGL 的代码 bool Ogl InitializeOGL bool vSync cout lt lt Init OpenGL lt
  • 如何在 SceneKit 中以编程方式将 png 纹理包裹在立方体周围

    我是 SceneKit 的新手 试图让一些基本的东西工作 但到目前为止还没有取得多大成功 由于某种原因 当我尝试将 png 纹理应用于 CNBox 时 我最终除了黑色之外什么也没有 这是我在 viewDidLoad 中的简单代码片段 let
  • OpenGL 使用着色器将 NV12 转换为 RGB24

    我尝试编写一个应用程序来在 OpenGL 中显示 YUV 图像 我使用此代码片段在 C 中成功将 Y UV 转换为 RGB source https blog csdn net subfate article details 4730514
  • GLSL 中统一浮点行为和常量浮点行为的不同

    我正在尝试在 GLSL 中实现模拟双精度 并且观察到一种奇怪的行为差异 导致 GLSL 中出现细微的浮点错误 考虑以下片段着色器 写入 4 浮点纹理以打印输出 layout location 0 out vec4 Output unifor
  • 在 3D 场景中实现“抓取”相机平移工具

    在我的场景中 我有想要 抓取 的地形 然后在移动光标时让相机平移 其高度 视图向量 视野等全部保持不变 因此 最初的 抓取 点将是世界空间中的工作点 我希望在拖动时该点保留在光标下方 我当前的解决方案是获取前一个和当前的屏幕点 取消投影它们
  • 渲染 TTF SDL2.0 opengl 3.1

    我正在使用 SDL2 0 并使用 半现代 opengl 3 1 我希望向我的应用程序添加文本叠加 并在应用程序中呈现 TTF 我将如何使用现代 OpenGL 来解决这个问题 编辑 根据 genpfault 的建议 我尝试使用 SDL TTF
  • Opengl 视频纹理

    我正在使用 Visual Studio 10 在 Windows 上用 C 开发 opengl 应用程序 目前我在立方体上使用静态纹理 但我想集成视频纹理 你知道我可以使用哪个库来打开和解密视频吗 查看 ffmpeg libavformat
  • GL_COLOR_ATTACHMENT 有什么作用?

    我现在正在学习帧缓冲区 但我只是不明白颜色附件的作用 我了解帧缓冲区 第二个参数的意义是什么 glFramebufferTexture2D GL FRAMEBUFFER GL COLOR ATTACHMENT0 GL TEXTURE 2D
  • OpenGL:始终相同的颜色

    我正在 Windows 上编写一个程序 使用c opengl 2 1 and SDL我在顶点颜色方面遇到了一些问题 我在用着glColor3f设置每个顶点集的颜色 但它似乎不起作用 无论我选择什么颜色 我都会将每个顶点绘制为红色 我检查了传
  • 创建并使用我自己的纹理图集的 mipmap

    我目前正在使用自动 mipmap 生成 C OpenTK GL GenerateMipmap GenerateMipmapTarget Texture2D 我使用的纹理平铺为 16px 的块 所以我的问题是 是否可以使用不会缩小至 1x1
  • 纹理采样:根据LOD值计算BIAS值

    GL ES 2 0 中的功能纹理2DLod在片段着色器中不可用 我需要移植 GLSL 着色器 在 GL ES 2 0 中我只能使用二维纹理 sampler2D 采样器 vec2 坐标 浮点数bias 告诉我如何计算 a 的值bias相当于已
  • 为什么 cudaGLSetGLDevice 失败,即使它是在 main 函数的第一行中调用的

    我想使用 OpenGL 和 CUDA 之间的互操作性 我知道 正如一些教程所说 第一步是选择设备 但是 当我在主函数的第一行中调用 cudaGLSetGLDevice 0 时 程序退出并显示信息 cudaSafeCall 运行时 API 错
  • Windows 上的 OpenGL SDK

    我正在尝试编写一个 OpenGL 应用程序 因此我安装了 Windows 7 SDK 然而 它似乎是OpenGL 1 1 define GL VERSION 1 1 1 如何找到我安装的 OpenGL 版本 dll 以及在哪里可以找到较新的
  • OpenGL 与 OpenCL,选择哪个以及为什么?

    哪些功能使 OpenCL 能够独特地选择 OpenGL 和 GLSL 进行计算 尽管有与图形相关的术语和不实用的数据类型 OpenGL 是否有任何真正的警告 例如 可以通过使用其他纹理将 a 渲染到纹理来完成并行函数评估 减少操作可以通过迭
  • 无法在 Linux 的 NetBeans 中编译 C++ 和 OpenGL (GLFW) 的简单源代码

    我开始学习 OpenGL glfw 我从教程中复制源代码并尝试编译它 但出现了错误 我想我已经正确安装了所有头文件 glm glfw 等 这是我的来源 我没有在头文件中使用这些字符 include iostream include stdi
  • 新显卡上的 nvoglv32.dll 中的绘制调用崩溃

    几天前 由于一些硬件更改 我设置了计算机并安装了新的 Windows 8 副本 其中 我将显卡从 Radeon HD 7870 更改为 Nvidia GTX 660 再次设置 Visual Studio 11 后 我从 Github 下载了
  • OpenGL 计算着色器调用

    我有一个与新计算着色器相关的问题 我目前正在研究粒子系统 我将所有粒子存储在着色器存储缓冲区中 以便在计算着色器中访问它们 然后我派遣一个一维工作组 define WORK GROUP SIZE 128 shaderManager gt u

随机推荐

  • [非线性控制理论]1_Lyapunov直接方法

    非线性控制理论 1 Lyapunov直接方法 非线性控制理论 2 不变性原理 非线性控制理论 3 基础反馈稳定控制器设计 非线性控制理论 4 反馈线性化 反步法 非线性控制理论 5 自适应控制器 Adaptive controller 非线
  • 【Python】Python可变参数*args **kwargs

    可变参数 args 和 kwargs 作为函数定义时 收集未匹配参数组成tuple或dict对象 参数也就是 args收集所有未匹配的位置参数组成一个tuple对象 局部变量args指向此tuple对象 参数也就是 kwargs收集所有未匹
  • 巧用异频测量快速评估友商4G网络覆盖

    摘 要 通过在联通4G网络异频测量配置数据中增加友商使用的4G网络频点 让联通现网中使用全网通的用户上报的测量报告数据 MR 包含有友商频点的测量信息 再对测量报告数据 MR 进行统计分析 可以实现快速 高效的对友商4G网络的覆盖进行全面评
  • 电流检测总结

    电流检测总结 电流检测是工业上常用到的一门技术 平常工作也经常与之打交道 因为我是小白 所以今天打算对它做一个简单的总结 防止遗忘 对于被检测的电路 一般使用阻值很小的采样电阻串联在电路中进行采样 然后检测这个采样电阻两端的电压信号 Vin
  • Unity Shader 实现描边OutLine效果

    Shader实现描边流程大致为 对模型进行2遍 2个pass 绘制 第一遍 描边pass 在vertex shader中对模型沿顶点法线方向放大 fragment shader设置输出颜色为描边颜色 第二遍正常绘制模型 除被放大的部分外 其
  • react如何调用子组件身上的方法

    使用场景 需要重复触发子组件弹窗或者需要在子组件修改值的时候可以采用调用子组件身上特定方法执行操作 在次介绍一下最新hooks的操作和旧版本class组件调用方式 一 Hooks api调用方式 需要用到的Api useRef useImp
  • 哈呀嗓,济南

    今天收到了泰莱区宏图三胞招聘主管的邮件 说是让联系沈经理 备注在这里以免忘记 还有就是 下午打印简历的时候潍坊新北海打电话过来 说他们公司也需要php程序员 这个也待定吧 一切还是以济南为主吧 不行再走 地形 济南市位于北纬36 40 东经
  • XXL-JOB(分布式任务调度平台)的使用(详细教程)

    概述 首先我们要知道什么是XXL JOB 官方简介 XXL JOB是一个分布式任务调度平台 其核心设计目标是开发迅速 学习简单 轻量级 易扩展 现已开放源代码并接入多家公司线上产品线 开箱即用 XXL JOB的有点特性 1 简单 支持通过W
  • Hibernate 项目查询数据报 UnknownEntityTypeException

    原因分析 1 hibernate cfg xml配置文件有没有映射实体类
  • 一文带你全面理解向量数据库

    近些年来 向量数据库引起业界的广泛关注 一个相关事实是许多向量数据库初创公司在短期内就筹集到数百万美元的资金 你很可能已经听说过向量数据库 但也许直到现在才真正关心向量数据库 至少 我想这就是你现在阅读本文的原因 如果你阅读本文只是为了简单
  • wireshark过滤器的使用

    目录 wireshark wireshark的基本使用 wireshark过滤器的区别 抓包案例 wireshark wireshark的基本使用 抓包采用 wireshark 提取特征时 要对 session 进行过滤 找到关键的stre
  • 华为云使用手册

    华为云重磅福利 云主机 海外云主机 云容器和多款云产品0元领取 华为云重磅推出云上优选 特惠来袭来迎接这个来之不易的春天 本次活动依然是给到了很低的折扣 0 7折起 活动走起 福利1 免费试用海外云主机和云原生容器网页连接 进入免费试用专区
  • CentOS安装python3.x最新版和chrome chromedriver

    之前使用selenium wire的响应拦截器获取请求头中的签名需要部署到服务器 所以得搭建一个服务器运行环境 安装过程有坑 这里记录一下 Linux平台安装需要下载源码包自己编译 下载地址 https www python org dow
  • hexo主题标签的使用

    https akilar top posts 615e2dec 这个是我看的教程 我直接复制的源码 友情链接 LrcShare 实现hexo标签的可以折叠 hexo标签的使用方法 要实现Hexo标签的可折叠 可以使用Hexo内置的foldi
  • ad中按钮开关的符号_收藏:电路图符号大全

    电子设备中有各种各样的图 能够说明它们工作原理的是电原理图 简称电路图 电路图是说明模拟电子电路工作原理的 它用各种图形符号表示电阻器 电容器 开关 晶体管等实物 用线条把元器件和单元电路按工作原理的关系连接起来 一张电路图就好像是一篇文章
  • 在SpringBoot中加入jsp

    SpringBoot官方不推荐在 SpringBoot 中使用 jsp 的 那么到底可以使用吗 答案是肯定的 不过需要导入tomcat 插件启动项目 不能再用 SpringBoot 默认 tomcat 了 一 导入SpringBoot的to
  • React实现大文件上传、react-dropzone

    React大文件上传的实现方案大致如下 使用第三方组件库实现文件上传 如react dropzone 将大文件分成多个小块 并使用XMLHttpRequest或者fetch发送分块上传请求 为了保证数据完整性 每个请求都需要携带校验码 在上
  • (0)JavaScript语法---小程序回调函数【幼儿园级教程】

    微信小程序中的回调函数 史上最简单的幼儿园基础教程 小程序的回调函数 汉字版的编码 你是不是第一次见到 总结 小程序的回调函数 在小程序包含逻辑时 回调函数几乎是无法避免 在整个使用中 发现大部分帖子都是针对有一定的基础的伙伴写的 也比较晦
  • Flink 1.11:更好用的流批一体 SQL 引擎

    许多的数据科学家 分析师和 BI 用户依赖交互式 SQL 查询分析数据 Flink SQL 是 Flink 的核心模块之一 作为一个分布式的 SQL 查询引擎 Flink SQL 提供了各种异构数据源的联合查询 开发者可以很方便地在一个程序
  • 树莓派Tools交叉编译OpenGL(mesa-12.0.5)

    以下shell命令都是在root权限下执行的 得按照顺序来 不然会报找不到包或者一些文件找不到这些话 交叉编译玩多了 自己翻来覆去 整多了后其实也就融会贯通了 有耐心就行 宗旨就是你得让它们找到的到对应文件 一般要么在环境变量里去pkg c