一、Linux 系统编译工具链使用与 mininim 源码编译
在 Ubuntu 系统上编译 mininim 开源游戏需要正确配置编译工具链和依赖库。以下是详细的操作步骤和故障解决方法:
1. 环境准备与源码获取
首先需要安装必要的编译工具和依赖库:
# 更新系统软件包索引
sudo apt update
# 安装编译工具链
sudo apt install build-essential cmake git
# 安装Allegro游戏库及其依赖
sudo apt install liballegro5-dev liballegro-image5-dev \
liballegro-audio5-dev liballegro-acodec5-dev \
liballegro-font5-dev liballegro-ttf5-dev \
liballegro-primitives5-dev liballegro-dialog5-dev
# 安装Lua脚本语言支持
sudo apt install lua5.3 liblua5.3-dev
2. 下载 mininim 源码
从 GitHub 仓库克隆 mininim 源码:
git clone https://github.com/mininim-game/mininim.git
cd mininim
3. 配置与编译
创建构建目录并使用 CMake 配置项目:
mkdir build
cd build
cmake ..
如果 CMake 配置过程中提示缺少依赖,需要安装相应的库。配置完成后进行编译:
make -j$(nproc)
4. 故障排除:GPG 签名验证失败
在更新软件源时可能遇到 GPG 签名验证失败的问题,可按以下步骤解决:
步骤 1:手动添加 ROS 的 GPG 密钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F42ED6FBAB17C654
如果提示连接失败,可尝试其他密钥服务器:
sudo apt-key adv --keyserver hkp://pgp.mit.edu:80 --recv-keys F42ED6FBAB17C654
步骤 2:更新软件源索引
sudo apt update
补充:检查 ROS 软件源配置
确保/etc/apt/sources.list.d/ros-latest.list
文件中 ROS 源的地址正确(适用于 Ubuntu 18.04 Bionic):
deb http://packages.ros.org/ros/ubuntu bionic main
如果该文件不存在或内容错误,可以手动创建或修改:
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
5. 运行游戏
编译成功后,在 build 目录下会生成 mininim 可执行文件,运行游戏:
./mininim
二、打包与分发 mininim 游戏
将编译好的 mininim 游戏打包以便在其他 Ubuntu 系统上运行的步骤如下:
1. 创建打包目录并复制文件
mkdir mininim_package
cp /path/to/mininim/build/mininim mininim_package/
cp -r /path/to/mininim/data mininim_package/ # 复制游戏资源
2. 收集依赖的动态链接库
使用以下脚本复制所有依赖的动态链接库到打包目录:
#!/bin/bash
# 依赖库列表
DEPENDENCIES=(
"/lib/x86_64-linux-gnu/libm.so.6"
"/lib/x86_64-linux-gnu/libreadline.so.7"
"/usr/local/lib/liballegro.so.5.2"
"/usr/local/lib/liballegro_image.so.5.2"
"/usr/local/lib/liballegro_audio.so.5.2"
"/usr/local/lib/liballegro_acodec.so.5.2"
"/usr/local/lib/liballegro_font.so.5.2"
"/usr/local/lib/liballegro_primitives.so.5.2"
"/usr/local/lib/liballegro_dialog.so.5.2"
"/usr/local/lib/liballegro_color.so.5.2"
"/usr/lib/liblua5.3.so.5.3"
"/lib/x86_64-linux-gnu/libc.so.6"
"/lib/x86_64-linux-gnu/libtinfo.so.5"
"/lib/x86_64-linux-gnu/libpthread.so.0"
# 其他依赖库...
)
# 目标目录
TARGET_DIR="mininim_package"
# 复制依赖库
for dep in "${DEPENDENCIES[@]}"; do
cp "$dep" "$TARGET_DIR/"
done
保存为copy_dependencies.sh
,赋予执行权限并运行:
chmod +x copy_dependencies.sh
./copy_dependencies.sh
3. 创建启动脚本
创建run_mininim.sh
脚本确保程序能正确找到依赖库:
#!/bin/bash
# 获取当前脚本所在的目录
SCRIPT_DIR=$(dirname "$(realpath "$0")")
# 设置LD_LIBRARY_PATH环境变量
export LD_LIBRARY_PATH=$SCRIPT_DIR:$LD_LIBRARY_PATH
# 运行程序
$SCRIPT_DIR/mininim
将脚本保存到mininim_package
目录中,并赋予执行权限:
chmod +x mininim_package/run_mininim.sh
4. 打包与分发
将打包目录压缩:
tar -czvf mininim_package.tar.gz mininim_package
在另一台 Ubuntu 系统上,解压缩并运行:
tar -xzvf mininim_package.tar.gz
cd mininim_package
./run_mininim.sh
三、树莓派 3B 流水灯实验
以下是在树莓派 3B 上使用 Python 控制 GPIO 实现流水灯效果的代码:
import RPi.GPIO as GPIO
import time
# 设置GPIO模式为BCM编号
GPIO.setmode(GPIO.BCM)
# 定义LED连接的GPIO引脚
led_pins = [17, 18, 27, 22, 23, 24] # 根据实际连接修改
# 设置所有LED引脚为输出模式
for pin in led_pins:
GPIO.setup(pin, GPIO.OUT)
GPIO.output(pin, GPIO.LOW) # 初始状态为熄灭
try:
print("按下 Ctrl+C 停止程序")
while True:
# 正向流水
for pin in led_pins:
GPIO.output(pin, GPIO.HIGH) # 点亮LED
time.sleep(0.1) # 延时0.1秒
GPIO.output(pin, GPIO.LOW) # 熄灭LED
# 反向流水
for pin in reversed(led_pins):
GPIO.output(pin, GPIO.HIGH) # 点亮LED
time.sleep(0.1) # 延时0.1秒
GPIO.output(pin, GPIO.LOW) # 熄灭LED
except KeyboardInterrupt:
print("程序已停止")
finally:
# 清理GPIO设置
GPIO.cleanup()
使用说明:
- 将 LED 的阳极 (长脚) 通过 220Ω 电阻连接到 GPIO 引脚 (17,18,27,22,23,24)
- 将 LED 的阴极 (短脚) 连接到树莓派的 GND
- 根据实际连接修改代码中的
led_pins
列表 - 使用 sudo 权限运行脚本:
sudo python3 led_flow.py
- 按 Ctrl+C 终止程序
注意事项:
确保已安装 RPi.GPIO 库 (树莓派系统默认安装)
操作 GPIO 需使用 sudo 权限
调整延时时间可改变流水速度
结束程序后会自动清理 GPIO 设置