GCC学习

2023-11-10

GCC的学习
(图片来源于牛客项目课程)
图片来源于牛客
备注:
1、默认Ubuntu 没有安装GCC (安装需要一定时间)
2、gcc编译c文件,g++编译c++文件
3、ctrl+l 清空命令行

gcc 介绍
优点: 跨平台(支持 多软件平台和硬件平台)
软件平台支持 windows linux Android
硬件平台支持 arm x86 sh4 mips …
visual studio 只支持windows平台

gcc hello.c —> 生成a.out可执行文件
gcc hello.c -o hello -o 指定生成文件名称 hello
./hello 执行hello
*
编译过程
gcc 在生成一个可执行文件过程中,要做四步处理

  1. 预处理 (将.c 程序变成 .i的与处理文件)
    gcc hello.c -E -o hello.i
    第一步: 将 头文件 copy到源文件中
    第二步: 会将注释删除掉
    第三步: 将 宏定义 用宏值替换宏名
    #include <stdio.h>
    //create by yangwengang
    //2021.11.11
    #define MAX 100
    int main()
    {
    int a = MAX;
    //this is printf fun
    printf(“hello world\n”);
    printf(“MAX is %d\n”, MAX);
    }
    /usr/include/stdio.h

  2. 编译 (将c代码 变成汇编源代码)
    gcc -S hello.c -o hello.s
    cat hello.s //cat 可以查看文本文件

  3. 汇编 (将汇编代码变成 .o 目标文件) hello.o 中是机器码
    gcc -c hello.c -o hello.o

  4. 链接 (将多个.o 文件 和 库文件 放在一起生成一个可执行文件)
    gcc hello.c -o hello
    在这里插入图片描述在这里插入图片描述
    在这里插入图片描述

如果直接gcc hello.c -S 直接跳过了-E(顺便完成了预处理,进行编译指定源文件)
同理 直接gcc hell.c (直接把四个步骤全部做了)

默认情况gcc代码检查不是很严格的,有些警告不显示
如果想显示警告
-Wall 显示所有警告, 建议加-Wall
-w 忽略所有警告, 建议不加此选项

gcc -O (性能、反汇编 等)
数越大 优化级别越高,linux程序员一般使用 -O2 会对程序在时间效率和空间效率上进行优化
gcc-O0 不优化
gcc -O1 hello.c -o hello1 //-O1 1级优化
gcc -O2 hello.c -o hello2 //-O2 2级优化
gcc -O3 hello.c -o hello3 //-O3 3级优化

gcc和g++的区别:
在这里插入图片描述
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GCC学习 的相关文章

