目录
一、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 史上最详细 - 灰信网(软件开发博客聚合)