Linux運維_Bash腳本_構建安裝Meson-1.0.1和Ninja-1.11.1

Linux運維_Bash腳本_構建安裝Meson-1.0.1和Ninja-1.11.1

Bash (Bourne Again Shell) 是一個解釋器,負責處理 Unix 系統命令行上的命令。它是由 Brian Fox 編寫的免費軟件,并于 1989 年發布的免費軟件,作為 Sh (Bourne Shell) 的替代品。

您可以在 Linux 和 MacOS 機器上使用 Bash,甚至可以通過適用于 Linux 的 Windows 子系統在 Windows 10 機器上使用。

使用方法

  • 下載源碼包:

meson-1.0.1.tar.gz

re2c-3.1.tar.gz

ninja-1.11.1.tar.gz

  • 放于指定路徑:

這里 Bash Shell 腳本的全局變量 STORAGE 指定的存放源碼包的路徑 /home/goufeng 可進行修改。

  • 執行 Bash Shell 腳本:

輸入 /[路徑名]/[腳本名].sh 即可進行自動編譯部署,過程中提示輸入 (y/n) 輸入 y 則進行下一步,這樣分階段確認的原因是為了確保能夠看到上一個源碼編譯結果中可能的錯誤和提示。

完整腳本

#! /bin/bash
# Create By GF 2024-02-20 21:42# Install First: GNU-Tools (Contains: pkg-config, m4, autoconf, automake, libtool, gettext, flex, bison, libiconv, make)# ------------------ Meson - 1.0.1 -----------------
# Need File: meson-1.0.1.tar.gz
# ---------- Ninja - 1.11.1 - configure.py ---------
# Need File: re2c-3.1.tar.gz
# Need File: ninja-1.11.1.tar.gz# ##################################################
STORAGE=/home/goufeng# ########################################### Meson - 1.0.1 ########################################### Function: 構建安裝(Build Install) Meson-1.0.1 (by Python3)
# ##################################################
function Build_Install_Meson_1_0_1_by_Python3() {if [[ ! -f "/usr/local/bin/meson" ]]; then# Meson 工具一般和 Ninja 工具一起使用。# Meson 可以使用 Python 的 Pip 工具安裝: pip install --user meson# Meson 可以從源碼進行構建安裝: python3 setup.py build 以及 python3 setup.py install# Ninja 可以使用 Python 的 Pip 工具安裝: pip install --user ninja# Ninja 可以從源碼進行構建安裝: python3 ./configure.py --bootstrap (需要下載含有 configure.py 的源碼包)local VERIFYlocal STEP_UNZIPPED=0local STEP_BUILDED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Build and Install ( meson-1.0.1 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/meson-1.0.1.tar.gz && STEP_UNZIPPED=1# ------------------------------------------cd $STORAGE/meson-1.0.1 && python3 setup.py build && STEP_BUILDED=1# ------------------------------------------cd $STORAGE/meson-1.0.1 && python3 setup.py install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/Python-3.8.0/bin/meson /usr/local/bin/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/meson-1.0.1 && return 0elseecho "[Caution] Bin: ( /usr/local/bin/meson ) Already Exists."# ------------------------------------------return 0fi
}# ################################### Ninja - 1.11.1 - configure.py ################################### Function: 編譯安裝(Compile Install) re2c-3.1
# ##################################################
function Compile_Install_re2c_3_1() {if [[ ! -f "/usr/local/bin/re2c" ]]; thenlocal VERIFYlocal STEP_UNZIPPED=0local STEP_AUTOGEN=0local STEP_CONFIGURED=0local STEP_INSTALLED=0# ------------------------------------------read -p "[Confirm] Compile and Install ( re2c-3.1 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar -zxvf $STORAGE/re2c-3.1.tar.gz && STEP_UNZIPPED=1# ------------------------------------------# * Problem: aclocal: warning: couldn't open directory 'm4': No such file or directory#   - Solve: 只是由于文件夾下沒有 m4 文件夾導致, 只需要在當前文件夾下創建一個 m4 文件夾即可 (mkdir m4)。# ..........................................# * Problem: Makefile.am:477: error: Libtool library used but 'LIBTOOL' is undefined#            Makefile.am:477:   The usual way to define 'LIBTOOL' is to add 'LT_INIT'#            Makefile.am:477:   to 'configure.ac' and run 'aclocal' and 'autoconf' again.#            Makefile.am:477:   If 'LT_INIT' is in 'configure.ac', make sure#            Makefile.am:477:   its definition is in aclocal's search path.#            autoreconf: automake failed with exit status: 1#   - Solve: 原因是 automake 和 libtool 沒有安裝在同一目錄中, 導致 aclocal 在路徑中找不到 .m4 文件。#            解決方法 (1):#                1. 執行 aclocal --print-ac-dir 查看 aclocal 的路徑, 例如顯示 /opt/automake-1.15/share/aclocal#                2. 將 libtool 的 share/aclocal 目錄中的 .m4 文件復制到 /opt/automake-1.15/share/aclocal (cp /opt/libtool-2.4.6/share/aclocal/*.m4 /opt/automake-1.15/share/aclocal/)#                3. 再次執行 autoreconf, 問題解決。#            解決方法 (2):#                1. 確保二進制 bin 文件: "aclocal" (包含在 automake 中) 和 "libtoolize" (包含在 libtool 中) 在可找到 PATH 中 (最好是同一路徑下)#                2. 先執行 libtoolize, 會在當前目錄自動生成要用到的 .m4 文件, 再執行 autoreconf, 問題解決。cd $STORAGE/re2c-3.1 && ./autogen.sh && STEP_AUTOGEN=1# ------------------------------------------cd $STORAGE/re2c-3.1 && ./configure --prefix=/opt/re2c-3.1 && STEP_CONFIGURED=1# ------------------------------------------make && make install && STEP_INSTALLED=1# ------------------------------------------if [[ $STEP_INSTALLED == 1 ]]; thenln -sf /opt/re2c-3.1/bin/re2c    /usr/local/bin/ln -sf /opt/re2c-3.1/bin/re2go   /usr/local/bin/ln -sf /opt/re2c-3.1/bin/re2rust /usr/local/bin/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/re2c-3.1 && return 0elseecho "[Caution] Bin: ( /usr/local/bin/re2c ) Already Exists."# ------------------------------------------return 0fi
}# Function: 構建安裝(Build Install) Ninja-1.11.1-by-Py-Configure (by Python3)
# ##################################################
function Build_Install_Ninja_1_11_1_by_Py_Configure_by_Python3() {if [[ ! -f "/usr/local/bin/ninja" ]]; then# Ninja 工具一般配合 Meson 工具使用。# Meson 可以使用 Python 的 Pip 工具安裝: pip install --user meson# Meson 可以從源碼進行構建安裝: python3 setup.py build 以及 python3 setup.py install# Ninja 可以使用 Python 的 Pip 工具安裝: pip install --user ninja# Ninja 可以從源碼進行構建安裝: python3 ./configure.py --bootstrap (需要下載含有 configure.py 的源碼包)local VERIFYlocal STEP_UNZIPPED=0local STEP_BUILDED=0# ------------------------------------------read -p "[Confirm] Build and Install ( ninja-1.11.1 )? (y/n)>" VERIFYif [[ "$VERIFY" != "y" ]]; then exit 1; fi# ------------------------------------------tar zxvf $STORAGE/ninja-1.11.1.tar.gz && STEP_UNZIPPED=1# ------------------------------------------# * Problem: warning: A compatible version of re2c (>= 0.11.3) was not found; changes to src/*.in.cc will not affect your build.#   - Solve: Install re2c.# ..........................................# * Caution: 構建完成后, 構建目錄下將生成 ninja 二進制可執行文件。cd $STORAGE/ninja-1.11.1 && python3 ./configure.py --bootstrap && STEP_BUILDED=1# ------------------------------------------# * Caution: 安裝 Ninja, 其實就是讓系統在需要的時候能找到 Ninja 這個二進制文件并運行。if [[ $STEP_BUILDED == 1 ]]; thencp $STORAGE/ninja-1.11.1/ninja /usr/local/bin/fi# ------------------------------------------cd $STORAGE && rm -rf $STORAGE/ninja-1.11.1 && return 0elseecho "[Caution] Bin: ( /usr/local/bin/ninja ) Already Exists."# ------------------------------------------return 0fi
}function main() {# --------------- Meson - 1.0.1 ----------------Build_Install_Meson_1_0_1_by_Python3# -------- Ninja - 1.11.1 - configure.py -------Compile_Install_re2c_3_1Build_Install_Ninja_1_11_1_by_Py_Configure_by_Python3
}main

