C++ PrimerPlus 复习 第一章 命令编译链接文件 make文件
第一章 命令编译链接文件
- C++ 有什么呢?
- C++ 源代码文件后缀
- 运行C++过程
- 可执行代码:
- 编译语法:
- make
- Makefile 基础语法
- 编写完make只要和将要编译的文件放一起就行 然后在该目录使用make命令,就将自动运行;
- 基础的Makefile版本 现在的缺点也大 \^-\^
- 更加健全的Makefile 但还是有不小的缺点
- 常用版本
C++ 有什么呢?
面向对象编程:
主要就是将功能封装
泛型编程:
各种各样的模板
C++ 源代码文件后缀
运行C++过程
源代码 --> 编译器 --> 目标代码 --> 链接程序 -->可执行代码;
可执行代码:
就是一大堆指令的集合
.exe 和 .out 文件都是可执行文件的扩展名,但它们通常与不同的操作系统和编程环境相关联。
以下是它们的一些主要区别:
.exe 文件:
Windows系统中常见的可执行文件扩展名。
通常用于Windows上的可执行文件,如C++或C#程序。
.exe 文件包含了Windows操作系统所需的可执行代码和元数据。
.out 文件:
.out 文件通常在类Unix和类Linux操作系统中见到,如Linux和macOS。
这是一种通用的可执行文件扩展名,用于包含在Unix/Linux环境下的各种编程语言(如C/C++、Python等)编译后生成的可执行文件。
.out 文件不包含特定于操作系统的元数据,因为它们通常在Unix/Linux环境中运行,这些系统不需要额外的元数据来识别可执行文件。
需要注意的是,这些扩展名并不是绝对的,它们只是一种约定,你可以根据需要为可执行文件选择不同的扩展名。在Linux或macOS中,你可以通过使用chmod命令将文件设置为可执行,而不需要特定的扩展名。只要文件具有可执行权限,你就可以在终端中运行它。
总的来说,.exe 文件通常与Windows相关,而.out 文件通常与Unix和Linux相关,但这只是一种通用的命名约定,不是绝对规则。
编译语法:
编译器自动将目标代码文件(.o)传递给系统链接程序,该程序将代码与库代码结合起来,生成一个可执行文件。
在默认情况下,可执行文件为a.out ,win是exe
如果只使用一个源文件,链接程序还将删除spiffy.o文件,因为这个文件不再需要了。
要运行该程序,只要输入可执行文件的文件名即可
直接没有 error.o 文件
-c 选项来告诉编译器只生成目标文件,而不生成可执行文件
没有-c
g++ error5.cpp -o error5.exe
g++ -c .\sumafile_6_16.cpp 生成目标文件 sumafile_6_16.o
g++ -o sumafile.exe .\sumafile_6_16.o 生成可执行文件 sumafile.exe
多个源文件
单个无法,运行这个,生成main.exe文件运行
g++ -o filename.exe studentc.o use_stuc.o
前面可以直接填filename不加exe,可以直接生成filename.exe文件
make
上面是我将要编译链接的文件
如果我进行常规处理
g++ -c studentc.cpp -o studentc.o
g++ -c use_stuc.cpp -o use_stuc.o
g++ -o student studentc.o use_stuc.o
现在看起来还好是吧,但文件一多就是痛苦,所以引用make命令
Makefile 基础语法
语法:
[目标]: [依赖]
(tab制表符)[命令]
普通版本 缺点大
main.exe: file1.cpp file2.cppg++ file1.cpp file2.cpp -o main.exe
编写完make只要和将要编译的文件放一起就行
然后在该目录使用make命令,就将自动运行;
基础的Makefile版本 现在的缺点也大 ^-^
$@ 表示目标文件
$^ 表示所有的依赖文件
$< 表示第一个依赖文件
$? 表示比目标还要新的依赖文件列表
CXX = g++
TARGET = hello.exe
OBJ = file1.o file2.oCXXFLAGS = -c -Wall$(TARGET): $(OBJ)$(CXX) $^ -o $@%.o: %.cpp$(CXX) $(CXXFLAGS) $< -o $@.PHONY: clean
clean:del /Q *.o hello.exe
更加健全的Makefile 但还是有不小的缺点
# CXX = g++
# TARGET = hello.exe
# OBJ = file1.o file2.o# CXXFLAGS = -c -Wall# $(TARGET): $(OBJ)
# $(CXX) $^ -o $@# %.o: %.cpp
# $(CXX) $(CXXFLAGS) $< -o $@# .PHONY: clean
# clean:
# del /Q *.o hello.exe
常用版本
CXX = g++
TARGET = main
SRC = $(wildcard *.cpp)
OBJ = $(patsubst %.cpp, %.o, $(SRC))CXXFLAGS = -c -Wall# all: $(TARGET) clean$(TARGET): $(OBJ)$(CXX) -o $@ $^make clean%.o: %.cpp$(CXX) $(CXXFLAGS) $< -o $@.PHONY: clean
clean:del /Q *.o
相关文章:

