当前位置: 首页 > article >正文

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 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. 依赖库不完整。

相关文章:

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&#xff0…...

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 模块创建命令行界面的示例。它定义了一系列的命令行参数和子命令&#xff0c;通常用于构建和管理软件项目或版本控制系统中的操作。以下是对代码的逐行分析&#xff1a; 1初始化 ArgumentParser parser argparse.ArgumentParser(forma…...

2. 手写数字预测 gui版

2. 手写数字预测 gui版 背景1.界面绘制2.处理图片3. 加载模型4. 预测5.结果6.一点小问题 背景 做了手写数字预测的模型&#xff0c;但是老是跑模型太无聊了&#xff0c;就配合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)

大模型应用开发第五讲&#xff1a;成熟度模型&#xff1a;从ChatGPT&#xff08;L2&#xff09;到未来自主Agent&#xff08;L4&#xff09; 资料取自《大模型应用开发&#xff1a;动手做AI Agent 》。 查看总目录&#xff1a;学习大纲 关于DeepSeek本地部署指南可以看下我之…...

特别篇-产品经理(三)

一、市场与竞品分析—竞品分析 1. 课后总结 案例框架&#xff1a;通过"小新吃蛋糕"案例展示行业分析方法&#xff0c;包含四个关键步骤&#xff1a; 明确目标行业调研确定竞品分析竞争策略输出结论 1&#xff09;行业背景分析方法 PEST分析法&#xff1a;从四个…...

IP地址扫描 网络状态监测 企业网络管理 免安装,企业级 IP 监控防未授权接入

各位网络小卫士们&#xff01;今天咱来聊聊一款超厉害的局域网IP地址扫描工具——IPScaner V1.22。这玩意儿就像网络世界的大侦探&#xff0c;能快速识别网络里设备的状态和资源分布。下面咱就好好唠唠它的那些事儿。 软件获取夸克网盘下载 先说说它的核心功能。第一个是IP…...

【unity游戏开发——编辑器扩展】AssetDatabase公共类在编辑器环境中管理和操作项目中的资源

注意&#xff1a;考虑到编辑器扩展的内容比较多&#xff0c;我将编辑器扩展的内容分开&#xff0c;并全部整合放在【unity游戏开发——编辑器扩展】专栏里&#xff0c;感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言一、AssetDatabase常用API1、创建资源1.1 API1.2 示例 …...

BLE协议全景图:从0开始理解低功耗蓝牙

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

【机器学习基础】机器学习入门核心算法:GBDT(Gradient Boosting Decision Tree)

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

基于开源AI大模型AI智能名片S2B2C商城小程序源码的销售环节数字化实现路径研究

摘要&#xff1a;在数字化浪潮下&#xff0c;企业销售环节的转型升级已成为提升竞争力的核心命题。本文基于清华大学全球产业研究院《中国企业数字化转型研究报告&#xff08;2020&#xff09;》提出的“提升销售率与利润率、打通客户数据、强化营销协同、构建全景用户画像、助…...

Spring Cache核心原理与快速入门指南

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

Redisson学习专栏(四):实战应用(分布式会话管理,延迟队列)

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

java程序从服务器端到Lambda函数的迁移与优化

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

使用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&#xff1a;突破性能天花板 01、WebAssembly&#xff1a;浏览器中的原生性能 WebAssembly&#xff08;Wasm&#xff09;是一种可在现代浏览器中运行的二进制指令格式&#xff0c;其性能接近原生代码。结合Vue 3的响应式架构&#xff0c;我们可以在前端…...

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 #解压安装依赖&#xff08;如未安装&#xff09; yum groupinstall "Development Tools" -y yum…...

Kotlin 中集合遍历有哪几种方式?

1 for-in 循环&#xff08;最常用&#xff09; 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++ 核心操作

图像卷积&#xff1a;OpenCV C 核心操作 图像卷积是图像处理和计算机视觉领域最基本且最重要的操作之一。它通过一个称为卷积核&#xff08;或滤波器&#xff09;的小矩阵&#xff0c;在输入图像上滑动&#xff0c;并对核覆盖的图像区域执行元素对应相乘后求和的运算&#xff…...

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&#xff0c;返回所有它能表示的字母组合。数字与字母的映射关系如下&#xff08;与电话按键相同&#xff09;&#xff1a; 2: "abc", 3: "def", 4: "ghi", …...

Gartner《2025 年软件工程规划指南》报告学习心得

一、引言 软件工程领域正面临着前所未有的变革与挑战。随着生成式人工智能(GenAI)等新兴技术的涌现、市场环境的剧烈动荡以及企业对软件工程效能的更高追求,软件工程师们必须不断适应和拥抱变化,以提升自身竞争力并推动业务发展。Gartner 公司发布的《2025 年软件工程规划…...

数据库 | 使用timescaledb和大模型进行数据分析

时序数据库&#xff1a;timescaledb 大模型&#xff1a;通义千问2.5 对话开始前提示词&#xff1a; 我正在做数据分析&#xff0c;以下是已知信息: 数据库:timescaledb&#xff0c;表名&#xff1a;dm_tag_value&#xff0c;tag_name列是位号名&#xff0c;app_time列是时间,…...

快速阅读源码

Doxygen 轻松生成包含类图、调用关系图的 HTML 和 PDF 文档, Graphviz 可以用来生成类图、调用图 sudo apt-get install doxygen graphviz brew install doxygen graphviz#HTML 文档&#xff1a; open docs/html/index.html一、Doxyfile配置: Doxyfile 文件 doxygen Doxyfile P…...