【Ubuntu學習】嵌入式編譯工具鏈熟悉與游戲移植

目錄

一、Ubuntu 系統編譯 MININIM 源碼

1. 環境準備與依賴配置

2. 編譯 Allegro5.2.5 引擎

?編輯

3. 編譯 MININIM 源碼

4. 故障解決

5. 打包與遷移

二、嵌入式平臺編譯實踐

1. 樹莓派 3B 編譯 MININIM

2. Android 平臺交叉編譯

三、樹莓派 3B 流水燈實驗(Python)

1. 硬件連接

2. 軟件實現

3. 注意


按照老師md文件里面的步驟來即可,均可以實現游戲移植復現:

一、Ubuntu 系統編譯 MININIM 源碼

1. 環境準備與依賴配置

  • 修改軟件源

  • sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
    sudo gedit /etc/apt/sources.list

    替換為清華源(以 Ubuntu 18.04 為例),保存后更新:

    sudo apt-get update

    作用:加快軟件包下載速度,確保后續依賴安裝順利。

  • 安裝編譯工具與依賴庫

    sudo apt-get remove liballegro5-dev ?# 清除舊版本
    sudo apt-get install automake autoconf gcc make cmake gnulib libcanberra-gtk-module lua50 liblua50-dev liblualib50-dev libreadline-dev
    sudo apt-get build-dep allegro5 ?# 檢測allegro5依賴

    作用:安裝編譯工具鏈(如 GCC、Make)和 MININIM 依賴的基礎庫(如 Lua、Readline)。

2. 編譯 Allegro5.2.5 引擎

  • 克隆指定版本源碼

    git clone https://gitee.com/flycloud2009_cloudlou/allegro5_v5.2.5.git
    cd allegro5_v5.2.5
    mkdir build && cd build
  • 配置與編譯

  • cmake .. ?# 生成Makefile
    make ?# 編譯源碼
    sudo make install ?# 安裝庫到系統目錄

  • 關鍵步驟解析

    • cmake ..:讀取上一級目錄的CMakeLists.txt,檢查依賴并生成編譯配置。make:根據 Makefile 編譯源碼,生成動態庫(如liballegro.so.5.2.5)。make install:將庫文件復制到/usr/local/lib,供系統全局調用。

3. 編譯 MININIM 源碼

  • 克隆源碼并配置

    git clone https://gitee.com/flycloud2009_cloudlou/mininim.git
    cd mininim
    ./bootstrap ?# 初始化配置腳本
    ./configure LUA_LIB="-llua50 -llualib50" ?# 指定Lua庫路徑
  • 編譯與運行

    make ?# 生成可執行文件
    ./mininim ?# 運行游戲

    驗證依賴:使用ldd ./mininim查看動態庫依賴,確保所有.so文件路徑正確。

4. 故障解決

  • 問題 1cmake提示缺少libreadline-dev 解決sudo apt-get install libreadline-dev

  • 問題 2make時出現undefined reference錯誤 解決:確認 Allegro5.2.5 已正確安裝,檢查/usr/local/lib下是否存在相關庫文件。

5. 打包與遷移

  • 收集文件

    • 可執行文件:mininim

    • 資源目錄:data(需從源碼目錄復制)

    • 依賴庫:通過ldd ./mininim獲取,如liballegro.so.5.2liblua50.so.5.0等,復制到./libs目錄。

  • 打包命令

    tar czvf mininim_package.tar.gz mininim data libs/
  • 遷移至目標系統

    tar xzvf mininim_package.tar.gz -C /opt/mininim
    export LD_LIBRARY_PATH=/opt/mininim/libs:$LD_LIBRARY_PATH ?# 設置動態庫路徑
    /opt/mininim/mininim ?# 運行游戲

二、嵌入式平臺編譯實踐

1. 樹莓派 3B 編譯 MININIM

  • 環境準備

    • 安裝 Raspbian 系統(推薦 buster 版本),啟用 SSH 和 VNC。

    • 參考 Ubuntu 步驟,修改軟件源并安裝依賴庫(需適配 ARM 架構)。

  • 編譯差異

    # 克隆源碼后直接編譯(無需交叉編譯,本地編譯)
    ./configure --prefix=/usr/local/mininim ?# 指定安裝路徑
    make && sudo make install

    注意:樹莓派性能較低,編譯時間較長,建議使用make -j4并行編譯。

  • ?