總結

以上就是關于 Linux運維 Bash腳本 構建安裝Meson-1.0.1和Ninja-1.11.1 的全部內容。

更多內容可以訪問我的代碼倉庫:

https://gitee.com/goufeng928/public

https://github.com/goufeng928/public

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

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

相關文章

Nginx高級技巧:實現負載均衡和反向代理

文章目錄 Nginx概述Nginx作用正向代理反向代理負載均衡動靜分離 Nginx的安裝 -->Docker3.1 安裝Nginx3.2 Nginx的配置文件3.3 修改docker-compose文件 Nginx源碼安裝nginx常用命令nginx配置文件配置文件位置配置文件結構詳情 Nginx的反向代理【重點】基于Nginx實現反向代理4…

C語言冒泡排序(高級版)

目錄: 冒泡排序的原理 主函數 "冒泡排序函數" 比較函數 交換函數 最終輸出 完整代碼 冒泡排序的原理: 冒泡排序的原理是:從左到右,相鄰元素進行比較。每次比較一輪,就會找到序列中最大的一個或最小的一個。這個數就會從序列的最右…

Windows上構建一個和Linux類似的Terminal

preview 目的是在Windows上構建一個和Linux類似的Terminal,讓Windows煉丹和Linux一樣舒適,同是讓Terminal取代Xshell完成遠程鏈接。 預覽如下圖 在Linux下我們使用zsh和oh-my-zsh結合,Windows下我們使用powershell7和oh-my-posh結合。 前提…

