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. 依賴庫不完整。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/83150.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/83150.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/83150.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SMT貼片制造流程關鍵環節解析

內容概要 現代電子制造領域中,SMT(表面貼裝技術)作為核心工藝,其流程的精密性與穩定性直接決定產品性能與生產良率。本文以SMT貼片制造流程為主線,系統解析焊膏印刷、元器件貼裝、回流焊接三大核心工藝的技術要點。其…

HTTP/2與HTTP/3特性詳解:為你的Nginx/Apache服務器開啟下一代Web協議

更多服務器知識,盡在hostol.com 嘿,各位站長和服務器管理員朋友們!咱們天天跟網站打交道,都希望自己的網站能像火箭一樣快,用戶體驗“嗖嗖”的。但你知道嗎?除了服務器硬件配置、代碼優化、CDN加速這些“常…

pytest 常見問題解答 (FAQ)

pytest 常見問題解答 (FAQ) 1. 基礎問題 Q1: 如何讓 pytest 發現我的測試文件? 測試文件命名需符合 test_*.py 或 *_test.py 模式測試函數/方法需以 test_ 開頭測試類需以 Test 開頭(且不能有__init__方法) Q2: 如何運行特定測試? pytest path/to/t…

【前端】SPA v.s. MPA

鏈接:頁面結構 誤區 頁面結構管理有兩種常見方式:路由形式 和 組件形式。路由形式 對應MPA ,組件形式對應SPA ? 誤區 1:路由形式 MPA? 路由是 SPA 和 MPA 共有的概念,區別在于路由映射的對象: MPA 的…

Matlab數據類型

本篇介紹我在南農matlab課程上的所學,我對老師ppt上的內容重新進行了整理并且給出代碼案例。主要內容在矩陣。如果真的想學matlab,我不認為有任何文檔能夠超過官方文檔,請移步至官網,本篇說實話只是寫出來給自己和學弟學妹作期末復…

代碼隨想錄算法訓練營 Day58 圖論Ⅷ 拓撲排序 Dijkstra

圖論 題目 117. 軟件構建 拓撲排序:給出一個有向圖,把這個有向圖轉成線性的排序就叫拓撲排序。 當然拓撲排序也要檢測這個有向圖是否有環,即存在循環依賴的情況,因為這種情況是不能做線性排序的。所以拓撲排序也是圖論中判斷有向…

vscode中launch.json、tasks.json的作用及實例

文章目錄 launch.json是什么作用多環境調試簡單實例進階使用核心配置項解析調試第三方程序 launch.json是什么 顧名思義:它是在.vscode文件夾下的launch.json,所以是vscode啟動調試的配置文件。總結:通過定義調試參數、環境變量和啟動方式&a…

NeRF PyTorch 源碼解讀 - 體渲染

文章目錄 1. 體渲染公式推導1.1. T ( t ) T(t) T(t) 的推導1.2. C ( r ) C(r) C(r) 的推導 2. 體渲染公式離散化3. 代碼解讀 1. 體渲染公式推導 如下圖所示,渲染圖像上點 P P P 的顏色值 c c c 是累加射線 O P → \overrightarrow{OP} OP 在近平面和遠平面范圍…

標題:2025海外短劇爆發年:APP+H5雙端系統開發,解鎖全球流量與變現新大陸

描述: 2025年出海新風口!深度解析海外短劇系統開發核心(APPH5雙端),揭秘高效開發策略與商業化路徑,助您搶占萬億美元市場! 全球娛樂消費模式正在劇變。2025年,海外短劇市場已從藍海…

React JSX語法介紹(JS XML)(一種JS語法擴展,允許在JS代碼中編寫類似HTML的標記語言)Babel編譯

在線調試網站:https://zh-hans.react.dev/learn 文章目錄 JSX:現代前端開發的聲明式語法概述JSX的本質與工作原理什么是JSXJSX轉換流程 JSX語法特性表達式嵌入(JSX允許在大括號內嵌入任何有效的JavaScript表達式)屬性傳遞&#xf…

