系统编程--gcc编译

这里写目录标题

  • gcc编译四步骤
    • 简介
    • 注意点
    • 参数
      • -I
      • -D
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录
  • 一级目录
    • 二级目录
    • 二级目录
    • 二级目录

gcc编译四步骤

简介

在这里插入图片描述
以上是gcc编译的四步骤,每个步骤生成对应的文件

注意点

1、默认情况下,使用gcc对源文件进行编译
语法:gcc 源文件名 -o 设置编译好的文件的名字
然后执行
语法:./编译好的文件的名字

2、不过不加-o 那么最后生成的可以执行的文件就是上图中的a.out

3、如果加上上图步骤中的参数,会生成该步骤之前所有的文件,因为文件生成是一层层递进的,不是独立的
例如:gcc -S
不仅仅生成了hello.s 同时还生成了hello.i

4、我们可以使用-o,对任意阶段生成的文件进行重命名,如果不重命名,那么就是上图中默认的文件名

参数

在这里插入图片描述
在这里插入图片描述
-c 生成二进制文件,也就是只完成到汇编阶段
-g 编译时添加调试语句,加上该选项后,生成的可执行文件可以进行gbd调试
-Wall 显示所有的警告信息

-I

该选项用于指定头文件的位置
一般适用于,头文件与源文件分离,分别在不同的文件,并且头文件与源文件不在同一个目录下
在这里插入图片描述
在同一个目录下的语法:
直接用gcc对源文件进行编译
gcc 源文件 -o 可执行文件重命名
在这里插入图片描述
不在同一个目录下时:
gcc 源文件名 -o 对生成的文件重命名 -I+头文件所在目录(注意精确到所在目录即可,无需精确到头文件本身)

-D

向程序注册宏定义
在这里插入图片描述
首先明确:对于上图中的程序,如果没有#define HELLO
那么HI的宏定义就不会起作用

上图是正常无错误的源文件,用紫色线标出#define HELLO
下图所用的源文件,是没有上面的那个用紫色标出的语句的

下图在编译阶段,对HELLO进行注册
就相当于上图中的#define HELLO
所以,宏定义HI起了作用

适用于当做一个开关,比如我们想要调试语句起作用,编译时就注册上那个关键的宏定义,而调试完成后,无需删除调试代码,编译时不进行关键的宏定义的注册,就相当于忽略掉了调试语句
在这里插入图片描述

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

一级目录

二级目录

二级目录

二级目录

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

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

相关文章

【java爬虫】使用element-plus进行个股详细数据分页展示

前言 前面的文章我们讲述了获取详细个股数据的方法,并且使用echarts对个股的价格走势图进行了展示,本文将编写一个页面,对个股详细数据进行展示。别问涉及到了element-plus中分页的写法,对于这部分知识将会做重点讲解。 首先看一…

强化学习:PPO

PPO简介 我们在之前的项目中介绍了基于价值的强化学习算法DQN,基于策略的强化学习算法REINFORCE,基于价值和策略的组合算法Actor-Critic. 对于基于策略分方法:参数化智能体的策略,并设计衡量策略好坏的目标函数,通过梯度上升的方法来最大化这…

python调用openai api报错self._sslobj.do_handshake()OSError: [Errno 0] Error

python调用openai api报错self._sslobj.do_handshake()OSError: [Errno 0] Error 废话不说,先上代码,根据官网的介绍写的,chatgpt3.5 api简单调用 import os from openai import OpenAI from dotenv import load_dotenv# 加载 .env 文件中的变量 load_…

三层架构概述

三层架构就是把整个软件的代码分为三个层次,分层的目的是:规范代码,大型软件需要团队配合的时候问题就来了,由于每个程序员风格不一样,而开发软件大量的代码风格不统一就会造成后期调试和维护出现问题,然而…

LeetCode刷题---有效的数独

解题思路: 该题通过哈希表(数组)计数来解决,因为矩阵是一个9*9的固定矩阵 定义二维数组rows,columns和三维度数组subboxes来对矩阵中第i行第j列数字在行、列和九宫格中出现的次数计数。 如果是一个有效的数独,那么矩阵中某个格子中的数字出现的次数在以上…

使用Redis进行搜索

文章目录 构建反向索引 构建反向索引 在Begin-End区域编写 tokenize(content) 函数,实现文本标记化的功能,具体参数与要求如下: 方法参数 content 为待标记化的文本; 文本标记的实现:使用正则表达式提取全小写化后的…

openssl 命令详解

openssl genrsa 命令产生私钥 openssl genrsa 命令是会用来生成 RSA 私有秘钥,不会生成公钥,因为公钥提取自私钥。生成时是可以指定私钥长度和密码保护。 如果需要查看公钥或生成公钥,可以使用 openssl rsa 命令。 命令语法: ope…

华为交换机入门(六):VLAN的配置

VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个广播域的通信技术。VLAN内的主机间可以直接通信,而VLAN间不能直接互通,从而将广播报文限制在一个VLAN内。 VLAN 主要用来解决如何…

案例分享:Qt多国语言输入法软键盘

若该文为原创文章,转载请注明出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/135346374 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结…

一文带你了解,AGV和AMR有哪些区别和功能

AGV(Automated Guided Vehicle)和AMR(Autonomous Mobile Robot)是两种自动化移动设备,它们在某些方面相似,但也存在一些关键区别。 1、导航技术: AGV: AGV通常使用预先定义的路径或…

【C++】浅拷贝 / 深拷贝 / 写时拷贝

文章目录 1. 经典的string类问题2. 浅拷贝3. 深拷贝3.1 传统写法的String类3.2 现代写法的String类 4. 写时拷贝 1. 经典的string类问题 上一篇博客已经对string类进行了简单的介绍,大家只要能够正常使用即可。 链接:【C】string 在面试中,面…

什么是边缘计算:最全指南

什么是边缘计算 边缘计算是一个流行语,如云、物联网和人工智能。简单地说,边缘计算带来了网络的去中心化。边缘计算是即将到来的技术增强和进步。“边缘”一词的字面含义是地球上以分布式方式提供服务的地理位置。 边缘计算是一种分布式计算系统&#…