Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >centos or ubuntu20/21/22 安装 vscode 配置 gcc g++ cmake 开发环境

centos or ubuntu20/21/22 安装 vscode 配置 gcc g++ cmake 开发环境

原创
作者头像
eisc
发布于 2024-02-16 05:26:43
发布于 2024-02-16 05:26:43
3170
举报
代码语言:shell
AI代码解释
复制
#!/bin/bash
# centos or ubuntu 安装 vscode 配置 gcc g++ cmake 开发环境

UrlTest()
{
    URLList=( 192.168.122.80  10.111.111.80 )
    number="kong";
    for(( i=0;i<${#URLList[*]};i++ ))
    do
        pinLG=`ping -c2 -i0.3 -w2 ${URLList[$i]} | grep from`
        if [ ${#pinLG} -gt 6 ]
        then					
            number=$i
            status="内网节点通信正常,当前内网连接: ${URLList[$i]} 序号: $number "	
            echo "内网 [ok]"		
            break		
        else
            status="并非处于内网: ${URLList[$i]}  将从外网进行下载 work.eisc.cn "		
            echo "内网 [fall]"					
        fi
    done

    if [ $number = "kong" ]
    then 
        url="work.eisc.cn"
    else
        url="${URLList[$number]}:62011"
    fi

    urlDir="/ruanjian/ubuntu/server/cmakegcc"
    downUrl=$url$urlDir

    echo "$status 下载地址: $downUrl" 
    
}
UrlTest


TarList=( cmake_release   make_release   gmp_release   mpfr_release   mpc_release   freetype_release   gcc_release )

installDirSelect()
{
    echo "选择安装路径:
    1. 安装到建议路径: /datadisk/eisc/   然后自动创建的目录是: /datadisk/eisc/server  安装到  /datadisk/eisc/server/cmake/ 目录下!
    2. 安装到当前目录 下的  ./server/cmake 目录下,脚本所在位置

    3. 任意按键退出安装!
    "
    read -p " select number:  " runIF
    case "$runIF" in
        "1") echo "[running] 安装到目录:        /datadisk/eisc/server/cmake/ " ;  localDir="/datadisk/eisc" ;;
        "2") echo "[running] 选择当前目录安装:  ./server/cmake " ;                           localDir=`pwd` ;;

        *)   echo "exit" ;exit ;;
    esac 

    sleep 5

    downDir="$localDir/download/cmake"
    installDir="$localDir/server/cmake"
    gccSoDir="$installDir/so/gcc"
}


cmake_release()
{
  ReleaseMl="cmake-3.27.0-rc4-linux-x86_64"
  ReleaseInstall="cmake327"
  ReleaseBin="cmake"
  Down="$downUrl/$ReleaseMl.tar.gz"
  echo "cmake 下载地址重新定义为:$Down"
}

make_release()
{
  ReleaseMl="make-4.4"
  ReleaseInstall="make44"
  ReleaseBin="make"
  Down="$downUrl/$ReleaseMl.tar.gz"
  echo "cmake 下载地址重新定义为:$Down"
}

gmp_release()
{
  ReleaseMl="gmp-6.2.1"
  ReleaseInstall="gmp621"
  ReleaseBin="gmp"
  Down="$downUrl/$ReleaseMl.tar.gz"
  echo "cmake 下载地址重新定义为:$Down"
}

mpfr_release()
{
  ReleaseMl="mpfr-4.2.0"
  ReleaseInstall="mpfr420"
  ReleaseBin="mpfr"
  Down="$downUrl/$ReleaseMl.tar.gz"
  echo "cmake 下载地址重新定义为:$Down"
}

mpc_release()
{
  ReleaseMl="mpc-1.2.1"
  ReleaseInstall="mpc121"
  ReleaseBin="mpc"
  Down="$downUrl/$ReleaseMl.tar.gz"
  echo "cmake 下载地址重新定义为:$Down"
}

freetype_release()
{
  ReleaseMl="freetype-2.9"
  ReleaseInstall="freetype29"
  ReleaseBin="freetype"
  Down="$downUrl/$ReleaseMl.tar.gz"
  echo "cmake 下载地址重新定义为:$Down"
}

gcc_release()
{
  ReleaseMl="gcc-13.1.0"
  ReleaseInstall="gcc1310"
  ReleaseBin="mpc"
  Down="$downUrl/$ReleaseMl.tar.gz"
  echo "cmake 下载地址重新定义为:$Down"
}
 
downloadGF=(
    http://mirror.linux-ia64.org/gnu/gcc/releases/gcc-13.1.0/gcc-13.1.0.tar.gz
    https://ftp.gnu.org/gnu/make/make-4.4.tar.gz

    https://www.mpfr.org/mpfr-current/mpfr-4.2.0.tar.gz
    http://gcc.gnu.org/pub/gcc/infrastructure/gmp-6.2.1.tar.bz2
    http://gcc.gnu.org/pub/gcc/infrastructure/mpfr-4.1.0.tar.bz2
    http://gcc.gnu.org/pub/gcc/infrastructure/mpc-1.2.1.tar.gz
    http://gcc.gnu.org/pub/gcc/infrastructure/isl-0.24.tar.bz2

    https://download.savannah.gnu.org/releases/freetype/freetype-2.9.tar.gz
)

os_release()
{


    if [ $USER = "root" ]
    then 
        qx=" "
        # 判断字符串的等号要加空格,否则无法判断
    else
        qx="sudo"
        echo "当前为普通用户,需要输入root 密码..."
        sudo date
    fi

    xitong=` cat /etc/os-release  | grep -w ID | awk -F"=" '{print $2}' | sed "s/\"//g" `
    case "$xitong" in
        "centos" ) iCMD="yum" ; rpmCMD="rpm -qa " ; echo "当前是 centos 系统" ; $qx $iCMD install -y openssl-devel gcc gcc-c++ g++ cmake make wget nano libmpfr-dev m4 gmp  gmp-devel  mpfr  mpfr-devel  libmpc  libmpc-devel bzip2 git ;;
        "ubuntu" ) iCMD="apt" ; rpmCMD="dpkg -l " ; echo "当前是 ubuntu 系统" ; $qx $iCMD install -y  gcc g++ cmake make wget nano libmpfr-dev m4   bzip2 git ;;
    esac

    $qx mkdir -p $downDir $installDir $gccSoDir ; $qx chmod 777 -R $dir  $installDir $gccSoDir

}