Unity UI系統中RectTransform詳解

一、基礎代碼示例 public GameObject node; var rect node.GetComponent<RectTransform>();Debug.Log($"anchoredPosition----{rect.anchoredPosition}"); Debug.Log($"offsetMin.x--{rect.offsetMin}"); Debug.Log($"offsetMax.x--{rect.of…

【數據庫】并發控制

并發控制 在數據庫系統&#xff0c;經常需要多個用戶同時使用。同一時間并發的事務可達數百個&#xff0c;這就是并發引入的必要性。 常見的并發系統有三種&#xff1a; 串行事務執行&#xff08;X&#xff09;&#xff0c;每個時刻只有一個事務運行&#xff0c;不能充分利用…

我們來學mysql -- “數據備份還原”sh腳本

數據備份&還原 說明執行db_backup_cover.sh腳本 說明 環境準備&#xff1a;來源數據庫(服務器A)&#xff1b;目標數據庫(服務器B)dbInfo.sh腳本記錄基本信息 來源庫、目標庫的ip、port及執行路徑 # MySQL 客戶端和 mysqldump 的路徑 MYSQL_CLIENT"/work/oracle/mysql…

【NLP 78、手搓Transformer模型結構】

你以為走不出的淤泥&#xff0c;也遲早會云淡風輕 —— 25.5.31 引言 ——《Attention is all you need》 《Attention is all you need》這篇論文可以說是自然語言處理領域的一座里程碑&#xff0c;它提出的 Transformer 結構帶來了一場技術革命。 研究背景與目標 在 Transfo…

深入理解CSS常規流布局

引言 在網頁設計中&#xff0c;理解元素如何排列和相互作用至關重要。CSS提供了三種主要的布局方式&#xff1a;常規流、浮動和定位。本文將重點探討最基礎也是最常用的常規流布局&#xff08;Normal Flow&#xff09;&#xff0c;幫助開發者掌握頁面布局的核心機制。 什么是…

樹結構詳細介紹(javascript版)

樹結構的基本概念 樹是一種非線性數據結構&#xff0c;由節點和連接節點的邊組成。與線性數據結構&#xff08;如數組、鏈表&#xff09;不同&#xff0c;樹具有層次結構&#xff0c;非常適合表示有層次關系的數據。 樹的基本術語 節點 (Node)&#xff1a; 樹中的基本單元&a…

element-plus bug整理

1.el-table嵌入el-image標簽預覽時&#xff0c;顯示錯亂 解決&#xff1a;添加preview-teleported屬性 <el-table-column label"等級圖標" align"center" prop"icon" min-width"80"><template #default"scope"&g…

RabbitMQ和MQTT區別與應用

RabbitMQ與MQTT深度解析&#xff1a;協議、代理、差異與應用場景 I. 引言 消息隊列與物聯網通信的重要性 在現代分布式系統和物聯網&#xff08;IoT&#xff09;生態中&#xff0c;高效、可靠的通信機制是構建穩健、可擴展應用的核心。消息隊列&#xff08;Message Queues&am…

零基礎遠程連接課題組Linux服務器,安裝anaconda,配置python環境(換源),在服務器上運行python代碼【3/3 適合小白,步驟詳細!!!】

遠程連接服務器 請查閱之前的博客——零基礎遠程連接課題組Linux服務器&#xff0c;安裝anaconda&#xff0c;配置python環境&#xff08;換源&#xff09;&#xff0c;在服務器上運行python代碼【1/3 適合小白&#xff0c;步驟詳細&#xff01;&#xff01;&#xff01;】&am…

Redis最佳實踐——安全與穩定性保障之訪問控制詳解

Redis 在電商應用的安全與穩定性保障之訪問控制全面詳解 一、安全訪問控制體系架構 1. 多層級防護體系 #mermaid-svg-jpkDj2nKxCq9AXIW {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-jpkDj2nKxCq9AXIW .error-ico…