• 【C++】C++运行环境的搭建


    在本篇文章中,笔者会谈谈如何搭建C++的运行环境。在不同操作系统中,运行C++编译器的命令也各不相同,最常用的编译器是GNU编译器(Linux系统)和微软Visual Studio编译器(Windows系统)。

    注意C++是没有版本的说法的,只有编译C++的编译器才有版本这一说。C++常用的标准的是“C++11”和"C++98",其中“C++11”是目前最新的标准。如果是Linux系统,GCC的版本至少都应该是4.7才能支持c++11标准,而且4.7还未完全支持C++11标准的所有特性,只支持了C++11标准的部分特性,传送门。但是Windows系统中的至少是Visual Studio 2015才支持"C++11"标准。

    Windows7 搭建运行环境

    C++与C#不同,Windows中很多类库都是由C#写的,几乎所有的Windows操作系统默认都已经安装了.NET Framework了,可以直接使用C#的环境。但C++不同,需要先下载微软的Visual Studio,安装过程一路Next。这里笔者就不介绍如何使用它的图形界面了,本文介绍通过命令行工具来编译C++程序。visual studio有许多版本,但从visual studio 2012才开始部分支持c++11的特性,关于visual studio 各个版本与c++标准支持的对照表,传送门

    笔者的Visua Studio目录为:C:Program Files (x86)Microsoft Visual Studio 11.0

    配置环境变量:

    添加VS_HOME
    C:Program Files (x86)Microsoft Visual Studio 11.0

    添加LIB
    %VS_HOME%vclib

    添加INCLUDE
    %VS_HOME%vcinclude

    Path环境变量追加:
    %VS_HOME%vcin

    接下来测试一下:cl /?


    然后编写一个Hello.cpp文件,内容如下:

    //引入iostream
    #include <iostream>
    
    int main(){
        //提示用户输入
        std::cout << "Enter two numbers:" << std::endl;
            
        int v1 = 0, v2 = 0;
        //接收两个数字,中间以空格隔开
        std::cin >> v1 >> v2;
        
        //输出两个数的和
        std::cout << "The sum of num " << v1 << " and " << v2 << " is " << (v1+v2) << std::endl;
        
        return 0;
    }

    运行cl /EHsc Hello.cpp,会得到Hello.exe文件。其中/EHsc表示启用C++的异常处理,与/GX[-]相同。

    读者可能会遇到如下错误:

    1.出现vc编译,丢失mspdb110.DLL解决
    这是因为%VS_HOME%VCin下没有mspdb110.dll“这个文件,直接从%VS_HOME%Common7IDE下复制这个文件到%VS_HOME%VCin下即可解决。

    2.无法打开文件“kernel32.lib”或缺少 “uuid.lib”
    这是%VS_HOME%VClib下没有这两个文件,在不同的计算机中这两个文件的位置也不一定是固定的。读者可以在C盘下搜索Kernal32.lib和uuid.lib,然后将它们拷贝到%VS_HOME%VClib目录下。

    Linux 下搭建运行环境

    笔者的Linux是:CentOS-7.4-x64版本。

    在上面我们介绍了如何在Windows下搭建和运行C++程序,在接下来的章节中,笔者将会探讨如何在Linux下搭建C++语言环境。

    在开始搭建环境之前,需要先了解GCC的概念。GCC的全称是GNU Compiler Collection(GNU编译器集合),通过GNU编译器能够编译不同类型的语言。

    gcc:GNU C Compiler

    g++:GNU C++ Compiler

    gcc编译.c或.cpp结尾的文件,但是gcc是分开编译C和C++的。g++也可以编译.c或.cpp文件,但这些文件都被作为C++进行编译。

    也就是说,g++编译文件的时候,默认是会引入标准库(std)文件的,但是gcc不会。

    1.安装GNU c/c++编译器

    检查gcc和g++是否安装

    gcc --version
    
    g++ --version

    如果未安装,可以按照如下的提示进行一步步进行安装。

    如果是Centos6系统:

    # yum groupinstall 'Development Tools'

    CentOs7系统,可能会找不到“Development Tools”包,可以用如下的命令:

    # yum -y install gcc-c++

    如果是Debian 或 Ubuntu 系统

    $ sudo apt-get update
    $ sudo apt-get install build-essential manpages-dev

     2.验证

    在Linux系统中,输入如下命令会显示GCC的安装位置和版本信息

    $ whereis gcc
    $ which gcc
    $ gcc --version

    如果是要使用C++11的特性,那么应该将GCC的版本升级到4.7以上,建议5.4的版本。

    下面笔者介绍如何在CentOS7下,将GCC4.8升级到GCC5.4版本,可以参考如下脚本

    echo "Downloading gcc source files..."
    curl https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2 -O
    
    echo "extracting files..."
    tar xvfj gcc-5.4.0.tar.bz2
    
    echo "Installing dependencies..."
    yum install gmp-devel mpfr-devel libmpc-devel -y
    
    echo "Configure and install..."
    mkdir gcc-5.4.0-build
    cd gcc-5.4.0-build
    ../gcc-5.4.0/configure --enable-languages=c,c++ --disable-multilib
    make -j$(nproc) && make install

    参考地址为:https://gist.github.com/jdhao/e3fd77d51f3a95684d2b3354fc61b2ab

    3.在Linux系统上编译和运行C/C++项目

     接下来笔者写些C和C++的案例文件,并且在Linux系统编译和运行起来。

    demo.c

    #include<stdio.h>
    /* demo.c:  My first C program on a Linux */
    int main(void)
    {
     printf("Hello! This is a test prgoram.
    ");
     return 0;
    }

    编译命令可以用cc、gcc、make:

    cc demo.c -o demo

    gcc demo.c -o demo

    make demo

    注意:在使用make编译的时候,不用指定源文件,只需要制定源文件去掉后缀后的新的文件,就可以了。例如上面的demo.c,只要使用make demo, make就会根据规则,将demo.c编译为demo。

    执行上面三个命令的任何一个,都可以生成一个名为demo的可运行文件。

    然后使用

    ./demo

    就可以运行了。

    效果图:

    接下来我们来编译和运行一下C++程序。

    还是以上面的Hello.cpp(这里不再重复贴出代码,就是第一节中“Windows7 搭建运行环境”下的案例)为例,我们可以如下编译

    g++ Hello.cpp -o Hello

    或者

    make Hello

    注意这里不能使用 gcc Hello.cpp -o Hello 来编译(如果使用该命令编译,那么报出“找不到标准库”的错误),因为gcc命令默认是编译C语言文件的,未引入标准库。

    然后运行就可以了

    ./Hello

    如果使用了g++11的特性的话,那么应该指明使用g++11标准进行编译:

    g++ Hello.cpp  -o Hello -std=c++11

    如果make使用的时候,出现target is up to date错误信息,那么可以加上-B 选项,例如:

    make -B Hello

    参考文档:

    How To Compile And Run a C/C++ Code In Linux

    C++ compiler support

    What is the difference between g++ and gcc?

  • 相关阅读:
    windows 安装 ELK(Elasticsearch,Logstash,kibana)
    NSSM 将程序封装成服务软件
    面试-双向链表
    mySql 事务,游标以及循环
    SQL 事务
    C# Windows 服务
    MVC 中ajax 调用Webservice 或WCF 问题
    js prototype
    计算一个数等于其它数相加的所有可能 如: 5 =1+4 ,1+3+1,2+3,2+2+1,1+1+1+1+1,1+1+1+2
    冒泡排序,选择排序,快速排序
  • 原文地址:https://www.cnblogs.com/HDK2016/p/10205390.html
Copyright © 2020-2023  润新知