在 RK3588 Ubuntu 上編譯 eglinfo:全流程實戰 + 常見報錯修復

dv1/eglinfo 是一個開源的 EGL 信息檢測工具,廣泛用于 OpenGL ES 圖形棧調試、驅動驗證和嵌入式平臺圖形支持排查。在 Rockchip RK3588 上編譯該工具可以協助我們確認 EGL + DRM 是否配置正確,尤其在無窗口系統(如 eglfs、framebuffer)環境中非常實用。


🧱 第一步:準備源碼與工具鏈

? 克隆項目

git clone https://github.com/dv1/eglinfo.git
cd eglinfo

項目默認自帶一個較老版本的 waf 構建系統,不兼容 Python 3.7 及以上,需進行升級處理。


?? 問題一:waf 拋出 StopIteration 異常

? 報錯內容

RuntimeError: generator raised StopIteration

原因:項目中自帶的 .waf3-* 是 waf 1.7.x 版本,不兼容 Python 3.7+,在新版解釋器中拋出異常。

? 解決方案:替換 waf

wget https://waf.io/waf-2.0.22 -O waf
chmod +x waf

waf 2.x 支持 Python 3.7-3.12,并可無縫替代舊版本。無需改動其它項目文件。


?? 第二步:配置編譯選項

./waf configure --platform=fb --device=generic
參數說明
--platform=fb使用 framebuffer 環境(適配無 X11 的 RK3588)
--device=generic通用設備類型

?? 問題二:/usr/bin/env: 'python' No such file 報錯

? 報錯信息

/usr/bin/env: 'python': No such file or directory

原因:部分 Ubuntu 系統默認沒有 python 命令(只有 python3),而 waf 腳本使用的是 #!/usr/bin/env python

? 解決方案:

sudo ln -s /usr/bin/python3 /usr/bin/python

或者修改 waf 腳本第一行:

#!/usr/bin/env python
# 改為:
#!/usr/bin/env python3

🛠? 第三步:編譯與安裝

./waf
sudo ./waf install

默認會將 eglinfo 安裝到 /usr/bin/eglinfo,可直接運行。


🧪 第四步:驗證運行效果

export EGL_PLATFORM=fb   # 在 framebuffer 模式下推薦設置
eglinfo

你將看到 EGL vendor、版本、支持的 config 以及圖形 API 等信息。


?? 常見運行期錯誤

🔻 錯誤:eglinfo: eglInitialize failed