随机推荐

  • 2023华为OD机试真题【恢复数字序列】

    题目内容 对于一个连续正整数组成的序列 可以将其拼接成一个字符串 再将字符串里的部分字符打乱顺序 如序列8 9 10 11 12 拼接成的字符串为89101112 打乱一部分字符后得到90811211 原来的正整数10就被拆成了0和1 现给
  • 程序员Linux学到什么程度,Linux学到什么程度,才可以找到合适的工作?

    首先我说一下我的学习路线吧 我是学习java出生的 懂编程的人都知道 一般我们程序员用开发系统 大多数都是在linux系统上开发的 在最开始的时候把我哥给了我一本书 我名字就叫鸟哥的私房菜 这本书非常不错 非常适合刚入门的新手看学习 里面讲
  • python中定时执行脚本

    python中定时执行脚本 引入time os sched 这三个是必备的 import time os sched def ll num print 123123456 with open tt txt ab as txt txt wri
  • Spring Cloud Edgware新特性之九:Sleuth使用MQ方式整合Zipkin

    原文 http www itmuch com spring cloud edgware new sleuth zipkin mq 众所周知 Spring Cloud Sleuth有两种方式整合Zipkin HTTP直连Zipkin方式 MQ
  • 微众银行蝉联入选《福布斯》全球区块链50强

    美东时间2023年2月7日 福布斯 杂志公布2023年全球区块链50强榜单 微众银行蝉联入选 微众银行因联合多方共建开源联盟链生态圈 以及基于DDTP Distributed Data Transfer Protocol 分布式数据传输协议
  • 腾讯云存储上传头像、文件功能(超详细保姆级)

    创建腾讯云 并实名认证 地址 申请腾讯云账号 腾讯云 产业智变 云启未来 腾讯 在官网搜索对象存储 点击立即使用 创建存储桶 无脑下一步 唯一注意点就是可以选择共有读写 以及取一个存储桶的名称 查看存储桶列表 点击进某个存储桶后 可以上传文
  • 【Qt Quick】用Qt编辑器书写C++项目、解决输出中文问题

    系统 Win10 IDE Qt 1 简介 我想直接用qt的编辑器写c 的项目 不再重新下载vs2019等 2 创建项目 创建好以后 默认会有如下代码 include
  • JDK源码汇总

    JDK源码汇总 持续更新中 Appendable
  • 关于Android中的api、implementation、compile理解

    1 compile在3 0及以上的gradle版本已弃用 2 api可以完全代替compile 利用api导入的包可以被下级引用 3 implementation只是编译时引用 并不把引入的包打包进项目 4 java library项目依然
  • 操作系统真象还原实验记录之实验十五:多线程调度

    操作系统真象还原实验记录之实验十五 多线程调度 对应书P428 9 4节 1 相关基础知识 2 实验记录 2 1 实验流程 上次实验中 实现了一个线程的运行 具体是 1 申请了一页物理页作为PCB 2 init thread填写了位于PCB
  • 攻防世界--MISC题之坚持60s

    问题描述 难度系数 四颗星 题目来源 08067CTF 题目描述 菜狗发现最近菜猫不爱理他 反而迷上了菜鸡 题目场景 暂无 题目附件 附件1 题目分析 文件是一个jar文件 于是就想到了java 其实 在我看来 它就是一个压缩包 所以 大致
  • ROS 学习笔记(一)

    前言 最近在学习ros 为毕设作准备 和师兄交流过 想了想还是先把A 的路径规划给做完 然后在去做动态无限充电的实验好了 目前学习的视频还是经典中的经典 古月ros21讲 这个看完之后再去看师兄推荐的文章 vscode开发ROS1 3 创建
  • 【板子】 0-1背包问题 一维数组

    0 1背包问题 有 N 件物品和一个容量是 V 的背包 每件物品只能使用一次 第 i 件物品的体积是 vi 价值是 wi 求解将哪些物品装入背包 可使这些物品的总体积不超过背包容量 且总价值最大 输出最大价值 输入格式 第一行两个整数 N
  • C语言之生肖、年龄、星座查询

    程序实现输入年月日 输出星座生肖年龄 代码实现 include
  • chatgpt赋能python:Python如何随机生成26个字母

    Python如何随机生成26个字母 Python是一种流行的编程语言 被广泛用于数据分析 人工智能和Web开发等领域 Python中有很多库可以用于随机生成字符 包括Python内置的random库和第三方库string 在本文中 我们将介
  • GetCurrentDirectory和SetCurrentDirectory

    GetCurrentDirectory和SetCurrentDirectory是获取和设置的线程的当前工作路径 而不是线程所在路径 下面的代码是源文件所在路径下有一个文件为write txt 而上一级路径下没有这个文件 来说明这两个函数的功
  • 获取宝塔Linux面板登陆地址账号和密码

    在ssh终端输入 etc init d bt default
  • vs中出现bug error C1083:无法打开文件

    被自己的愚蠢惊呆了 这个bug是我自己手动造成的 编译的时候出现下面的情况 解决办法 找到项目 属性 C C 常规 然后就是直接 加上这句 GeneratedFiles 如图 成功解决这个问题
  • c++代码的编译

    1 gcc和g 1 1搞清楚几个名字 GCC GNU Compiler Collection GUN编译套件 可以编译c c java objective c Fortran等语言 gcc GCC中的 GUN C Compiler C 编译
  • GCC学习

    GCC的学习 图片来源于牛客项目课程 备注 1 默认Ubuntu 没有安装GCC 安装需要一定时间 2 gcc编译c文件 g 编译c 文件 3 ctrl l 清空命令行 gcc 介绍 优点 跨平台 支持 多软件平台和硬件平台 软件平台支持