Linux C++ 开发环境搭建

10 篇文章 0 订阅
5 篇文章 0 订阅

Linux C++ 开发环境搭建

在这里插入图片描述

前言

工欲善其事必先利其器,想要学好 Linux C++ 编程,那么就要有对应环境,本文将带你一步步搭建开发环境。

准备工作

为了学习方便,在 win 下面安装虚拟机,然后安装 CentOs 操作系统。当然也可以使用 阿里云等云产品(但个人推荐本地搭建,因为阿里云远程连接经常掉线)。

  • 搭建 centos 开发环境:centos安装教程 前面介绍过,这里将不再赘述。

  • 安装常用工具

    作为一个合格的程序员我觉得所有的东西都应该标准化、文档化。所以我对我的文件进行规划:

    /home/package : 存放二进制安装包

    /home/software: 存放安装路径

    /home/workspace: 存放代码工作区

    安装包路径:https://pan.baidu.com/s/1Vqy3J8In1z4AG5ZosK4k3w 提取码:atrs

    将下载下来的文件解压放入 /home/package 中。

    为了方便我写了一个执行脚本(带注释):

    #!/bin/bash
    # 更新环境变量
    source /etc/profile
    
    #编译加速选项
    CPU=-j4  
    
    #动态库路径
    LD_CONF=/etc/ld.so.conf
    
    #错误路径
    ERROR_LOG=/home/error.log
    
    #环境变量文件
    ETC_PROFILE=/etc/profile
    
    #安装包目录
    PACKAGE_PATH=/home/package
    
    #安装路径
    SOFTWARE_PATH=/home/software
    
    #获取系统版本
    SYSTEM_VERSION=$(rpm -q centos-release | cut -d- -f3)
    
    #创建错误日志文件
    if [ ! -f "${ERROR_LOG}" ]; then
    
        touch ${ERROR_LOG}
    
        chmod 755 ${ERROR_LOG}
    
    fi
    
    #创建安装包目录 & 赋予权限
    if [ ! -d "${PACKAGE_PATH}" ]; then
    
        mkdir ${PACKAGE_PATH}
    
        chmod 755 ${PACKAGE_PATH}
    
    fi
    
    #创建安装目录 & 赋予权限
    if [ ! -d "${SOFTWARE_PATH}" ]; then
    
        mkdir ${SOFTWARE_PATH}
    
        chmod 755 ${SOFTWARE_PATH}
    
    fi
    
    
    #/etc/yum.repos.d  yum源的相关配置文件
    if [ ! -f "/etc/yum.repos.d/epel.repo" ]; then
    
        if [ ${SYSTEM_VERSION} == "7" ]; then
    
            rpm -Uvh http://mirrors.ustc.edu.cn/epel/7/x86_64/Packages/e/epel-release-7-11.noarch.rpm
    
            rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
    
            sed -i 'N;8a\priority=11' /etc/yum.repos.d/epel.repo
    
            yum makecache
    
        elif [ ${SYSTEM_VERSION} == "6" ]; then
    
            #安装epel源
            rpm -Uvh http://mirrors.ustc.edu.cn/epel/6/x86_64/Packages/e/epel-release-6-8.noarch.rpm
    
            #rpm -Uvh  http://mirrors.ustc.edu.cn/epel/6/i386/Packages/e/epel-release-6-8.noarch.rpm
    
            curl -Lks http://www.hop5.in/yum/el6/hop5.repo >/etc/yum.repos.d/hop5.repo
    
            rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
    
            sed -i 'N;8a\priority=11' /etc/yum.repos.d/epel.repo
    
            yum makecache
    
        fi
    
    fi
    
    # 安装相关依赖
    yum upgrade -y
    
    yum install ibus* -y
    
    yum install kcachegrind -y
    
    yum install libwebp libwebp-devel uuid libuuid-devel -y
    
    yum install libXau-devel ibX11-devel libXext-deve net-snmp-devel -y
    
    yum install wget net-tools createrepo utp ntpdate openssh-server  man man-pages -y
    
    yum groupinstall "X Window System" "Chinese Support" "GNOME DESKTOP" -y
    
    yum install yum-priorities flex flex-devel clang clang-devel bison bison-devel ctags nc libdnet libdnet-devel  -y
    
    yum install gcc gcc-c++ glibc-static glibc-devel centos-release-scl devtoolset-7-* docker-io redis libpcap-devel libpcap -y
    
    yum install xorg-x11-server-Xvfb readline readline-devel binutils binutils-devel texinfo gdb gdb-gdbserver openldap-devel -y
    
    yum install curl libcurl libcurl-devel boost boost-devel boost-doc openssl-devel libgcrypt-devel gtk2-devel tcl-devel tk-devel -y
    
    rpm -ivh http://repo.mysql.com/mysql-community-release-el6-5.noarch.rpm && yum install mysql-community-server mysql-community-devel -y
    
    yum install samba samba-swat samba-client zlib-devel bzip2 bzip2-devel minizip unzip minizip-deve make automake autoconf libconfig-deve libev-devel libevent-devel libxml2-devel -y
    
    yum install xz bc vim tee tree swig cpan telnet libtool hmaccalc graphviz nss git git-svn git-cvs git-all git-gui git-email git-review git-tools pcre-devel libcurl-devel libssh2-devel -y
    
    yum install kernel-headers kernel-devel kernel-tools kernel-tools-libs-devel valgrind valgrind-devel valgrind-openmpi nasm gperf gnutls mercurial pkgconfig freetype-devel docbook-utils-pdf -y
    
    
    
    #cmake工具来帮助我们构建并维护项目代码。
    if [ ! -d "${SOFTWARE_PATH}/cmake" ]; then
    
        cd ${PACKAGE_PATH}
    	
    	#解压缩
        tar -xvf cmake-3.14.1-Linux-x86_64.tar.gz
    	
    	#删除安装包
        rm -rf cmake-3.14.1-Linux-x86_64.tar.gz
    	
        mv ${PACKAGE_PATH}/cmake-3.14.1-Linux-x86_64 ${SOFTWARE_PATH}/cmake
    	
    	#将安装路径下的可执行文件软连接到 /usr/local/bin/
        ln -sf ${SOFTWARE_PATH}/cmake/bin/* /usr/local/bin/
    
    fi
    
    # gcc 相关依赖
    if [ ! -d "${SOFTWARE_PATH}/gcc/gmp" ]; then
     
        if [ ! -d "${PACKAGE_PATH}/gmp" ]; then
    
            cd ${PACKAGE_PATH}
    
            tar -xvf gmp-6.1.2.tar.xz
    
            rm -rf gmp-6.1.2.tar.xz
    
            mv ${PACKAGE_PATH}/gmp-6.1.2 ${PACKAGE_PATH}/gmp
    
        fi
    
        if [ -d "${PACKAGE_PATH}/gmp" ]; then
    
            cd ${PACKAGE_PATH}/gmp
    		
    		#编译选项  --prefix:设置安装位置
            ./configure \
                --prefix=${SOFTWARE_PATH}/gcc/gmp
    		
    		#make 编译  make install 安装
            make ${CPU} && make install
    
        fi
    
        if [ ! -d "${SOFTWARE_PATH}/gcc/gmp" ]; then
    
            echo gcc/gmp >>${ERROR_LOG}
    
            exit 1
    
        else
    
            echo ${SOFTWARE_PATH}/gcc/gmp/lib >>${LD_CONF}
    
            ldconfig
    
        fi
    
    fi
    
    
    if [ ! -d "${SOFTWARE_PATH}/gcc/mpfr" ]; then
    
        if [ ! -d "${PACKAGE_PATH}/mpfr" ]; then
    
            cd ${PACKAGE_PATH}
    
            tar -xvf mpfr-4.0.1.tar.gz
    
            rm -rf mpfr-4.0.1.tar.gz
    
            mv ${PACKAGE_PATH}/mpfr-4.0.1 ${PACKAGE_PATH}/mpfr
    
        fi
    
        if [ -d "${PACKAGE_PATH}/mpfr" ]; then
    
            cd ${PACKAGE_PATH}/mpfr
    
            ./configure \
                --prefix=${SOFTWARE_PATH}/gcc/mpfr \
                --with-gmp=${SOFTWARE_PATH}/gcc/gmp \
                --enable-thread-safe \
                --enable-warnings
    
            make ${CPU} && make install
    
        fi
    
        if [ ! -d "${SOFTWARE_PATH}/gcc/mpfr" ]; then
    
            echo gcc/mpfr >>${ERROR_LOG}
    
            exit 1
    
        else
    
            echo ${SOFTWARE_PATH}/gcc/mpfr/lib >>${LD_CONF}
    
            ldconfig
    
        fi
    
    fi
    
    #http://mirrors.ustc.edu.cn/gnu/mpc/mpc-1.1.0.tar.gz
    if [ ! -d "${SOFTWARE_PATH}/gcc/mpc" ]; then
    
        if [ ! -d "${PACKAGE_PATH}/mpc" ]; then
    
            cd ${PACKAGE_PATH}
    
            tar -xvf mpc-1.1.0.tar.gz
    
            rm -rf mpc-1.1.0.tar.gz
    
            mv ${PACKAGE_PATH}/mpc-1.1.0 ${PACKAGE_PATH}/mpc
    
        fi
    
        if [ -d "${PACKAGE_PATH}/mpc" ]; then
    
            cd ${PACKAGE_PATH}/mpc
    
            ./configure \
                --prefix=${SOFTWARE_PATH}/gcc/mpc \
                --with-gmp=${SOFTWARE_PATH}/gcc/gmp \
                --with-mpfr=${SOFTWARE_PATH}/gcc/mpfr
    
            make ${CPU} && make install
    
        fi
    
        if [ ! -d "${SOFTWARE_PATH}/gcc/mpc" ]; then
    
            echo gcc/mpc >>${ERROR_LOG}
    
            exit 1
    
        else
    
            echo ${SOFTWARE_PATH}/gcc/mpc/lib >>${LD_CONF}
    
            ldconfig
    
        fi
    
    fi
    
    #http://mirrors.ustc.edu.cn/gnu/gcc/gcc-8.1.0/gcc-8.1.0.tar.gz
    #安装gcc
    if [ ! -d "${SOFTWARE_PATH}/gcc/gcc" ]; then
    
        if [ ! -d "${PACKAGE_PATH}/gcc" ]; then
    
            cd ${PACKAGE_PATH}
    
            tar -xvf gcc-8.1.0.tar.gz
    
            rm -rf gcc-8.1.0.tar.gz
    
            mv ${PACKAGE_PATH}/gcc-8.1.0 ${PACKAGE_PATH}/gcc
    
        fi
    
        if [ -d "${PACKAGE_PATH}/gcc" ]; then
    
            cd ${PACKAGE_PATH}/gcc
    
            CFLAGS=-O2 \
                CXXFLAGS=-O2 \
                CPPFLAGS=-O2 \
                ./configure \
                CFLAGS=-O2 \
                CXXFLAGS=-O2 \
                CPPFLAGS=-O2 \
                --prefix=${SOFTWARE_PATH}/gcc/gcc \
                --mandir=${SOFTWARE_PATH}/gcc/gcc/share/man \
                --infodir=${SOFTWARE_PATH}/gcc/gcc/share/info \
                --with-bugurl=http://bugzilla.redhat.com/bugzilla \
                --enable-bootstrap \
                --enable-shared \
                --enable-threads=posix \
                --enable-checking=release \
                --with-system-zlib \
                --enable-__cxa_atexit \
                --disable-libunwind-exceptions \
                --enable-gnu-unique-object \
                --enable-linker-build-id \
                --with-linker-hash-style=gnu \
                --enable-languages=c,c++ \
                --enable-plugin \
                --enable-initfini-array \
                --disable-libgcj \
                --disable-dssi \
                --enable-libgcj-multifile \
                --with-ppl \
                --with-cloog \
                --enable-gnu-indirect-function \
                --with-tune=generic \
                --with-arch_32=x86-64 \
                --build=x86_64-redhat-linux \
                --with-diagnostics-color=auto \
                --disable-multilib \
                --program-suffix=8.1.0 \
                --with-gmp=${SOFTWARE_PATH}/gcc/gmp \
                --with-mpfr=${SOFTWARE_PATH}/gcc/mpfr \
                --with-mpc=${SOFTWARE_PATH}/gcc/mpc \
                CFLAGS=-O2 \
                CXXFLAGS=-O2 \
                CPPFLAGS=-O2
    
            make ${CPU} && make install
    
        fi
    
        if [ ! -d "${SOFTWARE_PATH}/gcc/gcc" ]; then
    
            echo gcc/gcc >>${ERROR_LOG}
    
            exit 1
    
        else
    
            mv /usr/bin/gcc /usr/bin/gcc4.8
            mv /usr/bin/g++ /usr/bin/g++4.8
            mv /usr/bin/c++ /usr/bin/c++4.8
            mv /usr/bin/cpp /usr/bin/cpp4.8
            #  -sf  s  软连接   f  强制执行
            ln -sf ${SOFTWARE_PATH}/gcc/gcc/bin/cpp8.1.0 /usr/bin/cpp
            ln -sf ${SOFTWARE_PATH}/gcc/gcc/bin/c++8.1.0 /usr/bin/c++
            ln -sf ${SOFTWARE_PATH}/gcc/gcc/bin/g++8.1.0 /usr/bin/g++
            ln -sf ${SOFTWARE_PATH}/gcc/gcc/bin/gcc8.1.0 /usr/bin/gcc
    
            echo ${SOFTWARE_PATH}/gcc/gcc/lib64 >>${LD_CONF}
    
            ldconfig
    
        fi
    
    fi
    
    #http://mirrors.ustc.edu.cn/gnu/gdb/gdb-8.1.tar.gz
    #安装断点调试工具
    if [ ! -d "${SOFTWARE_PATH}/gdb" ]; then
    
        if [ ! -d "${PACKAGE_PATH}/gdb" ]; then
    
            cd ${PACKAGE_PATH}
    
            tar -xvf gdb-8.1.tar.gz
    
            rm -rf gdb-8.1.tar.gz
    
            mv ${PACKAGE_PATH}/gdb-8.1 ${PACKAGE_PATH}/gdb
    
        fi
    
        if [ -d "${PACKAGE_PATH}/gdb" ]; then
    
            cd ${PACKAGE_PATH}/gdb
    
            ./configure \
                --prefix=${SOFTWARE_PATH}/gdb \
                --program-suffix=8.1 \
                --enable-libada \
                --enable-libssp \
                --enable-lto \
                --enable-vtable-verify \
                --enable-host-shared \
                --with-gmp=${SOFTWARE_PATH}/gcc/gmp \
                --with-mpc=${SOFTWARE_PATH}/gcc/mpc \
                --with-mpfr=${SOFTWARE_PATH}/gcc/mpfr \
                CC=${SOFTWARE_PATH}/gcc/gcc/bin/gcc8.1.0 \
                CXX=${SOFTWARE_PATH}/gcc/gcc/bin/g++8.1.0
    
            make ${CPU} && make install
    
        fi
    
        if [ ! -d "${SOFTWARE_PATH}/gdb" ]; then
    
            echo gdb >>${ERROR_LOG}
    
            exit 1
    
        else
    
            ln -sf ${SOFTWARE_PATH}/gdb/bin/* /usr/local/bin/
    
            echo ${SOFTWARE_PATH}/gdb/lib >>${LD_CONF}
    
            ldconfig
    
        fi
    
    fi
    

安装

新建一个文件××.sh,将上述代码复制,然后 chmod 755 ××.sh。 执行 ./××.sh

那么恭喜你,你的环境已经安装好了

测试

  • 执行 gcc --version

在这里插入图片描述

  • 执行 gdb --version

在这里插入图片描述

  • 执行 cmake --version

在这里插入图片描述

如上显示,那么说明安装成果了。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值