linux怎么安装echo命令,linux安装gcc-shell脚本

原标题:linux安装gcc-shell脚本

GCC是Linux平台下最常用的编译程序,它是Linux平台编译器的事实标准。同时,在Linux平台下的嵌入式开发领域,GCC也是用得最普遍的一种编译器。GCC之所以被广泛采用,是因为它能支持各种不同的目标体系结构。例如,它既支持基于宿主的开发(简单讲就是要为某平台编译程序,就在该平台上编译),也支持交叉编译(即在A平台上编译的程序是供平台B使用的)。目前,GCC支持的体系结构有四十余种,常见的有X86系列、Arm、PowerPC等。同时,GCC还能运行在不同的操作系统上,如Linux、Solaris、Windows等。

除了上面讲的之外,GCC除了支持C语言,还支持多种其他语言,例如C++、Ada、Java、Objective-C、FORTRAN、Pascal、go等。

基本上很多应用在编译安装时需要使用到gcc,一般使用的版本不是很高所以通过快捷安装命令即可:

yum install -y gcc-c++

但有的应用编译时需要更高版本的gcc,这个时候基本上只能通过编译安装,而gcc编译安装非常麻烦,需要几个指定版本的依赖组件才能编译安装成功,为方便安装特意编写了一个安装shell脚本,通过脚本来无人安装,当然安装编译过程还是有点长的,脚本暂只支持以CentOS系统(系统版本5~7有测试过)来安装(其它系统需要调整下快速安装组件命令 yum 和对应的安装包名)

#!/bin/bash

# 官网 https://gcc.gnu.org/

#

# 下载地址 (镜像)

# https://gcc.gnu.org/mirrors.html

#

# 依赖说明

# https://gcc.gnu.org/install/prerequisites.html

#

# 命令参数

# $1 指定安装版本,如果不传则获取最新版本号,为 new 时安装最新版本

#

#GCC version number

GCC_VERSION=$1

# GCC安装基目录

INSTALL_BASE="/usr/local/gcc/"

# 必需的库基目录

INSTALL_PACKAGE_BASE="/usr/local/"

# gcc 编译配置

GCC_CONFIGURE_WITH=''

# 镜像地址

MIRRORS_URL="http://mirror.linux-ia64.org/gnu/gcc"

if [ -z $1 ] || [[ $1 == "new" ]]; then

echo "gcc version is empty!"

echo "获取最新稳定版本号 ...";

GCC_VERSION=`curl $MIRRORS_URL/releases/ 2>&1| grep -P 'gcc-\d+\.\d+\.\d+' -o|tail -n 1|grep -P '\d+\.\d+\.\d+' -o`

if [ -z "$GCC_VERSION" ];then

echo "获取版失败!";

exit

fi

if [ -z $1 ]; then

echo $GCC_VERSION

exit

fi

fi

if [ -e "$INSTALL_BASE$GCC_VERSION/bin/gcc" ];then

echo "gcc-$GCC_VERSION already install!"

exit

fi

OLD_PATH=`pwd`

if [[ "$0" =~ '/' ]]; then

cd "`echo "$0" | grep -P '(/?[^/]+/)+' -o`"

CURRENT_PATH=`pwd`

cd $OLD_PATH

else

CURRENT_PATH=$OLD_PATH

fi

if [ ! -d "gcc" ];then

mkdir gcc

fi

cd gcc

if [ ! -e "gcc-$GCC_VERSION.tar.gz" ]; then

#download php

echo "download gcc-$GCC_VERSION.tar.gz";

wget $MIRRORS_URL/releases/gcc-$GCC_VERSION/gcc-$GCC_VERSION.tar.gz 2>&1

fi

if [ ! -d "gcc-$GCC_VERSION" ]; then

#decompression

echo "decompression gcc-$GCC_VERSION.tar.gz";

tar -zxf gcc-$GCC_VERSION.tar.gz

fi

if [ ! -d "gcc-$GCC_VERSION" ]; then

