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

文章目录

  • 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

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/411240.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【论文阅读】Deep Graph Contrastive Representation Learning

目录 0、基本信息1、研究动机2、创新点3、方法论3.1、整体框架及算法流程3.2、Corruption函数的具体实现3.2.1、删除边(RE)3.2.2、特征掩盖(MF) 3.3、[编码器](https://blog.csdn.net/qq_44426403/article/details/135443921)的设…

Ikuai中如何添加/更换虚拟机(图文)

Ikuai配置 分区/格式化硬盘(如果已经格式化,无需再次格式化,直接传送到上传镜像) 上传镜像 ⚠️:如果是压缩格式,需要解压缩后上传,如这里的IMG格式。 创建虚拟机 配置虚拟机(等待虚拟机起来后执行&#…

Android Studio由于开启代理无法下载依赖,一直在Build model

一、问题描述 正常打开AS项目,一直显示Build model就是不下载依赖 二、问题解决 1、首先选择No Proxy,可以看到这位同学之前是使用的代理。 2、打开下面文件,然后删除某尾的4行。 3、面对提示框,直接点击OK。 4、然后停…

MyTinySTL 简单分析(四)--algobase.h uninitialized.h

目前在学习STL,看到一个开源的项目MyTinySTL,非常不错。想着照着这个代码自己敲一遍应该也能有些进步。然后就开始了学习过程。 首先分析的是vector 以下是由vector.h关联的所有头文件 这里分析一下algobase.h 这里定义了很多函数 min max iter_swa…

无界面自动化测试(IDEA+Java+Selenium+testng)(PhantomJS)

自动化测试(IDEAJavaSeleniumtestng)(PhantomJS)_phantomjs怎么写js脚本idea-CSDN博客 上述连接是参考:现在如果按照如上链接进行操作大概率会失败,下面会针对如上链接的部分步骤做出修改 1、在pom.xml文件中需要使用低版本sele…

循环神经网络的变体模型-LSTM、GRU

一.LSTM(长短时记忆网络) 1.1基本介绍 长短时记忆网络(Long Short-Term Memory,LSTM)是一种深度学习模型,属于循环神经网络(Recurrent Neural Network,RNN)的一种变体。…

ES搜索的安装以及常用的增删改查操作(已经写好json文件,可以直接使用)

1.es的下载 https://www.elastic.co/cn/downloads/past-releases 2.elasticsearch安装及配置,遇到9200访问不了以及中文乱码,能访问了却要账户密码等问题 Elasticsearch启动后访问9200失败_http://localhost:9200无返回值-CSDN博客 3.开启es服务&#x…

电子雨html代码

废话不多说下面是代码&#xff1a; <!DOCTYPE html><html lang"en"><head><meta charset"UTF-8"><title>Code</title><style>body{margin: 0;overflow: hidden;}</style></head><body><c…

人工智能 AI 如何让我们的生活更加便利

每个人都可以从新技术中获益&#xff0c;一想到工作或生活更为便利、简捷且拥有更多空余时间&#xff0c;谁会不为之高兴呢&#xff1f;借助人工智能&#xff0c;每天能够多一些空余时间&#xff0c;或丰富自己的业余生活&#xff0c;为培养日常兴趣爱好增添一点便利。从电子阅…

【教3妹学编程-算法题】检查按位或是否存在尾随零

3妹&#xff1a;呜呜&#xff0c;烦死了&#xff0c; 脸上长了一个痘 2哥 : 不要在意这些细节嘛&#xff0c;不用管它&#xff0c;过两天自然不就好了。 3妹&#xff1a;切&#xff0c;你不懂&#xff0c;影响这两天的心情哇。 2哥 : 我看你是不急着找工作了啊&#xff0c; 工作…

各省快递量数据, shp+excel,2001-2021年,已实现数据可视化

基本信息. 数据名称: 各省快递量数据 数据格式: shpexcel 数据时间&#xff1a;2001-2021年 数据几何类型: 面 数据坐标系: WGS84 数据来源&#xff1a;网络公开数据 数据字段&#xff1a; 序号字段名称字段说明1a_2001快递量/万件_2001年2a_2002快递量/万件_2002年3…

小程序进阶学习(视频首页)

目录 首先封装请求文件 在用封装好的请求文件请求数据 得到的数据 在把数据循环放到页面即可 页面代码 请求文件代码 首先封装请求文件 在用封装好的请求文件请求数据 得到的数据 在把数据循环放到页面即可 页面代码 <!--pages/main-video/main-video.wxml-->&l…