Vue 前端開發 v-for和v-if兩個指令不能混合使用

原由: 在進行項目開發的時候因為在一個標簽上同時使用了v-for和v-if兩個指令導致的報錯。 提示錯誤:The undefined variable inside v-for directive should be replaced with a computed property that returns filtered array instead. You should no…

nginx------------緩存功能 ip透傳 負載均衡 (六)

一、http 協議反向代理 (一)反向代理示例:緩存功能 緩存功能可以加速訪問,如果沒有緩存關閉后端服務器后,圖片將無法訪問,緩存功能默認關閉,需要開啟。 ? proxy_cache zone_name | off; 默認off #指明調…

基于Springboot純凈水配送和商城系統設計與實現 開題報告參考

博主介紹:黃菊華老師《Vue.js入門與商城開發實戰》《微信小程序商城開發》圖書作者,CSDN博客專家,在線教育專家,CSDN鉆石講師;專注大學生畢業設計教育和輔導。 所有項目都配有從入門到精通的基礎知識視頻課程&#xff…

2023 版王道單科書勘誤匯總(3.30)

注:因2023版對題目編號做了優化“歷年真題全部放最后、且按年份排序”,以方便大家根據需要保留某些年份的真題作為最后的模擬。所以造成了一些題目和解析的編號錯誤。 數據結構: P11 P20 P56 P278 P326 “2.”中第 3 行”題 5改成”9”,第6行”題 8”改成…

css3詳解

一.什么是CSS3 CSS3是Cascading Style Sheets的第三個版本,是一種用于描述文檔樣式的語言(CSS3是CSS(層疊樣式表)技術的升級版本)。它是前端開發中用于控制網頁布局和樣式的技術之一。CSS3引入了許多新的特性和功能&a…

Linux常用操作命令大全

Linux常用操作命令大全 Linux,作為一款開源的操作系統,深受全世界開發者和系統管理員的喜愛。在Linux環境下,用戶通過命令行界面可以執行各種操作,從而實現對系統的全面控制。本文將詳細介紹Linux中常用的操作命令,幫助讀者更好地理解和運用這些命令。 一、文件操作命令…

hexo圖片顯示不出且圖片路徑錯誤/.com//