echo "gcc-$GCC_VERSION dir is not exists"

exit

fi

echo "install dependence"

yum install -y gcc-c++ bzip2 ntpdate m4

# 时间不同步容易造成配置死循环

ntpdate -u ntp.api.bz

# while 循环使用的是管道,会开启子进程,无法修改外部的变量

PACKAGE_LISTS=`cat gcc-$GCC_VERSION/contrib/download_prerequisites| grep -P '\-\d+\.\d+(\.\d+)?\.tar'`

for LINE in `echo -e $PACKAGE_LISTS`

do

PACKAGE_VERSION_FILE=`echo $LINE|grep -P '\w+\-\d+\.\d+(\.\d+)?\.tar\.(bz2|gz)' -o`

PACKAGE=`echo $PACKAGE_VERSION_FILE|grep -P '^\w+' -o`

PACKAGE_VERSION_DIR=`echo $PACKAGE_VERSION_FILE|grep -P '\w+\-\d+\.\d+(\.\d+)?' -o`

PACKAGE_VERSION=`echo $PACKAGE_VERSION_DIR|grep -P '\d+\.\d+(\.\d+)?' -o`

PACKAGE_CONFIGURE_WITH=$GCC_CONFIGURE_WITH

GCC_CONFIGURE_WITH="$PACKAGE_CONFIGURE_WITH --with-$PACKAGE=$INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION"

echo "install $PACKAGE_VERSION_DIR"

if [ -d "$INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION" ]; then

echo "$PACKAGE_VERSION_DIR already install";

continue;

fi

if [ ! -e "$PACKAGE_VERSION_FILE" ]; then

#download package

echo "download $PACKAGE_VERSION_FILE";

wget $MIRRORS_URL/infrastructure/$PACKAGE_VERSION_FILE 2>&1

fi

if [ ! -d "$PACKAGE_VERSION_DIR" ]; then

#decompression

echo "decompression $PACKAGE_VERSION_FILE";

if [ -n "`echo $PACKAGE_VERSION_FILE|grep -P '\.gz$'`" ];then

tar -zxf $PACKAGE_VERSION_FILE

else

tar -xf $PACKAGE_VERSION_FILE

fi

fi

if [ ! -d "$PACKAGE_VERSION_DIR" ]; then

echo "$PACKAGE_VERSION_DIR dir is not exists"

exit

fi

cd $PACKAGE_VERSION_DIR

if [[ "$PACKAGE" == "isl" ]];then

PACKAGE_CONFIGURE_WITH=' --with-gmp-prefix='`echo $PACKAGE_CONFIGURE_WITH|grep -P "[^=]+gmp/\d+\.\d+\.\d+" -o`

fi

echo "./configure --prefix=$INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION$PACKAGE_CONFIGURE_WITH"

./configure --prefix=$INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION$PACKAGE_CONFIGURE_WITH 2>&1

make 2>&1

make install 2>&1

if [ ! -d "$INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION" ] || [ -z "`ls $INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION`" ];then

echo "$PACKAGE-$PACKAGE_VERSION install fail!"

exit

fi

if [[ "$PACKAGE" == "isl" ]];then

echo "mv lib/*.py file"

# 清除py文件,这些文件会影响共享的动态链接库ldconfig命令执行失败

for PY_FILE in `find $INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION/lib/ -name "*.py"`

do

if [ -n "$PY_FILE" ] && [ -e "$PY_FILE" ];then

echo "mv $PY_FILE $INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION"

mv $PY_FILE $INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION

fi

done

fi

# 共享的动态链接库,加载配置

if [ -d "$INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION/lib" ] && [ -z "`cat /etc/ld.so.conf|grep "$INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION"`" ];then

echo "$INSTALL_PACKAGE_BASE$PACKAGE/$PACKAGE_VERSION/lib" >> /etc/ld.so.conf

ldconfig

fi