download()
{
    cd $downDir ; echo "当前进入目录进行下载:  cd $downDir "

    for i in ${TarList[*]}
    do
        $i          # 执行函数变量
        echo "[runing] 正在检查是否下载安装包: $ReleaseMl.tar.gz"

        [ ! -d $installDir/$ReleaseInstall ] && echo "[running] 目标安装路径不存在" || break ; 

        if [ ! -f $ReleaseMl.tar.gz ]
        then 
            echo "[runing] 当前没有下载,正在下载包:wget $Down "
            $qx wget $Down
        else
            echo  "[ok] 已经下载: $downDir/$ReleaseMl.tar.gz"
        fi

        echo "检测是否解压... "
        if [ ! -d $installDir/$ReleaseInstall ]
        then 
            echo "[running] 正在解压 $downDir/$ReleaseMl.tar.gz 到目录: $installDir/$ReleaseMl" ; 
            $qx tar -xzvf $downDir/$ReleaseMl.tar.gz -C $installDir/
            $qx mv $installDir/$ReleaseMl  $installDir/$ReleaseInstall
        else 
            echo "[ok] 已经解压 : $downDir/$ReleaseInstall "
        fi

    done
}


Finstall(){

    for i in ${TarList[*]}
    do 
        $i
        MakeFlag=1;
        soFlag=1

        echo "当前正在安装  $i"  ; sleep 1;

        case "$ReleaseInstall" in 
            "gmp621")  [ ! -f $gccSoDir/$ReleaseInstall.installd  ]  && soFlag=1 || soFlag=0            ;;
            "mpfr420") [ ! -f $gccSoDir/$ReleaseInstall.installd  ]  && soFlag=1 || soFlag=0            ;;
            "mpc121")  [ ! -f $gccSoDir/$ReleaseInstall.installd  ]  && soFlag=1 || soFlag=0            ;;
            "make44")  [ ! -f $installDir/$ReleaseInstall/make    ]  && soFlag=1 || soFlag=0  ; Fpath   ;;  
            "gcc1310") [ ! -f $installDir/$ReleaseInstall/bin/gcc ]  && soFlag=1 || soFlag=0  ; Fpath   ;;  
            "cmake327")   Fpath ;;
            "freetype29") soFlag=0;;
        esac

        if [[ ! -f  $installDir/$ReleaseInstall/bin/$ReleaseBin ]] && [[ $soFlag = "1" ]]
        then
            cd $installDir/$ReleaseInstall 
            echo "[waring] 包没有安装 $installDir/$ReleaseInstall/bin/$ReleaseBin 当前进入目录:  $installDir/$ReleaseInstall  "  ; 

            case "$ReleaseInstall" in 
                "gcc1310")   $qx ./configure --prefix=$installDir/$ReleaseInstall --with-gmp=$gccSoDir --with-mpfr=$gccSoDir --with-mpc=$gccSoDir --disable-multilib ;  # $qx ./contrib/download_prerequisites  # 检测依赖包
                             $qx ./contrib/download_prerequisites ;
                             $qx make -j 4 ; $qx make install ; Fpath ;;
                             
                "cmake327")   Fpath  ;;
                "gmp621"  )  $qx ./configure --prefix=$gccSoDir; $qx make -j 4 ; $qx make install ; $qx touch $gccSoDir/$ReleaseInstall.installd ; MakeFlag=0; Fpath ;;
                "mpfr420" )  $qx ./configure --prefix=$gccSoDir; $qx make -j 4 ; $qx make install ; $qx touch $gccSoDir/$ReleaseInstall.installd ; MakeFlag=0    ;;
                "mpc121"  )  $qx ./configure --prefix=$gccSoDir; $qx make -j 4 ; $qx make install ; $qx touch $gccSoDir/$ReleaseInstall.installd ; MakeFlag=0    ;;
                *)           echo "未定指定编译,走通用编译方法..." ; $qx ./configure --prefix=$installDir/$ReleaseInstall ; $qx make -j 4 ; $qx  make instlal; Fpath ;;
            esac 

            if [ $MakeFlag = "1" ]
            then
                $qx ./configure  ; $qx make -j 2 ; $qx make install  
            fi
        else
            echo "[ok] 已经安装: $installDir/$ReleaseInstall"     
        fi
    done


}
# cd ~/public/ ; git pull ; ./sh/cmakegcc.sh

