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.mzph.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…