可能原因解決方法
未加載 DRM 設備確認 /dev/dri/card0 存在,權限正確
libmali.so 不支持 fb 模式替換為 dummy 版本的 Mali EGL 庫(無 X11 依賴)
未設置環境變量添加 export EGL_PLATFORM=fb
未加載 Mali GPU 模塊使用 `lsmod

? 編譯成功截圖示意

如果一切順利,運行 eglinfo 將輸出形如:

EGL API version: 1.4
EGL vendor string: ARM
EGL version string: 1.4 Valhall-"g13p0-01eac0"
EGL client APIs: OpenGL_ES
...

這說明 Mali 驅動生效、EGL 成功初始化、系統支持 OpenGL ES 渲染 ?


📦 附:自動化構建腳本(適用于 RK3588 Ubuntu)

#!/bin/bash
set -e
cd /home/firefly
git clone https://github.com/dv1/eglinfo.git
cd eglinfowget https://waf.io/waf-2.0.22 -O waf
chmod +x waf[ ! -f /usr/bin/python ] && sudo ln -s /usr/bin/python3 /usr/bin/python./waf configure --platform=fb --device=generic
./waf
sudo ./waf install

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/912670.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/912670.shtml
英文地址,請注明出處:http://en.pswp.cn/news/912670.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

開源推薦:基于前后端分離架構的WMS倉儲管理系統

開源推薦:基于前后端分離架構的WMS倉儲管理系統 🔥 在線演示地址:https://tob.toolxq.com/wms/wms.html 點擊上方鏈接可直接體驗系統功能和界面,無需安裝部署 前言 在企業數字化轉型的浪潮中,倉儲管理系統&#xff08…

Redis中List類型常見的操作命令有哪些?

Redis中List類型是一個字符串列表,這里是一些常見的命令: 1)lpush:將一個或多個值插入到列表頭部。列表不存在,一個新的列表會被創建。 2)rpush:將一個或多個值插入到列表尾部。 3)lpop:移除并返回列表頭…

mac重復文件清理,攝影師同款清理方案

攝影師小林盯著屏幕上的警告:“存儲空間不足”,離截稿只剩3小時。她的MacBook如同塞滿回憶的閣樓,128GB的“其他”空間神秘消失。翻看照片庫時,她驚訝地發現——同一組西藏雪山照片竟有十幾個副本!這是mac重復文件問題…

lua腳本為什么能保證原子性

Redis 處理客戶端請求是基于單線程模型的( Redis 6.0 開始引入了多線程處理網絡 IO,但命令執行仍然是單線程的)。這意味著,在任意時刻 Redis 只會執行一個命令或腳本。這種單線程特性確保了當 Redis 在執行一個 Lua 腳本時&#x…

爬蟲詳解:Aipy打造自動抓取代理工具

一、爬蟲的本質與核心功能 爬蟲是一種通過編寫程序自動抓取互聯網公開數據的技術工具,其核心流程包括: 模擬瀏覽器行為:發送 HTTP 請求訪問目標網頁解析頁面結構:提取 HTML/XML 中的關鍵信息(如文本、鏈接、圖片&…

Leetcode百題斬-棧

終于來到了棧專題,想想之前來阿里的時候就是面試了一道棧最終通過了終面,也是十分懷念了。 739. Daily Temperatures[Medium] 思路:這就是最典型的單調棧問題了。從后向前維護下一個更大值或者下一個更大值的位置。 可以看一下當年面阿里時…

PIXHAWK(ardupilot4.52)NMEA的解析bug

最近在測試過程中發現在橢球高為負的地方,地面站讀取GPS_RAW_INT (24)消息中的alt高度竟然是正值。而消息中定義的alt并不是一個unsigned數據,理論上是帶有正負符號的。 查看gga的原始信息: $GPGGA,063718.40,3714.8533856,N,11845.9411766,…

Linux容器講解以及對應軟件使用

一、容器基礎知識講解 1.1 微服務的部署策略 部署單體應用意味著運行大型應用的多個相同副本,通常提供若干臺(N)服務器(物理機或虛擬 機),在每臺服務器上運行若干個(M)應用實例。部…

企業級應用技術-ELK日志分析系統

目錄 #1.1ELK平臺介紹 1.1.1ELK概述 1.1.2Elasticsearch 1.1.3Logstash 1.1.4Kibana #2.1部署ES群集 2.1.1基本配置 2.1.2安裝Elasticsearch 2.1.3安裝Logstash 2.1.4Filebeat 2.1.5安裝Kibana 1.1ELK平臺介紹 1.1.1ELK概述 ELK 是三個開源工具的縮寫,分別是Elas…

Shiro漏洞復現

Shiro簡介 Apache Shiro是一種功能強大且易于使用的Java安全框架,它執行身份驗證、授權、 加密和會話管理,可用于保護任何應用程序的安全。 Shiro提供了應用程序安全性API來執行以下方面: 1.身份驗證:證明用戶身份,通…

VSCode 中使用 Google Test(GTest)框架測試

VSCode 中使用 Google Test(GTest)框架在 VSCode 中對 C 代碼進行測試的示例: 一、Unbutu x86使用gtest 環境配置 安裝 GTest :在 Ubuntu 系統中,可以通過命令sudo apt-get install libgtest-dev安裝 GTest 庫。對于…

【1.6 漫畫數據庫設計實戰 - 從零開始設計高性能數據庫】

1.6 漫畫數據庫設計實戰 - 從零開始設計高性能數據庫 🎯 學習目標 掌握數據庫表結構設計原則理解字段類型選擇與優化學會雪花算法ID生成策略掌握索引設計與優化技巧了解分庫分表設計方案 📖 故事開始 小明: “老王,我總是不知道怎么設計數…

OSPF虛擬鏈路術語一覽:快速掌握網絡路由

大家好,這里是G-LAB IT實驗室。今天帶大家了解一下OSPF的相關知識! 01 OSPF虛擬鏈路術語大全 網絡架構中,OSPF(開放式最短路徑優先)是一種重要的路由協議。通過其鏈路狀態路由機制,OSPF能夠有效維護和更新…

oracle常用的函數(一) 之 to_char、to_date

文章目錄 前言to_char基本語法格式模型格式模型介紹無FM示例使用FM輸出貨幣負數輸出尖括號 將日期格式化將數字格式化為帶有貨幣符號和千位分隔符的格式總結 to_date語法語法示例 戳這里,第二彈 → oracle常用的函數(二) 之 nvl、decode、l…

數據庫服務器宕機的處理方法與實戰策略

在當今數字化時代,數據庫作為企業數據存儲與管理的核心,承載著業務運行的關鍵信息。一旦數據庫服務器宕機,將導致業務中斷、數據丟失等嚴重后果,甚至可能給企業帶來巨大的經濟損失和聲譽損害。因此,掌握一套系統、科學的數據庫服務器宕機處理方法尤為重要。本文將從應急響…

如何hack邊緣的kubelet修改Cgroup數值

之前做了一個VPA項目的需求,就是需要不重啟的方式修改容器的Cgroup的值已達到垂直擴縮容的目的,項目中核心的思路如下 上游下發要VPA的結果的值寫入到容器的Annotation里面Kubelet 感知到這個 annoation 的變化我們本地運行一個 Agent,里面運…

熟悉 PyCharm

界面 我們常用的就這個幾個地方: 常用配置 調整字體大小 Ctrl 滾輪調整字體大小 插件推薦 Indent Rainbow 該插件的作用在于能夠對于不同層級縮進的空格標注不同的顏色: 快捷鍵 快捷鍵的 pdf 下載鏈接: Windows 版:https:…

pytorch--模型訓練的一般流程

文章目錄 前言0、數據集準備1、數據集2、dataset3、model4、訓練模型 前言 在pytorch中模型訓練一般分為以下幾個步驟: 0、數據集準備 1、數據集讀取(dataset模塊) 2、數據集轉換為tensor(dataloader模塊) 3、定義模型…

智能合同管理實戰:基于區塊鏈的電子簽約技術實現

在數字經濟時代,傳統紙質合同簽署方式已難以滿足企業高效、安全、合規的業務需求。智能合同管理(Smart Contract Management)結合區塊鏈技術,正在重塑電子簽約流程,實現合同全生命周期的自動化、可追溯和防篡改。本文將深入探討基于區塊鏈的電子簽約技術實現,涵蓋核心架構…

設計模式精講 Day 22:模板方法模式(Template Method Pattern)

【設計模式精講 Day 22】模板方法模式(Template Method Pattern) 文章標簽 設計模式, 模板方法模式, Java開發, 面向對象設計, 軟件架構, 設計模式實戰, Java應用開發 文章簡述 模板方法模式是一種行為型設計模式,它通過定義一個算法的骨架…