Fpath()
{
    $qx chmod 777 /etc/profile 
    StrCmake=`cat /etc/profile | grep $ReleaseInstall`
    StrCmakeLength=${#StrCmake}
    if [ $StrCmakeLength -lt 1 ]
    then 

        case "$ReleaseInstall" in 
            "gmp621") echo "#### $ReleaseInstall ####" >> /etc/profile ;
                $qx echo "export LD_LIBRARY_PATH=$gccSoDir/lib:\$LD_LIBRARY_PATH" >> /etc/profile ;

                echo "[running] 最后一次写入环境变量,即将更新。退出并且自动刷新  $ReleaseInstall 环境变量 /etc/profile  请重新执行本脚本!"  ; 
                echo  "错误: cc1plus: error while loading shared libraries: libmpfr.so.6: cannot open shared object file: No such file or directory";
                echo  "需要退出ssh后重新登陆,环境变量原因 /etc/profile  ;  并且执行命令: source /etc/profile ; bash"
                cd ; $qx chmod 644 /etc/profile 
                $qx source /etc/profile & bash  ; echo "[ok] set /etc/profile" ;; 

            "cmake327")  $qx echo "#### $ReleaseInstall ####" >> /etc/profile ;
                $qx echo "export CMAKE_HOME=$installDir/$ReleaseInstall/bin" >> /etc/profile ;
                $qx echo "export PATH=\$CMAKE_HOME:\$PATH" >> /etc/profile ;;
            "make44")    $qx echo "#### $ReleaseInstall ####" >> /etc/profile ;
                $qx echo "export MAKE_HOME=$installDir/$ReleaseInstall/bin" >> /etc/profile ;
                $qx echo "export PATH=\$MAKE_HOME:\$PATH" >> /etc/profile ;;
            "gcc1310")   $qx echo "#### $ReleaseInstall ####" >> /etc/profile ;
                $qx echo "export GCC_HOME=$installDir/$ReleaseInstall/bin" >> /etc/profile ;
                $qx echo "export PATH=\$GCC_HOME:\$PATH" >> /etc/profile ; $qx chmod 777 /etc/profile
                $qx source /etc/profile & bash ; echo "[ok] set /etc/profile" ;;
        esac

