makefile,make,gcc/g++ 编译流程分析

makefile,make,gcc/g++ 编译流程分析

C++实现加减乘除四个运算

//
// Created by qiufh on 2024-01-17.
//

#include "add.h"

int add(int a, int b) {

    return a + b;
}
//
// Created by qiufh on 2024-01-17.
//

#ifndef UNTITLED3_ADD_H
#define UNTITLED3_ADD_H

int add(int, int);


#endif //UNTITLED3_ADD_H
//
// Created by qiufh on 2024-01-17.
//

#include "calc.h"
#include "add.h"
#include "sub.h"
#include "multi.h"

int main() {
    int a = 1;
    int b = 2;
    printf("a+b=%d\n", add(a, b));
    printf("a+b=%d\n", sub(a, b));
    printf("a+b=%d\n", multi(a, b));
    return 0;
}
//
// Created by qiufh on 2024-01-17.
//

#ifndef UNTITLED3_CALC_H
#define UNTITLED3_CALC_H


class calc {

};


#endif //UNTITLED3_CALC_H
//
// Created by qiufh on 2024-01-17.
//

#include "multi.h"

int multi(int a, int b) {
    return a * b;
}
//
// Created by qiufh on 2024-01-17.
//

#ifndef UNTITLED3_MULTI_H
#define UNTITLED3_MULTI_H


int multi(int, int);

#endif //UNTITLED3_MULTI_H
//
// Created by qiufh on 2024-01-17.
//

#include "sub.h"

int sub(int a, int b) {
    return a - b;
}
//
// Created by qiufh on 2024-01-17.
//

#ifndef UNTITLED3_SUB_H
#define UNTITLED3_SUB_H


int sub(int a, int b);


#endif //UNTITLED3_SUB_H

使用makefile文件编译我们的源代码文件

在这里插入图片描述

生成可执行文件

在这里插入图片描述

执行一下这个可执行的文件

在这里插入图片描述

成功输出

修改下我们的makefile文件的写法,否则很多源文件的话我们要手写很多

在这里插入图片描述

make一下

在这里插入图片描述

执行一下

在这里插入图片描述

还是可以输出我们的calc里面的代码跟上面的一样

现在修改一下add.cpp里面的代码

在这里插入图片描述

保存退出

然后我们在make编译一下,我们发现我们只编译了修改了的add.cpp的文件,其他两个没修改的文件没被编译。

在这里插入图片描述

可以有效的缩短我们的编译时间。分开写的好处

#calc:
#       g++ add.cpp calc.cpp multi.cpp sub.cpp -o calc
#
#
#


calc:add sub multi
//-o 是输出文件
        gcc add.cpp sub.cpp multi.cpp calc.cpp -o calc

add:add.cpp
        gcc -shared add.cpp -o add

sub:sub.cpp
        gcc -shared sub.cpp -o sub

multi:multi.cpp
        gcc -shared multi.cpp -o multi

过程

源代码编译成可执行文件

预处理:gcc -E main.cpp>main.ii

在这里插入图片描述

查看一下main.ii的内容,这就是预处理

在这里插入图片描述

编译这个main.ii文件,编译产物是main.s的汇编文件,gcc-S main.ii 得到名为 main.s 的汇编文件

在这里插入图片描述

看一下里面的内容

在这里插入图片描述

在这里插入图片描述

汇编 gcc -c main.s 得到名为 main.o 的二进制文件

在这里插入图片描述

链接 gcc -lstdc++ main.o,g++ -lstdc++main.o 得到名为 a.out 的可执行文件

在这里插入图片描述

执行一下a.out

在这里插入图片描述

相关推荐

  1. 数据分析流程

    2024-01-21 21:50:03       46 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-01-21 21:50:03       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-21 21:50:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-21 21:50:03       20 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-21 21:50:03       20 阅读

热门阅读

  1. 数据结构---数组

    2024-01-21 21:50:03       35 阅读
  2. 配置免费的SSL

    2024-01-21 21:50:03       29 阅读
  3. spring boot 通过zxing生成二维码

    2024-01-21 21:50:03       33 阅读
  4. 【AI】深度学习在图像编码中的应用(1)

    2024-01-21 21:50:03       37 阅读
  5. ARP相关

    ARP相关

    2024-01-21 21:50:03      25 阅读
  6. 短剧剪辑思路

    2024-01-21 21:50:03       66 阅读
  7. nginx 搭建docker 似有hub仓库

    2024-01-21 21:50:03       24 阅读
  8. 归并排序与逆序对

    2024-01-21 21:50:03       24 阅读