Ubuntu下编译mininim游戏全攻略

article/2025/6/22 13:46:33

目录

    • 一、安装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 515 18:02 .
drwxrwxr-x 16 lyy  lyy    4096 515 17:54 ..
drwxrwxr-x 15 lyy  lyy    4096 515 17:54 addons
-rw-rw-r--  1 lyy  lyy   58293 515 17:54 CMakeCache.txt
drwxrwxr-x  6 lyy  lyy    4096 515 18:02 CMakeFiles

lib目录中主要是allegro5 的各种库,主要是动态库,已经成功创建。文件名一般是 liballegroxxx.so.5.2.5 ,如果你用ls 查看 lib目录下的文件

 ls -al lib

会出现这样一些文件,

lrwxrwxrwx  1 lyy lyy      24 515 17:55 liballegro_acodec.so -> liballegro_acodec.so.5.2
lrwxrwxrwx  1 lyy lyy      26 515 17:55 liballegro_acodec.so.5.2 -> liballegro_acodec.so.5.2.5
-rwxrwxr-x  1 lyy lyy  221560 515 17:55 liballegro_acodec.so.5.2.5
lrwxrwxrwx  1 lyy lyy      23 515 17:55 liballegro_audio.so -> liballegro_audio.so.5.2
lrwxrwxrwx  1 lyy lyy      25 515 17:55 liballegro_audio.so.5.2 -> liballegro_audio.so.5.2.5
-rwxrwxr-x  1 lyy lyy  435744 515 17:55 liballegro_audio.so.5.2.5
lrwxrwxrwx  1 lyy lyy      23 515 17:55 liballegro_color.so -> liballegro_color.so.5.2
lrwxrwxrwx  1 lyy lyy      25 515 17:55 liballegro_color.so.5.2 -> liballegro_color.so.5.2.5
-rwxrwxr-x  1 lyy lyy   74840 515 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

通过分析错误得到如下可能的原因:

  1. 文件与系统架构不兼容。
  2. 文件可能损坏。
  3. 文件没有可执行权限。
  4. 依赖库不完整。

http://www.hkcw.cn/article/CGyYlckPHK.shtml

相关文章

org.junit.runners.model.InvalidTestClassError:此类问题的解决

不知道大家是否遇见过以上这种情况,我也是今天被这个错误搞得很烦,后来通过网上查找资料终于找到了问题所在————就是简单的Test注解的错误使用 Test注解的注意情况 :1 权限必须是public 2 不能有参数 3 返回值类型是void 4 本类的其他的…

2025年渗透测试面试题总结-匿名[校招]渗透测试(打击黑灰产)(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]渗透测试(打击黑灰产) 2. 实习时达成的目标 3. 文件包含漏洞 4. Redis未授权访问利用 5. 钓鱼…

【Hot 100】55. 跳跃游戏

目录 引言跳跃游戏我的解题 🙋‍♂️ 作者:海码007📜 专栏:算法专栏💥 标题:【Hot 100】55. 跳跃游戏❣️ 寄语:书到用时方恨少,事非经过不知难! 引言 跳跃游戏 &#x…

Go 语言的 GC 垃圾回收

序言 垃圾回收(Garbage Collection,简称 GC)机制 是一种自动内存管理技术,主要用于在程序运行时自动识别并释放不再使用的内存空间,防止内存泄漏和不必要的资源浪费。这篇文章让我们来看一下 Go 语言的垃圾回收机制是如…

qwen 2.5 并行计算机制:依靠 PyTorch 和 Transformers 库的分布式能力

qwen 2.5 并行计算机制:依靠 PyTorch 和 Transformers 库的分布式能力 完整可运行代码: import torch import torch.nn.functional as F from transformers

如何评估CAN总线信号质量

CAN总线网络的性能在很大程度上取决于其信号质量。信号质量差可能导致通信错误,进而引发系统故障、效率降低甚至安全隐患。因此,评估和确保CAN总线信号质量是维护系统健康和可靠性的关键。 在CAN总线网络中,数据通过双绞线上的差分信号传输。…

第三方软件评测机构如何助力软件品质提升及企业发展?

第三方软件评测机构与软件开发者及使用者无直接关联,它们提供全方位的检测和公正的评价服务。这样的评测可以展现客观的成效,对提升软件的品质具有显著影响,且在软件产业中发挥着至关重要的角色。 评测的客观性 独立第三方机构与软件开发者…