2. Android 平臺交叉編譯

  • 方案選擇:使用 Android NDK 進行交叉編譯,避免手機端直接編譯的性能問題。

  • 步驟

    1. 下載 NDK 并配置環境變量:

      export ANDROID_NDK=/path/to/ndk
      export PATH=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
    2. 修改

      mininimMakefile,指定交叉編譯工具鏈:

      CC=armv7a-linux-androideabi-clang
      CXX=armv7a-linux-androideabi-clang++
    3. 編譯生成 ARM 架構二進制文件:

      ./configure --host=arm-linux-androideabi
      make
    4. 打包程序與資源,通過 ADB 傳輸至手機:

      adb push mininim /data/local/tmp
      adb shell chmod +x /data/local/tmp/mininim
      adb shell /data/local/tmp/mininim

?

三、樹莓派 3B 流水燈實驗(Python)

1. 硬件連接

  • 電路搭建:

    • LED 正極通過 220Ω 電阻連接至 GPIO17(物理引腳 11)。

    • LED 負極連接至 GND(物理引腳 9)。

2. 軟件實現

  • 安裝庫:

    sudo apt-get install python3-rpi.gpio

  • 編寫代碼(led.py):

    import RPi.GPIO as GPIO
    import time
    ?
    GPIO.setmode(GPIO.BCM)
    GPIO.setup(17, GPIO.OUT)
    ?
    try:while True:GPIO.output(17, GPIO.HIGH)time.sleep(1)GPIO.output(17, GPIO.LOW)time.sleep(1)
    except KeyboardInterrupt:GPIO.cleanup()
  • 運行程序:

    sudo python3 led.py

    實驗結果:

3. 注意

  • RPi.GPIO庫:用于控制樹莓派 GPIO 引腳,支持 BCM(邏輯引腳)和物理引腳編號模式。

  • 流水燈邏輯:通過循環控制引腳高低電平,結合延時函數實現閃爍效果。

總結

按照老師的步驟來可以完成移植,下來可以再次多學習,繼續努力!

參考文獻:

?【嵌入式】交叉編譯 移植 i2cTool4.1 史上最詳細 - 灰信網(軟件開發博客聚合)

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

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

相關文章

川翔云電腦全新上線:三維行業高效云端算力新選擇

一、核心定位與優勢 云端虛擬工作站服務 依托云端高性能 CPU/GPU 集群,提供遠程桌面服務,支持普通設備運行專業軟件。 按需付費模式:無需采購高端硬件,大幅降低成本投入。生態協同優勢:與渲染 101 同屬母公司&#…

百面Bert

