Linux编译C++

Linux编译C++

Scroll Down

创建C++编译环境

  • 安装VIM PLUS

    为什么安装VIM PLUS: 可以为我们提供良好的编译环境,高亮代码,智能提示等等~

    1. git clone https://github.com/chxuan/vimplus.git ~/.vimplus

    1. cd ~/.vimplus

    1. ./install.sh 运行脚本install.sh来安装vimplus(如果你是非root用户请参考这篇文章解决不在 sudoers 文件中。此事将被报告的异常)

    1)此时脚本开始运行

    2)选择python3解释编译ycm文件

    此时脚本文件会问你是选择python2还是python3来编译ycm文件?我在这里选择3,在此之前请安装python3

    3)开始安装插件

    4)此时vimplus就安装成功了

  • 安装Debug

    • GDB和LLDB的关系

      调试器描述
      GDBUNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能。
      LLDBLLDB(Low Level Debug)是Apple正在迁移的LLVM工具套件(包括Clang)的一部分具有REPL (Read-Eval-Print Loop,交互式解释器)、C++ 和 Python 插件,位于 Xcode 窗口底部控制台中,也有其他 IDE 加入了 LLDB 调试器,如** CLion**,当然其也可以在 terminal 中使用。
    • 安装GDB调试器

      yum install gdb (CentOS)

      gdb -v 查看gdb是否安装成功

    • 安装LLDB调试器(暂时不写)

      大多数电脑还是用GDB作为调试器的,一般只有MAC使用且内置LLDB,暂时先不写这个

  • 安装g++编译器

    yum install gcc-g++

    gcc -v 查看是否安装成功

通过g++编译程序

  • 创建程序main.cpp,func.cpp,func.h

    main.cpp

    #include "func.h"
    int main()
    {
        int a,b;
        scanf("%d %d",&a,&b);
        change(&a,&b);
        printf("%d %d",a,b);
        return 0;
    }
    

    func.cpp

    #include "func.h"
    void change(int *a,int *b){
        int temp;
        temp = *a;
        *a = *b;
        *b = temp;
    }
    

    func.h

    #pragma once
    #include <cstdio>
    void change(int *a,int *b);
    

    VimPlus如图所示:

  • g++ -g main.cpp func.cpp -o out

    我们详细描述一下这条指令的执行过程

    1. g++ main.cpp 相当于g++ -c main.cpp 目的是生成机器码文件即main.o和func.o(这里有个误区,小白往往把**.o**文件当初可执行文件,这是绝对错误的!!!)

    2. g++ -g main.cpp func.cpp -o out

      后面的部分是生成可执行文件out名字可以任意取

    3. ./out执行程序

  • 设置断点

    设置断点之前我们进入gdb调试

    gdb out 开始Debug

    b main 在main函数设置断点(此时程序会停在初始化的第一条语句)

    run 执行程序

  • 查看栈

    frame 可以查看程序在哪一个函数

    此时执行frame可以看到程序进入了change()中

​ 我们继续执行代码,此时跳出函数后执行frame后,返回main函数中

​ 我尝试画了一张图应该是这样

​ 当它change()函数被执行完毕后,有返回到main函数执行