Linux之MySQL安装篇

1.确保Yum环境是否能正常使用 使用yum环境进行软件的安装 yum -y install mysql-server mysql2.确保软件包已正常完成安装 3.设置防火墙和selinux配置 ## 关闭防火墙 systemctl stop firewalld## 修该selinux配置 vim /etc/selinux/config 将seliuxenforcing修改为sel…

Java 项目架构设计:模块化、分层架构的实战经验

Java 项目架构设计:模块化、分层架构的实战经验 在当今复杂多变的软件开发领域,Java 项目架构设计起着至关重要的作用。良好的架构设计不仅能够提升项目的可维护性、可扩展性,还能有效降低系统的耦合度,提高开发效率。而模块化与…

uniapp 键盘顶起页面问题

关于uniapp中键盘顶起页面的问题。这是一个在移动应用开发中常见的问题,特别是当输入框位于页面底部时,键盘弹出会顶起整个页面,导致页面布局错乱。 pages.json 文件内,在需要处理软键盘的页面添加 softinputMode 配置&#xff1…

截面动量策略思路

该策略旨在实现期货日频多品种交易,采用MA双均线结合百分比追踪止损的方法。策略建议初始资金为1000000元,并基于2012年1月1日至今的数据进行回测。策略的核心逻辑包括主力合约的动态切换、双均线交叉信号的生成以及基于百分比的追踪止损机制。 交易逻辑…

HCIE-STP复习

文章目录 STP STP 🏡作者主页:点击! 🤖Datacom专栏:点击! ⏰️创作时间:2025年05月31日13点17STP通过三要素选举消除环路: 根桥(BID最小,建议设优先级为0&…

Git入门到精通:30分钟掌握核心技巧

目录 一、基础理论片 Git简介 Git安装 Git仓库 Git基本命令用法 仓库别名 二、实操命令篇 远程分支 分支的新建和合并 实操演示 1 本地新建仓库 2 gitee新建仓库 3 建立关系 4 新建分支 5 开发新功能 6 推送新分支 7 合并新分支到主分支 三、可视化工具篇 G…

告别压降损耗与反向电流困扰:汽车电子电源防反接方案全面解析与理想二极管应用

在汽车电子系统中,由于电源反接、快速负脉冲群、微关断、叠加交流等防护要求,需要设计防反电路。常见电路中,依赖肖特基二极管实现电池反接保护和电源冗余(ORing)设计。然而,随着功率密度和效率要求飙升&am…

5.1 初探大数据流式处理

在本节中,我们深入探讨了大数据流式处理的基础知识和关键技术。首先,我们区分了批式处理和流式处理两种大数据处理方式,了解了它们各自的适用场景和特点。流式处理以其低延迟和高实时性适用于需要快速响应的场景,而批式处理则适用…

线程概念与控制

目录 Linux线程概念 什么是线程 分页式存储管理 虚拟地址和页表的由来 物理内存管理 页表 提问 解答 缺页异常 线程的优点 线程的缺点 线程异常 Linux进程VS线程 进程与线程 进程的多个线程共享 进程与线程关系如图 Linux线程控制 POSIX线程库 创建线程 测试…

SAR ADC 同步逻辑设计

SAR ADC的逻辑是重要的一个模块,可以分为同步逻辑和异步逻辑,对于低速SAR ADC,一般采用同步逻辑,对于高速SAR ADC,一般采用异步逻辑。 对于同步逻辑,由于架构不同,有先置位再比较,也…

用不太严谨的文字介绍遥测自跟踪天线的基本原理

前两天跟一个客户见面的时候,客户问我:遥测自跟踪天线能够跟踪目标,是什么原理?不需要目标的位置,怎么做到自跟踪的? 突然一瞬间,有点语塞。 难道要介绍天线、馈源、极化、左旋、右旋、和差网…

谷歌工作自动化——仙盟大衍灵机——仙盟创梦IDE

下载地址 https://chromewebstore.google.com/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd https://chrome.zzzmh.cn/info/mooikfkahbdckldjjndioackbalphokd

AI学习笔记(一)背景学习

什么是AI、机器学习、深度学习、强化学习,他们之间是什么关联关系? AI(Artificial_intelligence):即人工智能是指计算系统执行通常与人类智能相关的任务的能力,例如学习、推理、解决问题、感知和决策 机器…