百面Bert Q1. Bert與Transformer有什么關系 Bert是基于Transformer架構中的Encoder進行搭建的。 具體來說,Bert的核心組件是幾個Encoder layer的堆疊。Encoder layer中,也是兩個子層,分別是注意力層和intermediate層(Bert中的叫…

Docker Compose與私有倉庫部署

目錄 一. Docker 重啟策略 二. Docker Compose工具的應用 1. 什么是 Docker compose 2. Docker compose 的安裝 3. 編輯文件格式及編寫注意事項 4. docker-compose的基本用法 三. Harbor私有倉庫 1. 什么是Harbor 2. Harbor 的優勢 3. Harbor 的構成 四. 部署Harbor…

數字隔離器,如何扛起現代智能家電的電氣安全“大旗”

隨著現代社會生活節奏的不斷加速,人們對于屬于自己的休閑時間愈發珍視,而智能家居作為提升人類居家幸福感與舒適度的現代化產物,不僅能有效滿足人們對高品質生活的追求,還能推動產業升級與經濟增長,引導智能家電設備從…

mybatis3調用瀚高procedure報錯(APP)

文章目錄 環境文檔用途詳細信息 環境 系統平臺:Linux x86-64 Red Hat Enterprise Linux 7 版本:4.5 文檔用途 mybatis3調用瀚高procedure報錯(錯誤信息:調用過程請使用CALL)的解決方案。 詳細信息 客戶項目中使用…

96道Docker 容器高頻題整理(附答案背誦版)

簡述什么是 Docker 容器? Docker容器是一個開源的應用容器引擎,它讓開發者可以將他們的應用以及依賴包打包到一個可移植的容器中,然后發布到任何安裝了Docker引擎的服務器上,包括流行的Linux機器、Windows機器等。Docker容器利用…

成都芯谷金融中心·文化科技園打造文化科技高地

成都芯谷金融中心正式啟動運營,標志著雙流區集成電路產業生態圈的關鍵拼圖落位。該項目以"文化科技金融"融合發展為核心理念,旨在構筑服務區域實體經濟的創新引擎。 核心戰略定位與區域價值 產業賦能樞紐:深度聚焦集成電路、新型…

IntelliJ IDEA 加速優化指南

IntelliJ IDEA 加速優化指南 IntelliJ IDEA 是一款功能強大的 IDE,但隨著項目規模增大和長期使用,可能會出現性能下降的情況。以下是一些有效的加速優化方法: 1. 基礎配置優化 內存分配調整 修改 idea.vmoptions 文件 (位置:H…

基于YOLO的智能車輛檢測與記錄系統

基于YOLO的智能車輛檢測與記錄系統 摘要 本報告總結了智能車輛檢測系統的開發工作,主要包括車輛數據標注、YOLO模型訓練及QT交互系統搭建三部分。通過使用專業標注工具完成車輛目標數據集的標注與預處理,基于YOLO模型構建車輛檢測算法并優化訓練流程&a…

網絡調試的藝術:利用瀏覽器Network工具優化你的網站

🧭 General(通用信息) General 部分通常包含請求的基本信息,如請求方法、URL、協議版本等 字段名稱描述常見值示例Request URL請求的完整地址(包括協議、域名、路徑、查詢參數)https://example.com/api/d…

Mongodb數據庫應用

目錄 什么是mongodb 主要特點 MongoDB 概念解析 完整術語列表 MongoDB 安裝 MongoDB Shell 安裝 MongoDB Shell 驗證 MongoDB Shell 數據庫管理 查看數據庫列表 創建數據庫 實例 刪除數據庫 實例 默認數據庫 系統內置數據庫 集合管理 查看集合 創建集合 實…

以太網基礎與 VLAN 配置實驗

以太網是一種基于CSMA/CD(Carrier Sense Multiple Access/Collision Detection)的共享通訊介質的數據網絡通訊技術。當主機數目較多時會導致沖突嚴重、廣播泛濫、性能顯著下降甚至造成網絡不可用等問題。通過交換機實現 LAN 互連雖然可以解決沖突嚴重的問題,但仍然不…

開源流程引擎Camunda簡介

目錄 簡單介紹 主要組件與名詞介紹 常見名詞解釋 核心組件介紹 一些思考 與前端的關系 前端邏輯的簡化 后端接口的專注 流程引擎的控制作用 數據和狀態的管理 監控和管理的集中化 參考資料 簡單介紹 Camunda的本質是可以獨立運行的一套流程引擎,流程引擎…

從面試題出發,如何設計消息隊列

一、引言 在 Java 開發面試的戰場上,消息隊列相關問題一直是高頻考點。面試官們常常拋出這樣的問題:“如果讓你設計一個消息隊列,你會怎么做?” 這可不是在故意刁難,背后有著深層次的考察意圖。? 從實際場景來看&am…

卡薩帝發布AI深度科技:實現從守護生活到守護文明的升級

2025年6月25日,以“AI致遠 愛不凡”為主題的卡薩帝思享薈于重慶科學會堂啟幕。活動現場,卡薩帝發布“AI深度科技”。同時,搭載AI深度科技的“AI鑒賞家套系”同步上市。 AI浪潮下,卡薩帝品牌不斷升級,從“高端家電領導…

FastAPI + PyMySQL 報錯:“dict can not be used as parameter”的原因及解決方案

? FastAPI PyMySQL 報錯 “dict can not be used as parameter” 問題及解決方案 最近在開發一個基于 FastAPI 的碳足跡因子智能匹配系統時,后端保存接口數據到 MySQL 時遇到了如下錯誤: ? 解析失敗: dict can not be used as parameter 一、問題背景…

解決 “docker-compose: command not found“ 錯誤

解決 “docker-compose: command not found” 錯誤 在 CentOS 7 上看到這個錯誤,說明系統中未安裝 docker-compose。以下是完整的安裝和配置步驟: 一、安裝 Docker Compose 1. 確保已安裝 Docker # 檢查 Docker 是否安裝 docker --version# 如果未安…

Android11 深休后系統定時喚醒導致網絡請求服務器過載

硬件平臺:QCS6125 軟件平臺:Android11 問題:每天的7:00和22:00 服務器會突然收到批量設備的網絡請求,導致服務器過載。 通過系統的logcat日志發現了系統在休眠后,每天會有22:00、7:00的喚醒,從而導致這個時…

部署網站需求全滿足:Websoft9 多應用托管一站式方案解析

在數字化浪潮中,搭建專業網站已成為企業觸達客戶的核心通道。然而,從服務器選型到軟件環境配置,傳統建站模式往往讓技術門檻成為中小企業的 “攔路虎”。Websoft9 多應用托管平臺通過深度優化的鏡像技術,重新定義了 WordPress 建站…

Spring Boot 啟動優化實踐

本文系統性分析并優化了一個Spring Boot項目啟動耗時高達 280 秒的問題。通過識別瓶頸、優化分庫分表加載邏輯、異步初始化耗時任務等手段,最終將啟動耗時縮短至 159 秒,提升近 50%。文章涵蓋啟動流程分析、性能熱點識別、異步初始化設計等關鍵技術細節&…