C++ PrimerPlus 复习 第一章 命令编译链接文件 make文件
第一章 命令编译链接文件 C 有什么呢?C 源代码文件后缀运行C过程可执行代码:编译语法:makeMakefile 基础语法编写完make只要和将要编译的文件放一起就行 然后在该目录使用make命令,就将自动运行;基础的Makefile版本 现…...

微信小程序——常用组件的属性介绍
常用的组件内容标签 text 文本组件类似于HTML中的span标签,是一个行内元素rich-text 富文本标签支持把HTML字符串渲染为WXML结构 text标签的基本使用 通过text组件的selectable属性,实现长按选中文本内容的效果。只有text标签支持长按选中效果&#x…...

【深度学习】 Python 和 NumPy 系列教程(廿七):Matplotlib详解:3、多子图和布局:散点矩阵图(Scatter Matrix Plot)
目录 一、前言 二、实验环境 三、Matplotlib详解 1、2d绘图类型 2、3d绘图类型 3、多子图和布局 1. subplot()函数 2. subplots()函数 3. 散点矩阵图(Scatter Matrix Plot) 一、前言 Python是一种高级编程语言,由Guido van Rossum于…...

解决jupyter打开的默认路径问题
已经安装完anaconda,但是jupyter每一次打开的路径都不是自己想要的路径,可以在配置文件中修改jupyter打开的默认路径,具体步骤如下: 首先打开anaconda的命令行 如果有多个环境的,需要输入conda activate 环境名称以下命…...

Git 学习笔记
Git 学习笔记 Git 简介 Git 是一个 开源的分布式版本控制系统。 什么是版本控制? 版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。 什么是分布式版本控制系统? 介绍分布式版本控制系统前,有…...
【Qt】QGroundControl入门3:源码初探
1、源码目录 QGroundControl使用pro来管理工程,可以使用qmake来编译。同时还有CMakeLists.txt,应该可以使用cmake来编译,本人还没有尝试。 QGroundControl是跨平台的,支持android、win、linux、mac、ios系统,在QGCCommon.pri中可见关于跨平台编译的配置。 1.1 目录树 …...

腾讯mini项目-【指标监控服务重构】2023-07-31
今日已办 trace_id传播 关于如何使用 trace_id 创建 span 的思路 【暂未实现 & 测试】 调研 SpanProcessor 阅读源码的test 明日待办 根据 trace_id 创建 span,应该需要 parent span_id 才能有 trace 的树状 span 的关系...

Rust通用编程概念(3)
Rust通用编程概念 1.变量和可变性1.执行cargo run2.变量3.变量的可变性4.常量5.遮蔽5.1遮蔽与mut区别1.遮蔽2.mut 2.数据类型1.标量类型1.1整数类型1.2浮点数类型1.3数字运算1.4布尔类型1.5字符类型 2.复合类型2.1元组类型2.2数组类型1.访问数组2.无效的数组元素访问 3.函数3.1…...

学Python的漫画漫步进阶 -- 第四步
学Python的漫画漫步进阶 -- 第四步 四、运算符4.1 算术运算符4.2 比较运算符4.3 逻辑运算符4.4 位运算符4.5 赋值运算符4.6 运算符的优先级4.7 练一练4.8 运算符的总结全部16步完成后 ,后续就是介绍项目实战,请大家给予点赞、关注! 四、运算符…...

【LeetCode-中等题】18. 四数之和
文章目录 题目方法一:双指针(定2动2) 题目 方法一:双指针(定2动2) 这题可以参考【LeetCode-中等题】15. 三数之和 区别在于,三数之和只需要用一个for循环定住一个数,然后设置两个前…...
每日一题 102二叉树的层序遍历
题目 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3],[9,20],[15,7]] 示例 2:…...