cd ../

done

cd gcc-$GCC_VERSION

echo "install gcc"

make clean 2>&1

# 64位系统需要禁用multilib

if [ -n "`uname -a|grep -P 'el\d+\.x\d+_\d+' -o|grep x86_64 -o`" ]; then

GCC_CONFIGURE_WITH=$GCC_CONFIGURE_WITH' --disable-multilib'

fi

# 新版需要下载配置文件

if [ ! -e "./configure" ] && [ -e "./contrib/download_prerequisites" ];then

./contrib/download_prerequisites

mkdir gcc-make-tmp

cd gcc-make-tmp

echo "../configure --prefix=$INSTALL_BASE$GCC_VERSION$GCC_CONFIGURE_WITH"

../configure --prefix=$INSTALL_BASE$GCC_VERSION$GCC_CONFIGURE_WITH 2>&1

else

echo "./configure --prefix=$INSTALL_BASE$GCC_VERSION$GCC_CONFIGURE_WITH"

./configure --prefix=$INSTALL_BASE$GCC_VERSION$GCC_CONFIGURE_WITH 2>&1

fi

HTREAD_NUM=`lscpu |grep Thread|grep -P '\d+$' -o`

make -j $HTREAD_NUM 2>&1

make install 2>&1

# check install status

if [ ! -d "$INSTALL_BASE$GCC_VERSION" ] || [ -z "`ls $INSTALL_BASE$GCC_VERSION`" ]; then

echo "[error] install gcc-$GCC_VERSION fail!";

else

echo "$INSTALL_BASE$GCC_VERSION/lib64" >> /etc/ld.so.conf

echo "mv lib64/*.py file"

# 清除py文件,这些文件会影响共享的动态链接库ldconfig命令执行失败

for PY_FILE in `find $INSTALL_BASE$GCC_VERSION/lib64/ -name "*.py"`

do

if [ -n "$PY_FILE" ] && [ -e "$PY_FILE" ];then

echo "mv $PY_FILE $INSTALL_BASE$GCC_VERSION"

mv $PY_FILE $INSTALL_BASE$GCC_VERSION

fi

done

ldconfig

echo 'export PATH=$PATH:'"$INSTALL_BASE$GCC_VERSION/bin" >> /etc/profile

source /etc/profile

yum remove -y gcc-c++

echo "install gcc-$GCC_VERSION success!";

fi

使用方法:

在root账号下,创建一个.sh后缀的shell脚本文件,比如:gcc-install.sh 并把上面安装代码写入保存。

执行安装命令

bash gcc-install.sh new

如果系统的依赖过少导致安装不成功,则需要增加对应的依赖包(这里只以测试系统为例依赖包可能安装不是很充足),安装目录可以在安装脚本中去配置修改,安装成功后会提示安装成功文案。返回搜狐,查看更多

