Ubuntu下编译mininim游戏全攻略
目录
- 一、安装mininim 软件所依赖的库(重点是allegro游戏引擎库)
- 二、编译mininim 软件
- 三、将mininim打包给另一个Ubuntu系统使用
- 四、安卓手机运行mininim
一、安装mininim 软件所依赖的库(重点是allegro游戏引擎库)
1. 用apt-get remove命令清除干净之前可能安装过的各项allegro5依赖库(如果系统没有这些库,也不报错)
sudo apt-get remove liballegro5-dev liballegro-image5-dev liballegro-audio5-dev liballegro-acodec5-dev liballegro-dialog5-dev
2.用apt-get install 命令安装各种make、gcc等编译工具链软件(以防Ubuntu系统没有,如果已用有,则会自动下载更新到合适版本或最新版本),gnulib和lua50库等。
sudo apt-get install automake autoconf gcc make cmake gnulib libcanberra-gtk-module lua50 liblua50-dev liblualib50-dev libreadline-dev
3.用 apt-get build-dep 命令检测 allegro5游戏库的环境依赖是否完整,自动下载必要的依赖项,为编译 Allegro5 源码做好环境准备。注意这条命令并不下载 从仓库中下编译好的allegro5库!
sudo apt-get build-dep allegro5
如果前面都顺利完成,遇到的缺少xx包的提示,你都已经通过 apt-get install xx 的方式解决,那么就可以进行到下面最关键的步骤。
4. 从git源码仓库下载mininim 需要的allegro5.x 版本源码。
这个mininim游戏代码latest版本是2017年,作者使用的是当时的 allegro5.2.3 版本(当前2025年最新版本是5.2.10),作者为此特意fork保留了一份allegro5.2.3 版本代码。但是经过验证发现:这个allegro5.2.3 版本在ubuntu18.04存在自身编译错误,而最新版本allegro5.2.10与mininim也不匹配。只有allegro5.2.5版本能够与mininim适配。因此,这里不能按照mininim作者的readme指导下载( 不使用 git clone https://github.com/oitofelix/allegro5.git 这条命令)。
所以需要使用国内gitee平台上转存的官方的 allegro5.2.5版本。
cd /home/xxx, xxx是你的实际用户名。pwd#应该输出为:/home/xxx#如果不是检查目前所在目录是否正确
5.用 git命令克隆 我备份的的allegro5.2.5版本完整源码:
git clone https://gitee.com/flycloud2009_cloudlou/allegro5_v5.2.5.git
然后,先cd 进入游戏源代码主目录下, 再ls 显示一下目录中的文件, 你会看见文件中有一个 CMakeLists.txt 文件,但是没有 Makefile 文件。
CMakeLists.txt 是cmake工具的默认输入文件,cmake读取CMakeLists.txt内容,进行各项检查配置,如果没有中间出错提示,将会在cmake运行工作目录下成功生成一个 Makefile文件。 这个Makefile文件是下一步 make工具的默认输入文件
cd allegro5_v5.2.5
ls -l
在此目录下,创建 一个 build 子目录以及cd 进入 build子目录中
mkdir build && cd build
在这里,验证一下你当前所在的工作目录,作目录应该是:
/home/xxx/Documents/allegro5_v5.2.5/build
ls -l
ls 显示build目录下空空如也。没有任何目录和文件。
然后进入 Linux系统 代码编译流程的常规第一步: cmake 配置代码编译依赖环境。
先运行cmake, 注意后面 带的参数是两个 …, … 代表上一级目录,这条命令是然 cmake 读取上一级目录下的 CMakeLists.txt 文件。
cmake ..
耐心等待,并注意观察屏幕输出的信息。如果出现错误,cmake会停止工作,从第一条error错误信息进行分析,一般都是缺乏xx库,建议你 sudo apt install xx,你只需要按照提示进行即可。
如果问题都解决了, cmake 会运行完,一般会出现 configure done或类似信息。
此时,在当前目录build 下,你在 ls -l 一下,会看见出现许多目录和文件,其中就用 Makefile文件,文件日期是最新时间。
有了 Makefile文件,就可以进入Linux系统 代码编译流程的常规第二步: make 从源码生成二进制库或可执行文件。
make
make命名后面不带参数,则表示读取当前目录下的Makefile文件。
又需要耐心等待,并注意观察屏幕输出的信息。如果出现错误,make会停止工作,从第一条编译error错误信息进行分析。 如果错误出现在某一个代码文件中xx行某个变量或函数,检查前面步骤是否有遗漏,工作目录、操作命令是否正确。
如果make 成功完成 (没有出现错误信息),在build目录下就会生成lib和include等子目录,如下:
lyy@lyy-virtual-machine:~/allegro5-5.2.5.0/build$ ls -al
total 332
drwxrwxr-x 10 lyy lyy 4096 5月 15 18:02 .
drwxrwxr-x 16 lyy lyy 4096 5月 15 17:54 ..
drwxrwxr-x 15 lyy lyy 4096 5月 15 17:54 addons
-rw-rw-r-- 1 lyy lyy 58293 5月 15 17:54 CMakeCache.txt
drwxrwxr-x 6 lyy lyy 4096 5月 15 18:02 CMakeFiles
lib目录中主要是allegro5 的各种库,主要是动态库,已经成功创建。文件名一般是 liballegroxxx.so.5.2.5 ,如果你用ls 查看 lib目录下的文件
ls -al lib
会出现这样一些文件,
lrwxrwxrwx 1 lyy lyy 24 5月 15 17:55 liballegro_acodec.so -> liballegro_acodec.so.5.2
lrwxrwxrwx 1 lyy lyy 26 5月 15 17:55 liballegro_acodec.so.5.2 -> liballegro_acodec.so.5.2.5
-rwxrwxr-x 1 lyy lyy 221560 5月 15 17:55 liballegro_acodec.so.5.2.5
lrwxrwxrwx 1 lyy lyy 23 5月 15 17:55 liballegro_audio.so -> liballegro_audio.so.5.2
lrwxrwxrwx 1 lyy lyy 25 5月 15 17:55 liballegro_audio.so.5.2 -> liballegro_audio.so.5.2.5
-rwxrwxr-x 1 lyy lyy 435744 5月 15 17:55 liballegro_audio.so.5.2.5
lrwxrwxrwx 1 lyy lyy 23 5月 15 17:55 liballegro_color.so -> liballegro_color.so.5.2
lrwxrwxrwx 1 lyy lyy 25 5月 15 17:55 liballegro_color.so.5.2 -> liballegro_color.so.5.2.5
-rwxrwxr-x 1 lyy lyy 74840 5月 15 17:55 liballegro_color.so.5.2.5
重点注意是否生成 liballegro.so.5.2.5,liballegro_dialog.so.5.2.5,liballegro_image.so.5.2.5,liballegro_video.so.5.2.5,liballegro_primitives.so.5.2.5
文件。
这些库只是保存在build目录,需要将它们安装到 ubuntu系统的公共目录中 (一般是 /usr/local/lib等目录下)。
运行下面命令,make 会按照Makefile中 install对应的项目规则(主要是一些 cp 命名),把相关库文件复制到公共系统目录中。
sudo make install
安装游戏引擎allegro5 (准确是5.2.5 版本)就完成了。 为了稳妥起见,可以运行一下上面make编译 allegro5.2.5 库时,它顺带编译生成的一些demo游戏程序,看是否能正常运行。
做法如下,进入examples目录,选择一个程序运行:
cd examples./ex_multiwin
如果程序出现窗口,表示代码正常运行,就可以退出了。
二、编译mininim 软件
接着上面的步骤继续。 下载mininim仓库源码,进行编译。 此时你的工作目标应该重新返回到home目录下
cd /home/xxx
然后下载mininim仓库源码。
git clone https://gitee.com/flycloud2009_cloudlou/mininim.git
下载成功后,进入游戏目录,进行环境准备(运行作者写的脚本文件 bootstrap),执行常规的环境依赖配置(运行作者写的configure)
./bootstrap
./configure LUA_LIB="-llua50 -llualib50"
如果上面都没有出错,目录下将生成 Makefile 文件。
正式编译 mininim 源代码:
make
耐心等待。如果没有出错,当前目录下 出现一个游戏程序文件 mininim,运行它
./mininim
此时你可以参看一下 mininim 具体依赖哪些动态支持库,运行
ldd ./mininim
显示信息类似这样
linux-vdso.so.1 (0x00007ffdb15c3000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007faa84fc6000)
libreadline.so.7 => /lib/x86_64-linux-gnu/libreadline.so.7 (0x00007faa84d7d000)
liballegro.so.5.2 => /usr/local/lib/liballegro.so.5.2 (0x00007faa84a7d000)
liballegro_image.so.5.2 => /usr/local/lib/liballegro_image.so.5.2 (0x00007faa8486f000)
liballegro_audio.so.5.2 => /usr/local/lib/liballegro_audio.so.5.2 (0x00007faa84653000)
liballegro_acodec.so.5.2 => /usr/local/lib/liballegro_acodec.so.5.2 (0x00007faa84447000)
liballegro_font.so.5.2 => /usr/local/lib/liballegro_font.so.5.2 (0x00007faa8423d000)
liballegro_primitives.so.5.2 => /usr/local/lib/liballegro_primitives.so.5.2 (0x00007faa84028000)
liballegro_dialog.so.5.2 => /usr/lib/x86_64-linux-gnu/liballegro_dialog.so.5.2 (0x00007faa83e1b000)
如果运行 mininim 不报错,那么就应该看到游戏第一关界面
三、将mininim打包给另一个Ubuntu系统使用
1.将mininim整个文件压缩成.zip文件,发送到Windows系统当作转站,又由Win系统发送到另一个Ubuntu系统,也可通过文件传输软件比如FileZilla Client更方便传输;
2.在2号Ubuntu中提取mininim.zip文件,在终端cd到运行程序mininim所在目录,运行命令
./mininim
发现打包的文件并没有顺利运行,因为环境配置不足的问题而无法加载模型,所以仍然需要按照上面的环境配置和游戏配置的步骤,让游戏得以运行。
四、安卓手机运行mininim
1.把Mininim文件打包发送到安卓手机上,运行命令解压该mininim.tar.xz文件:
xz -d mininim.tar.xz
tar -xvf mininim.tar
cd到mininim运行程序目录下,运行命令:
./mininim
出现如下问题
~/downloads/mininim-200927-gnu-linux64 $ ./mininim
./mininim: line 14:
/data/data/com.termux/files/home/downloads/mininim-200927-gnu-linux64/lib/mininim: cannot execute binary file: Exec format error
通过分析错误得到如下可能的原因:
- 文件与系统架构不兼容。
- 文件可能损坏。
- 文件没有可执行权限。
- 依赖库不完整。
相关文章:

Ubuntu下编译mininim游戏全攻略
目录 一、安装mininim 软件所依赖的库(重点是allegro游戏引擎库)二、编译mininim 软件三、将mininim打包给另一个Ubuntu系统使用四、安卓手机运行mininim 一、安装mininim 软件所依赖的库(重点是allegro游戏引擎库) 1. 用apt-get…...

uniapp uni-id Error: Invalid password secret
common文件夹下uni-config-center文件夹下新建uni-id,新建config.json文件 复制粘贴以下代码,不要自己改,格式容易错 {"passwordSecret": [{"type": "hmac-sha256","version": 1}], "passwordStrength&qu…...
用 Appuploader,让 iOS 上架流程真正“可交接、可记录、可复用”:我们是这样实现的
你可能听说过这样一类人:上线必找他,证书只有他有,Transporter 密码在他电脑上,描述文件什么时候过期,只有他知道。 如果你团队里有这样一位“发布大师”,他可能是个英雄——但也是个单点风险源。 我们团…...

第十二节:第三部分:集合框架:List系列集合:特点、方法、遍历方式、ArrayList集合的底层原理
List系列集合特点 List集合的特有方法 List集合支持的遍历方式 ArrayList集合的底层原理 ArrayList集合适合的应用场景 代码:List系列集合遍历方式 package com.itheima.day19_Collection_List;import java.util.ArrayList; import java.util.Iterator; import jav…...

【办公类-18-07】20250527屈光检查PDF文件拆分成多个pdf(两页一份,用幼儿班级姓名命名文件)
背景需求: 今天春游,上海海昌公园。路上保健老师收到前几天幼儿的屈光视力检查单PDF。 她说:所有孩子的通知都做在一个PDF里,我没法单独发给班主任。你有什么办法拆开来? 我说:“没问题,问deep…...

AI Agent的“搜索大脑“进化史:从Google API到智能搜索生态的技术变革
AI Agent搜索革命的时代背景 2025年agent速度发展之快似乎正在验证"2025年是agent元年"的说法,而作为agent最主要的应用工具之一(另外一个是coding),搜索工具也正在呈现快速的发展趋势。Google在2024年12月推出Gemini Deep Research࿰…...

Arduino学习-跑马灯
1、效果 2、代码 /**** 2025-5-30 跑马灯的小程序 */ //时间间隔 int intervaltime200; //初始化函数 void setup() {// put your setup code here, to run once://设置第3-第7个引脚为输出模式for(int i3;i<8;i){pinMode(i,OUTPUT);} }//循环执行 void loop() {// put you…...
python创建args命令行分析
这段代码是一个使用 Python 的 argparse 模块创建命令行界面的示例。它定义了一系列的命令行参数和子命令,通常用于构建和管理软件项目或版本控制系统中的操作。以下是对代码的逐行分析: 1初始化 ArgumentParser parser argparse.ArgumentParser(forma…...

2. 手写数字预测 gui版
2. 手写数字预测 gui版 背景1.界面绘制2.处理图片3. 加载模型4. 预测5.结果6.一点小问题 背景 做了手写数字预测的模型,但是老是跑模型太无聊了,就配合pyqt做了一个可视化界面出来玩一下 源代码可以去这里https://github.com/Leezed525/pytorch_toy拿 …...
js数据类型有哪些?它们有什么区别?
js数据类型共有8种,分别是undefined,null,boolean,number,string,Object,symbol,bigint symbol和bigint是es6中提出来的数据类型 symbol创建后独一无二不可变的数据类型,它主要是为了解决出现全局变量冲突的问题 bigint 是一种数字类型的数据,它可以表示任意精度格式的整数,…...
大模型应用开发第五讲:成熟度模型:从ChatGPT(L2)到未来自主Agent(L4)
大模型应用开发第五讲:成熟度模型:从ChatGPT(L2)到未来自主Agent(L4) 资料取自《大模型应用开发:动手做AI Agent 》。 查看总目录:学习大纲 关于DeepSeek本地部署指南可以看下我之…...

特别篇-产品经理(三)
一、市场与竞品分析—竞品分析 1. 课后总结 案例框架:通过"小新吃蛋糕"案例展示行业分析方法,包含四个关键步骤: 明确目标行业调研确定竞品分析竞争策略输出结论 1)行业背景分析方法 PEST分析法:从四个…...
IP地址扫描 网络状态监测 企业网络管理 免安装,企业级 IP 监控防未授权接入
各位网络小卫士们!今天咱来聊聊一款超厉害的局域网IP地址扫描工具——IPScaner V1.22。这玩意儿就像网络世界的大侦探,能快速识别网络里设备的状态和资源分布。下面咱就好好唠唠它的那些事儿。 软件获取夸克网盘下载 先说说它的核心功能。第一个是IP…...

【unity游戏开发——编辑器扩展】AssetDatabase公共类在编辑器环境中管理和操作项目中的资源
注意:考虑到编辑器扩展的内容比较多,我将编辑器扩展的内容分开,并全部整合放在【unity游戏开发——编辑器扩展】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、AssetDatabase常用API1、创建资源1.1 API1.2 示例 …...

BLE协议全景图:从0开始理解低功耗蓝牙
BLE(Bluetooth Low Energy)作为一种针对低功耗场景优化的通信协议,已经广泛应用于智能穿戴、工业追踪、智能家居、医疗设备等领域。 本文是《BLE 协议实战详解》系列的第一篇,将从 BLE 的发展历史、协议栈结构、核心机制和应用领域出发,为后续工程实战打下全面认知基础。 …...

【机器学习基础】机器学习入门核心算法:GBDT(Gradient Boosting Decision Tree)
机器学习入门核心算法:GBDT(Gradient Boosting Decision Tree) 1. 算法逻辑2. 算法原理与数学推导2.1 目标函数2.2 负梯度计算2.3 决策树拟合2.4 叶子权重计算2.5 模型更新 3. 模型评估评估指标防止过拟合 4. 应用案例4.1 金融风控4.2 推荐系…...

基于开源AI大模型AI智能名片S2B2C商城小程序源码的销售环节数字化实现路径研究
摘要:在数字化浪潮下,企业销售环节的转型升级已成为提升竞争力的核心命题。本文基于清华大学全球产业研究院《中国企业数字化转型研究报告(2020)》提出的“提升销售率与利润率、打通客户数据、强化营销协同、构建全景用户画像、助…...

Spring Cache核心原理与快速入门指南
文章目录 前言一、Spring Cache核心原理1.1 架构设计思想1.2 运行时执行流程1.3 核心组件协作1.4 关键机制详解1.5 扩展点设计1.6 与Spring事务的协同 二、快速入门实战三、局限性3.1 多级缓存一致性缺陷3.2 分布式锁能力缺失3.3 事务集成陷阱 总结 前言 在当今高并发、低延迟…...

Redisson学习专栏(四):实战应用(分布式会话管理,延迟队列)
文章目录 前言一、为什么需要分布式会话管理?1.1 使用 Redisson 实现 Session 共享 二、订单超时未支付?用延迟队列精准处理2.1 RDelayedQueue 核心机制2.2 订单超时处理实战 总结 前言 在现代分布式系统中,会话管理和延迟任务处理是两个核心…...

java程序从服务器端到Lambda函数的迁移与优化
source:https://www.jfokus.se/jfokus24-preso/From-Serverful-to-Serverless-Java.pdf 从传统的服务器端Java应用,到如今的无服务器架构。这不仅仅是技术名词的改变,更是开发模式和运维理念的一次深刻变革。先快速回顾一下我们熟悉的“服务…...

使用yocto搭建qemuarm64环境
环境 yocto下载 # 源码下载 git clone git://git.yoctoproject.org/poky git reset --hard b223b6d533a6d617134c1c5bec8ed31657dd1268 构建 # 编译镜像 export MACHINE"qemuarm64" . oe-init-build-env bitbake core-image-full-cmdline 运行 # 跑虚拟机 export …...
Vue 3前沿生态整合:WebAssembly与TypeScript深度实践
一、Vue 3 WebAssembly:突破性能天花板 01、WebAssembly:浏览器中的原生性能 WebAssembly(Wasm)是一种可在现代浏览器中运行的二进制指令格式,其性能接近原生代码。结合Vue 3的响应式架构,我们可以在前端…...

Linux系统下安装配置 Nginx
Windows Nginx https://nginx.org/en/download.htmlLinux Nginx https://nginx.org/download/nginx-1.24.0.tar.gz解压 tar -zxvf tar -zxvf nginx-1.18.0.tar.gz #解压安装依赖(如未安装) yum groupinstall "Development Tools" -y yum…...
Kotlin 中集合遍历有哪几种方式?
1 for-in 循环(最常用) val list listOf("A", "B", "C") for (item in list) {print("$item ") }// A B C 2 forEach 高阶函数 val list listOf("A", "B", "C") list.forEac…...
图像卷积OpenCV C/C++ 核心操作
图像卷积:OpenCV C 核心操作 图像卷积是图像处理和计算机视觉领域最基本且最重要的操作之一。它通过一个称为卷积核(或滤波器)的小矩阵,在输入图像上滑动,并对核覆盖的图像区域执行元素对应相乘后求和的运算ÿ…...

LiveGBS作为下级平台GB28181国标级联2016|2022对接海康大华宇视华为政务公安内网等GB28181国标平台查看级联状态及会话
LiveGBS作为下级平台GB28181国标级联2016|2022对接海康大华宇视华为政务公安内网等GB28181国标平台查看级联状态及会话 1、GB/T28181级联概述2、搭建GB28181国标流媒体平台3、获取上级平台接入信息3.1、向下级提供信息3.2、上级国标平台添加下级域3.3、接入LiveGBS示例 4、配置…...
leetcode17.电话号码的字母组合:字符串映射与回溯的巧妙联动
一、题目深度解析与字符映射逻辑 题目描述 给定一个仅包含数字 2-9 的字符串 digits,返回所有它能表示的字母组合。数字与字母的映射关系如下(与电话按键相同): 2: "abc", 3: "def", 4: "ghi", …...

Gartner《2025 年软件工程规划指南》报告学习心得
一、引言 软件工程领域正面临着前所未有的变革与挑战。随着生成式人工智能(GenAI)等新兴技术的涌现、市场环境的剧烈动荡以及企业对软件工程效能的更高追求,软件工程师们必须不断适应和拥抱变化,以提升自身竞争力并推动业务发展。Gartner 公司发布的《2025 年软件工程规划…...
数据库 | 使用timescaledb和大模型进行数据分析
时序数据库:timescaledb 大模型:通义千问2.5 对话开始前提示词: 我正在做数据分析,以下是已知信息: 数据库:timescaledb,表名:dm_tag_value,tag_name列是位号名,app_time列是时间,…...
快速阅读源码
Doxygen 轻松生成包含类图、调用关系图的 HTML 和 PDF 文档, Graphviz 可以用来生成类图、调用图 sudo apt-get install doxygen graphviz brew install doxygen graphviz#HTML 文档: open docs/html/index.html一、Doxyfile配置: Doxyfile 文件 doxygen Doxyfile P…...