牛客: BM4 合并两个排序的链表
牛客: BM4 合并两个排序的链表 文章目录 牛客: BM4 合并两个排序的链表题目描述题解思路题解代码 题目描述 题解思路 以链表一为主链表,遍历两条链表 若当前链表二的节点val小于当前链表一的下一个节点val,则将链表链表二的该节点连到链表一的节点的下一个,链表一的当前节点往…...

C语言基础知识点(六)二维数组指针和地址
#include <stdio.h>int main() {int a[2][3] {2, 4, 6,8, 10, 12};printf("a:%p, a1:%p\n", a, a 1); // 相差3*sizeof(int)12,二维数组名是一个指向每一行的指针,a:0061FF08, a1:0061FF14prin…...
nodejs格式化输入
需求 比如我现在要格式为Axxx-xxx(xxx是数字)的格式,但是输入有可能为A1-2这种情况,就需要补零,变成A001-002 代码实现 const regex /^A(\d)\-(\d)$/; // 正则匹配桩号合法格式const match input.match(regex);if…...

国家网络安全周 | 金融日,一起 get金融行业数据安全
2023国家网络安全宣传周 热度一直在持续! 9月15日是国家网络安全宣传金融日。 目前随着国际形势愈发严峻,金融机构基础设施的全面数字化升级,带来了全新的安全问题。数据安全不单是技术问题,更是已经成为一个关系社会稳定发展的…...

分布式事务解决方案之TCC
分布式事务解决方案之TCC 什么是TCC事务 TCC是Try、Confirm、Cancel三个词语的缩写,TCC要求每个分支事务实现三个操作:预处理Try、确认 Confirm、撤销Cancel。Try操作做业务检查及资源预留,Confirm做业务确认操作,Cancel实现一个…...
Git 的基础命令 码云 gitee
就比如,我们的开发吧,我自己本地分支是dqh,远程分支也是new //我开始提交代码 //1,git add . //2,git commit -mXXX功能 //3,git pull origin new(你们现在这个版本的开发分支) //这里…...

探索工业4.0:数字孪生如何重塑工业生产流程?
在过去的几十年里,工业生产经历了从机械化、自动化到数字化的巨大转变。随着工业4.0的到来,我们正处于第四次工业革命的边缘,这次革命将由数字孪生技术引领。本文将深入探讨数字孪生在工业生产中的应用和潜力。 数字孪生(Digital …...

window server事件ID说明
重启:1074 6013:系统运行时间 6008:非正常关机或者意外关机 WindowsServer2012R2事件id6008什么意思? 在Windows Server 2012 R2中,事件ID 6008是一个系统事件,它通常表示系统的非正常关机或意外关机。当系…...

router-link 和 router-view的区别
router-link 实现路由之间的跳转 router-view(路由出口组件 -> 渲染路径匹配到的视图组件) 当你访问的地址与路由path相符时,会将指定的组件替换该router-view router-link router-link 点击实现路由跳转,to属性指向目标地址&…...
Python爬虫实战:研究feedparser库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

ServerTrust 并非唯一
NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
Web中间件--tomcat学习
Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机,它可以执行Java字节码。Java虚拟机是Java平台的一部分,Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...
uniapp 字符包含的相关方法
在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...
加密通信 + 行为分析:运营商行业安全防御体系重构
在数字经济蓬勃发展的时代,运营商作为信息通信网络的核心枢纽,承载着海量用户数据与关键业务传输,其安全防御体系的可靠性直接关乎国家安全、社会稳定与企业发展。随着网络攻击手段的不断升级,传统安全防护体系逐渐暴露出局限性&a…...

2025年- H71-Lc179--39.组合总和(回溯,组合)--Java版
1.题目描述 2.思路 当前的元素可以重复使用。 (1)确定回溯算法函数的参数和返回值(一般是void类型) (2)因为是用递归实现的,所以我们要确定终止条件 (3)单层搜索逻辑 二…...

qt+vs Generated File下的moc_和ui_文件丢失导致 error LNK2001
qt 5.9.7 vs2013 qt add-in 2.3.2 起因是添加一个新的控件类,直接把源文件拖进VS的项目里,然后VS卡住十秒,然后编译就报一堆 error LNK2001 一看项目的Generated Files下的moc_和ui_文件丢失了一部分,导致编译的时候找不到了。因…...