责任编辑:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 您好,针对您的问题,我可以回答。在LinuxShell脚本安装MySQL,您可以按照以下步骤进行: 1. 打开终端,输入命令 sudo apt-get update 更新系统。 2. 输入命令 sudo apt-get install mysql-server 安装MySQL。 3. 安装完成后,输入命令 sudo service mysql start 启动MySQL服务。 4. 输入命令 sudo mysql_secure_installation 进行安全设置,包括更改root用户的密码、删除匿名用户等。 以上就是在LinuxShell脚本安装MySQL的步骤,希望对您有所帮助。 ### 回答2: 安装MySQL可以使用Linux shell脚本来自动完成,以下是一个简单的步骤: 1. 下载MySQL安装包: 在MySQL官方网站上下载适用于Linux的MySQL安装包(通常是以.tar.gz形式压缩),保存到指定目录。 2. 解压安装包: 使用shell命令解压下载的压缩包,如`tar -zxvf mysql.tar.gz`。 3. 安装依赖: 在安装MySQL之前,需要确保系统已安装一些依赖库,如GCC、C++、CMake等。可以使用包管理器进行安装,如使用apt-get命令:`sudo apt-get install gcc g++ cmake`。 4. 进入解压目录: 使用`cd`命令进入解压后的MySQL安装目录。 5. 创建MySQL用户和组: 使用命令创建一个MySQL组和用户,可以使用以下命令: ``` sudo groupadd mysql sudo useradd -r -g mysql -s /bin/false mysql ``` 6. 配置MySQL: 运行以下命令来配置MySQL安装选项和路径: ``` sudo cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DSYSCONFDIR=/etc \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_READLINE=1 \ -DENABLED_LOCAL_INFILE=1 ``` 上述命令会将MySQL安装到`/usr/local/mysql`目录,并使用`/etc`作为配置文件目录。 7. 编译并安装: 运行以下命令进行编译和安装: ``` sudo make && sudo make install ``` 8. 初始化MySQL: 运行以下命令进行MySQL的初始化: ``` sudo /usr/local/mysql/bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data ``` 9. 设置环境变量: 编辑`~/.bashrc`文件,添加以下路径到`PATH`环境变量中: ``` export PATH=$PATH:/usr/local/mysql/bin ``` 10. 启动MySQL: 使用以下命令启动MySQL服务器: ``` sudo /usr/local/mysql/bin/mysqld_safe --user=mysql & ``` 完成上述步骤后,就可以通过shell脚本自动化地完成MySQL的安装。 ### 回答3: 要在Linux上使用shell脚本安装MySQL,可以按照以下步骤进行操作: 1. 首先,下载MySQL的安装文件。可以从MySQL官方网站上下载,选择适合你的Linux发行版的安装文件。 2. 然后,创建一个新的shell脚本文件。可以使用文本编辑器,比如vi或nano,在终端中输入以下命令创建一个新的脚本文件: ``` $ nano install_mysql.sh ``` 3. 将以下内容复制粘贴到你创建的脚本文件中: ``` #!/bin/bash # 下载MySQL的安装包 wget [MySQL下载链接] # 解压安装包 tar -zxvf [MySQL安装包名称] # 安装依赖包 apt-get install -y libaio1 # 安装MySQL cd [MySQL安装包目录] ./configure --prefix=[MySQL安装目录] make make install # 初始化MySQL cd [MySQL安装目录]/scripts ./mysql_install_db --user=mysql # 启动MySQL服务 cd ../bin ./mysqld_safe --user=mysql & # 配置环境变量 echo 'export PATH=$PATH:[MySQL安装目录]/bin' >> ~/.bashrc source ~/.bashrc # 设置MySQL的root用户密码 ./mysqladmin -u root password [你的密码] # 创建一个新用户 ./mysql -u root -p[你的密码] -e "CREATE USER '[新用户名]'@'localhost' IDENTIFIED BY '[新用户密码]';" # 授权给新用户 ./mysql -u root -p[你的密码] -e "GRANT ALL PRIVILEGES ON *.* TO '[新用户名]'@'localhost' IDENTIFIED BY '[新用户密码]' WITH GRANT OPTION;" # 保存并关闭脚本文件 exit ``` 注意:将上述内容中的[MySQL下载链接]、[MySQL安装包名称]、[MySQL安装包目录]、[MySQL安装目录]、[你的密码]、[新用户名]、[新用户密码]替换为你实际的信息。 4. 保存并关闭脚本文件。在nano编辑器中,按下Ctrl + X,然后按下Y,最后按下Enter键。 5. 授予脚本文件执行权限。在终端中输入以下命令: ``` $ chmod +x install_mysql.sh ``` 6. 运行脚本文件。在终端中输入以下命令: ``` $ ./install_mysql.sh ``` 7. 等待脚本执行完成。一旦脚本执行完毕,即可成功安装MySQL。 这是通过shell脚本安装MySQL的基本步骤。根据你的Linux发行版和系统环境,可能会有一些细微的差异。请确保在执行脚本前备份重要数据,并且谨慎操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值