# 指定目录可以 写一行,指定运行文件需要两行:目录+执行路径

    else
        echo "[ok] 环境变量已经配置,继续向下执行..."

    fi    

# export LD_LIBRARY_PATH=/path/to/libmpfr.so.6:$LD_LIBRARY_PATH

}


DockerInstall()
{
    $qx $iCMD install -y docker-io
    $qx touch /etc/docker/daemon.json
    $qx chmod 777 /etc/docker/daemon.json
    echo -e "
{
\"registry-mirrors\": [\"https://hub-mirror.c.163.com\"]
}
    " > /etc/docker/daemon.json
    $qx chmod 644 /etc/docker/daemon.json
    $qx systemctl daemon-reload
    $qx systemctl restart docker 
    $qx systemctl enable docker
    $qx gpasswd -a $USER docker ; newgrp docker

}

DockerRun()
{
    read -p "输入 :" input
    name=${input[0]}
    image=${input[1]}
    SourcePort=${input[2]}
    DestPort=${input[3]}

    $qx docker run --privileged=true -dit -p $SourcePort:$DestPort  --name $name $image /usr/sbin/init

    #$qx docker run --privileged -dit -p 10022:22 -p 10080:80 --name eisc centos:7 /usr/sbin/init
}


main()
{
    installDirSelect
    os_release
    download  
    Finstall
}

main

# gcc参考文档: https://gcc.gnu.org/onlinedocs/  


# 一键部署: wget eisc.cn/file/ubuntu/shell/server/cmakegcc.sh ; sudo chmod +x cmakegcc.sh  ; ./cmakegcc.sh 






