目錄
一、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. 故障解決
-
問題 1:
cmake
提示缺少libreadline-dev
解決:sudo apt-get install libreadline-dev
。 -
問題 2:
make
時出現undefined reference
錯誤 解決:確認 Allegro5.2.5 已正確安裝,檢查/usr/local/lib
下是否存在相關庫文件。
5. 打包與遷移
-
收集文件
-
可執行文件:
mininim
-
資源目錄:
data
(需從源碼目錄復制) -
依賴庫:通過
ldd ./mininim
獲取,如liballegro.so.5.2
、liblua50.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 進行交叉編譯,避免手機端直接編譯的性能問題。
-
步驟
-
下載 NDK 并配置環境變量:
export ANDROID_NDK=/path/to/ndk export PATH=$ANDROID_NDK/toolchains/llvm/prebuilt/linux-x86_64/bin:$PATH
-
修改
mininim
的Makefile
,指定交叉編譯工具鏈:CC=armv7a-linux-androideabi-clang CXX=armv7a-linux-androideabi-clang++
-
編譯生成 ARM 架構二進制文件:
./configure --host=arm-linux-androideabi make
-
打包程序與資源,通過 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 史上最詳細 - 灰信網(軟件開發博客聚合)