文章目录
- 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_Hint 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_Hclass 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_Hint 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_Hint 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 calcadd:add.cppgcc -shared add.cpp -o addsub:sub.cppgcc -shared sub.cpp -o submulti:multi.cppgcc -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