原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
MySQL 8.0.22 源码编译安装全过程
墨墨导读: Mysql的8.0版本出来已经有一段时间了,近期研究下源码调试。整个编译过程越来越复杂了。
数据和云
2021/03/09
10.8K0
MySQL 8.0.22 源码编译安装全过程
安装GCC-8.3.0及其依赖
为体验C++17和C++20特性,需安装更新版本的GCC编译器。GCC官网为:https://gcc.gnu.org/,从这里可以下载最新版本的GCC。
一见
2019/05/13
14.3K0
软件环境编译器,自动安装c语言的 libpcap 网络抓包监控开发环境,cmake自动汇编框架shell脚本
eisc
2025/01/03
1220
【香菇带你学Linux】​Linux环境的gcc编译安装
gcc(GNU Compiler Collection)是GNU项目的一部分,它是一个支持多种编程语言的编译器集合,但最常用的是作为C和C++的编译器。GCC能够编译、汇编和链接C、C++、Objective-C、Fortran、Ada、Go以及D等多种语言的程序。它因其跨平台性、高效性和灵活性而受到广泛的欢迎和使用。
炒香菇的书呆子
2024/07/26
4890
debian12/ubuntu24/22/20 shell 脚本自动编译web安装网站环境 nginx1.26.0 php7/8 mariadb1011
#!/bin/bash# ubuntu20 shell 脚本自动编译web安装网站环境 nginx199 php7/8 mariadb1011 以 systemd 方式设置开机启动# mysql 重置 root 密码,创建 或删除 mysql 子库和子用户downdir="/datadisk/eisc/download" ; sudo mkdir -p $downdir ; sudo chmod 777 -R $downdirinstalldir="/datadisk/eisc/server" ;
eisc
2022/10/30
8460
Ubuntu安装gcc-7.3.0[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/163829.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/15
1.6K0
Gluten肝货:Spark Native加速技术完整实践案例总结
目前gluten支持两种backend:clickhouse和velox,本文实践基于gluten与clickhouse组合方式。
用户9421738
2025/03/03
750
Gluten肝货:Spark Native加速技术完整实践案例总结
centos 编译安装gcc8.1
截止 2018-05-03 最新版本:https://mirrors.tuna.tsinghua.edu.cn/gnu/gcc/gcc-8.1.0/gcc-8.1.0.tar.gz
pollyduan
2019/11/04
2.4K0
在Ubuntu20.04环境中构建C++20开发环境(GCC11)
本文介绍在最新的Ubuntu20.04环境中编译最新的GCC编译器的方法。使用这个环境可以学习C++20新特性。
面向对象思考
2020/05/29
12.1K0
在Ubuntu20.04环境中构建C++20开发环境(GCC11)
[MYSQL] centos7.9编译mysql 8.0.37作为调试环境
作为一个mysql dba, 难免会接触到mysql源码, 光看的话, 不好理解, 效率也不高, 就得改一改, 跑一跑. 那么就需要一个环境. 本文就是来搭建这么一个环境的.
大大刺猬
2024/06/11
4530
[MYSQL] centos7.9编译mysql 8.0.37作为调试环境
windows下安装MinGW及C++的环境配置
  使用windows开发神器visio studio。这种方法比较简单,直接下载一个最新的vs安装就行。不单单是C++,C、C#、VB等都可以开发。
全栈程序员站长
2022/09/07
2.6K0
gcc离线安装 ubuntu 不用编译_「ubuntu安装gcc」ubuntu18.04安装gcc详细步骤(附问题集) – seo实验室…[通俗易懂]
首先是下载gcc包,可以在GCC的官方网站http://gcc.gnu.org/ 下载到各个版本。 目前最高版本是gcc-8.2.0。
全栈程序员站长
2022/09/15
3.3K0
gcc离线安装 ubuntu 不用编译_「ubuntu安装gcc」ubuntu18.04安装gcc详细步骤(附问题集) – seo实验室…[通俗易懂]
Centos python3编译安装以及编译gcc升级
引言:由于我是在新的虚拟机上测试学习,正好听到同事讲一个朋友在gcc升级安装导致系统出问题,所以在安装gcc的时候一定要小心。
嘻哈记
2020/11/30
7K1
Centos python3编译安装以及编译gcc升级
Linux下离线手动下载安装C++开发环境
Linux下我们习惯了使用软件包管理器来安装我们需要的软件,比如Red Hat公司的Fedora、RHEL(Red Hat Enterprise Linux)和后来加入红帽的CentOS,使用rpm和yum来安装软件,Ubuntu使用apt-get来安装。 使用软件包管理器确实很方便,在联网的环境下,从下载到安装,以及自动关联软件的依赖项,并且一次安装所有依赖的软体包,为我们省去了很多繁琐的操作。这样确实很好,但是我们却失去了了解软件有哪些组成模块和依赖项的机会。下面我就要折腾一下,手动下载安装C++环境,摆托yum install gcc-c++ 这种傻瓜式操作。手动下载安装还有一个好处就是为不能联网的机器安装软件。有时候,确实要这样做。
恋喵大鲤鱼
2018/08/03
10.8K0
Linux下离线手动下载安装C++开发环境
MYSQL8+CENTOS7.6 主从+keepalived搭建总结
yum -y install ncurses-devel openssl openssl-devel bison
PHP开发工程师
2021/05/24
7830
CentOS-AltArch-7(ARM版)下源码编译MySQL5.7.31
https://cmake.org/files/v3.9/cmake-3.9.2.tar.gz
yuanfan2012
2020/07/22
1.8K2
centos7安装node-v18版本真是难呢
背景就是上一篇文章提到的,部署gitbook这个文档中心的话,是需要先安装node,然后,如果你的node版本过高的话,一般会报错,此时,网上很多文章就是降node版本解决,但其实用高版本也是有办法的,只是麻烦点,要改改代码;但是,我下载了高版本的node安装时,发现在centos7上还装不了,可谓一波未平一波又起。
低级知识传播者
2023/10/27
4.1K0
centos7安装node-v18版本真是难呢
CentOS 6.5下源码安装GCC-4.8.2安装笔记整理
经历了两天的虐心,写了两篇不敢发表的gcc4.8.2安装笔记,终于成功用源码安装最新的gcc-4.8.2,虽然最初只是为了试一试c++11的几个性能,但是后来不断遇到的问题和搜索中发现的这些问题在大家安装过程中的普遍存在,决心把它写下来和大家共享,鄙人也是个菜鸟,有什么说的不对的地方希望大家予以指正,不胜感激:
知忆
2021/06/07
1.3K0
ubantu 安装mp3插件
1、 安装了ubantu 系统后 ,用 Rhythmbob 听音乐,不支持mp3格式,要下载安装插件,下载地址:
py3study
2020/01/09
1.2K0
RHEL 4.7 (64bit) 环境安装 GCC 4.6 测试记录 (更新至gcc-4.6.1)
Red Hat Enterprise Linux AS release 4 (Nahant Update 7)
Michael Chen
2018/09/05
1K0
推荐阅读
相关推荐
MySQL 8.0.22 源码编译安装全过程
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档