參考博客: hexo 圖片顯示問題及使用typora設置圖片路徑-CSDN博客 javascript - hexo 圖片路徑錯誤/.com// - SegmentFault 思否 先說如何讓hexo圖片成功地顯示出來 Step1: 修改config設置 將 _config.yml 設置文件中的 post_asset_folder 修改為 true 這一步的作…

平衡二叉樹,二叉樹的路徑,左葉子之和

第六章 二叉樹part04 今日內容: 110.平衡二叉樹 257. 二叉樹的所有路徑 404.左葉子之和 110.平衡二叉樹 (優先掌握遞歸) 給定一個二叉樹,判斷它是否是高度平衡的二叉樹。 本題中,一棵高度平衡二叉樹定義為&am…

【不可不知的考研復試秘籍 1】

----------------------------------------------------------------------------------------------------- 考研復試科研背景提升班 教你快速深入了解掌握考研復試面試中的常見問題以及注意事項,系統的教你如何在短期內快速提升自己的專業知識水平和編程以及英語…

windows下安裝cnpm

cnpm是淘寶團隊開發的一個針對中國用戶的npm鏡像源,它是npm的一個定制版本。由于國外的npm源在國內訪問速度較慢,所以cnpm鏡像源可以提供更快的下載速度。cnpm的使用方式與npm基本相同,只需將npm替換為cnpm即可。 要想使用cnpm等先安裝node.…

反序列化逃逸 [安洵杯 2019]easy_serialize_php1

打開題目 題目源碼&#xff1a; <?php$function $_GET[f];function filter($img){$filter_arr array(php,flag,php5,php4,fl1g);$filter /.implode(|,$filter_arr)./i;return preg_replace($filter,,$img); }if($_SESSION){unset($_SESSION); }$_SESSION["user&qu…

每日一題 KY148還是暢通工程

某省調查鄉村交通狀況&#xff0c;得到的統計表中列出了任意兩村莊間的距離。省政府“暢通工程”的目標是使全省任何兩個村莊間都可以實現公路交通&#xff08;但不一定有直接的公路相連&#xff0c;只要能間接通過公路可達即可&#xff09;&#xff0c;并要求鋪設的公路總長度…

PostgreSQL對已有表增加自增序列

對已有表增加自增序列&#xff1a; 1、在PostgreSQL當中&#xff0c;我們要實現對已有表的ID字段自增。 首先需創建一個關聯序列&#xff0c;以下sql語句是創建一個序列&#xff1a; CREATE SEQUENCE menu_id_seq START 6000001; 序列名稱是menu_id_seq&#xff0c;起始…

sizeof 和 strlen的區別

sizeof sizeof是單目操作符,sizeof計算變量所棧內存空間大小,單位是字節,如果操作數是類型的話,會計算類型所占大小,sizeof指在乎占用內存空間大小不在乎內容是什么. int main() {int a 0;printf("%zd\n", sizeof(a));printf("%zd\n", sizeof a );printf…

巧【二叉搜索樹的最近公共祖先】【二叉搜索樹的性質】Leetcode 235. 二叉搜索樹的最近公共祖先

【二叉搜索樹的最近公共祖先】【二叉搜索樹性質】Leetcode 235. 二叉搜索樹的最近公共祖先 【巧】解法1 利用二叉搜索樹有序的性質解法2 采用二叉樹求最近公共祖先的方法——后序遍歷 ---------------&#x1f388;&#x1f388;235. 二叉搜索樹的最近公共祖先 題目鏈接&#x…

huggingface上傳或發布自己的模型(大語言模型LLM)

創建huggingface賬號和token 在https://huggingface.co/join注冊huggingface賬號&#xff0c;登錄賬號后&#xff0c;在https://huggingface.co/settings/tokens創建token&#xff0c;注意需要將token的類型設置為WRITE。 安裝必要軟件包和初始化環境 安裝git lfs curl -s …

Springboot+vue的制造裝備物聯及生產管理ERP系統(有報告)。Javaee項目,springboot vue前后端分離項目。

演示視頻&#xff1a; Springbootvue的制造裝備物聯及生產管理ERP系統&#xff08;有報告&#xff09;。Javaee項目&#xff0c;springboot vue前后端分離項 項目介紹&#xff1a; 本文設計了一個基于Springbootvue的制造裝備物聯及生產管理ERP系統&#xff0c;采用M&#xff…