Linux C++开发环境搭建

Linux C++ 开发环境搭建

 

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

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

posted @ 2020-11-18 09:45  无所谓WZ  阅读(130)  评论(0)    收藏  举报