gcc 做了些什么...

[GCC] CentOS下离线升级gcc CentOS-GCC安装 针对Centos7安装gcc,并对其进行升级。 最近的工作中,需要将测试服务器上的`gcc`升级到`8.3+`,但苦于无法连接外网,因此只能寻求离线安装的方式。在此记录一下安装过程中的收获(以下是在自己虚拟机上的操作)。 阅读详情

gcc 做了些什么...

  可能大家都习惯了之间gcc -o hello hello.c 来生成hello,现在我要来说说gcc 到底给我们做了什么。

1.  首先 gcc 会调用预处理器 cpp 来处理源程序 生成 hello.i,接着会调用编译器来生成hello.s

  接下去会条用 汇编器 as 来生成 hello.o ,最后调用连接器 ld 来生成可执行文件。

   以上就是gcc在处理一个源程序的时候流程

   hello.c-->hello.i-->hello.s-->hello.o-->hello 

 2.  不过如果你自己按照上面一步一步走,也许生成不了最后的hello,即使生成了可能也是不能执行的。因为gcc在这之中又为你做了很多,比如参数的调用,很多你可能都不知掉。不过你可以通过-v选现来打印出来。

   # gcc -v -o hello hello.c

   Using built-in specs.
Target: i486-linux-gnu
Configured with: ../src/configure -v --enable-languages=c,c++,fortran,objc,obj-c++,treelang --prefix=/usr --enable-shared --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --enable-nls --program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu --enable-libstdcxx-debug --enable-mpfr --with-tune=i686 --enable-checking=release i486-linux-gnu
Thread model: posix
gcc version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)
 /usr/lib/gcc/i486-linux-gnu/4.1.2/cc1 -quiet -v hello.c -quiet -dumpbase testobjectm.c -mtune=i686 -auxbase hello -version -o /tmp/cc6TFVwb.s
ignoring nonexistent directory "/usr/local/include/i486-linux-gnu"
ignoring nonexistent directory "/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../i486-linux-gnu/include"
ignoring nonexistent directory "/usr/include/i486-linux-gnu"
#include "..." search starts here:
#include <...> search starts here:
 /usr/local/include
 /usr/lib/gcc/i486-linux-gnu/4.1.2/include
 /usr/include
End of search list.
GNU C version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21) (i486-linux-gnu)
    compiled by GNU C version 4.1.2 20061115 (prerelease) (Debian 4.1.1-21).
GGC heuristics: --param ggc-min-expand=54 --param ggc-min-heapsize=46326
Compiler executable checksum: 60ce5af9fc7eaad04f44a3c8fd96f438
 as -V -Qy -o /tmp/ccAZpP6e.o /tmp/cc6TFVwb.s
GNU assembler version 2.17 (i486-linux-gnu) using BFD version 2.17 Debian GNU/Linux
 /usr/lib/gcc/i486-linux-gnu/4.1.2/collect2 --eh-frame-hdr -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 -o hello /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crt1.o /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crti.o /usr/lib/gcc/i486-linux-gnu/4.1.2/crtbegin.o -L/usr/lib/gcc/i486-linux-gnu/4.1.2 -L/usr/lib/gcc/i486-linux-gnu/4.1.2 -L/usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib -L/lib/../lib -L/usr/lib/../lib /tmp/ccAZpP6e.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i486-linux-gnu/4.1.2/crtend.o /usr/lib/gcc/i486-linux-gnu/4.1.2/../../../../lib/crtn.o

 大家可以看到,gcc整个过程,生成临时文件,还有最后一个  /usr/lib/gcc/i486-linux-gnu/4.1.2/collect2 

 具体用途可以看gcc文档,有一点就是它会自动寻找ld,按照一定的优先顺序。

 3. 另外说几点参数

    gcc 可以通过 -Wl,option和 -Xlinker 来给linker传递参数。比如 -Wl --warn-common ,-Xlinker -z defs


GCC,G++介绍 GCC工作流程## GCC常用参数 示例 gxy@gxy:~/Linux/lession2$ gcc test.c -E -o test.i gxy@gxy:~/Linux/lession2$ ls test.c test.i gxy@gxy:~/Linux/lession2$ gcc test.c -E -o test.i gxy@gxy:~/Linux/lession2$ ls test.c test.i gxy@gxy:~/Linux/lession2$ gcc test.i -S -o t 阅读详情

相关推荐

gcc与arm-gcc

ARM-GCC与交叉编译 三个问题: ARM-GCC是什么?它与GCC有什么关系? 编译工具链和目标程序运行相同的架构平台,就叫本地编译 编译工具链和目标程序运行在不同的架构平台,叫做交叉编译 ARM-GCC是针对arm平台的一款编译器,它是GCC编译工具链的一个分支 ARM-GCC进一步分类有哪些? 第二项:linux none 第三项:gnu:glibc eabi:应用二进制标准接口 hf:支持硬浮点平台 如何安装ARM-GCC? apt install gcc ub...

Scroll_C的博客 935

【GCC、gcc、g++】中

本文介绍了GCC编译器套件中的gcc和g++工具。

优快云_RTKLIB的博客 910

manjaro安装gcc

manjaro这玩意,没有自身带gcc,不知道是不是自己按照版本的原因,反正需要自己手动安装 两步即可完成,没必要手段去下载gcc文件自己编译 一.查询gcc pacman -Ss gcc 得到如下结果: core/gcc 10.2.0-2 (base-devel) The GNU Compiler Collection - C and C++ frontends core/gcc-ada 10.2.0-2 Ada front-end for GCC (GNAT) core/g

大鱼的博客 5761

CentOS7 升级gcc版本到gcc9

CentOS7 升级gcc版本到gcc9 CentOS7自带的GCC版本是4.8.5,如下所示: # cat /etc/redhat-release CentOS Linux release <strong>7.6.1810</strong> (Core) #which gcc #gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux

xunye的博客 1万+

NA400与昆仑通态MODBUS/TCP通讯调试说明

点击增加设备通道,弹出窗口进行设置,通道类型选择“0区输出继电器”,通道地址为1,通道个数为1,读写方式为读写。点击增加设备通道,弹出窗口进行设置,通道类型选择“4区输出寄存器”,数据类型选择“16位 无符号二进制”,通道地址为21001,通道个数为1,读写方式为读写。5.添加设备通道:双击莫迪康MODBUSTCP子设备,点击添加设备通道,根据Modbus规约地址表进行参数的设置,表格可在NAPro软件帮助中查看,如下图所示。然后可以在设备通道调试数据中观察到Q1的值为1,NW1的值678,表示通讯成功。

weixin_44281509的博客 2492

用STM32定时器PWM高级功能驱动步进电机:F103C8T6+TB6600实战教程

本文详细介绍了如何利用STM32F103C8T6微控制器的定时器PWM高级功能驱动TB6600步进电机驱动器,实现高效、灵活的运动控制方案。通过硬件配置、PWM参数计算、运动控制算法及TB6600高级功能应用的全面解析,为工业自动化和精密控制领域提供了实用的技术参考。

game4的博客 186

GCC,gcc,g++关系

GCC,gcc,g++关系 GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言译器。GNU编译器套件包括C、C++、 Objective-C、 Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等。) 即当下的 GCC 编译器还支持编译 Go、Objective-C,Objective-C ++,Fortran, Java,Ada,D 和 BRIG(HSAIL)等程序, gcc是GCC中的GUN C C

jokerMingge的博客 759

万物皆可GAN ---普通GAN, pix2pix, CycleGAN和pix2pixHD的比较以及演变过程

普通GAN, pix2pix, CycleGAN和pix2pixHD的原理、比较以及演变过程

m0_61985580的博客 3724

linux下gcc和gcc-c++的作用

linux 为什么要安装gcc和gcc-c++(又叫做g++) gcc-c++(又叫做g++)是为gcc提供c++语言特性支持的 linux上的gcc是Gnu的C语言编译器,至于C++编译器,它的名字叫做g++。 linux中的gcc是由GNU推出的一款功能强大的、性能优越的多平台编译器。gcc编译器能将C、C++语言源程序和目标程序编译、连接成可执行文件。 GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object

hualinger的博客 3518

国密(3)- 预主密钥/主密钥计算和Finished消息的加解密

国密的ECC-SM3-SM4-CBC模式下的预主密钥和主密钥的生成过程介绍,以及Finished消息的加解密介绍

weixin_43408952的博客 6512

Google OR-Tools的CP-SAT求解器,为什么比传统线性规划更适合你的组合优化问题?

本文深入解析Google OR-Tools中的CP-SAT求解器为何比传统线性规划更适合解决组合优化问题。CP-SAT融合约束规划与可满足性理论,原生支持复杂逻辑约束和离散决策,在物流、生产调度等领域展现出显著优势。通过技术对比和实战案例,展示CP-SAT在处理高组合复杂度问题时的卓越性能。

weixin_28700593的博客 926

gcc的基本用法

目录 一、GCC 二、GCC、gcc、g++三者关系 三、gcc编译过程 四、文件类型 五、gcc编译选项 一、GCC GCC(GNU Compiler Collection)即GNU编译器套件,属于一种编程语言编译器,其原名为GCC(GNU C Compiler)即GNU c语言编译器,虽然缩写一样但是功能上区别很大。GCC的初衷是为GNU操作系统专门编写的一款编译器,原本的GNU...

hurryddd 4659

【深度学习】脸部修复,CodeFormer,论文,实战

Blind face restoration是一个高度 ill-posed 的问题,通常需要辅助引导来 1) 改善从降级输入到期望输出的映射,或者 2) 补充在输入中丢失的高质量细节。在本文中,我们展示了在一个小的代理空间中学到的离散码本先验可以通过将盲目的面部恢复建模为 a code prediction task来大大减少恢复映射的不确定性和模糊性,同时为生成高质量面部提供丰富的视觉元素。

q742971636的博客 2995

GCC 详解

[root@bogon ~]# gcc -xc demo.c #或者直接运行 gcc demo.c [root@bogon ~]#

BIG SHARK的博客 3010

37、基于铁电场效应晶体管(FeFET)的片上深度神经网络(DNN)直接反馈对齐训练

本文提出了一种基于铁电场效应晶体管(FeFET)的深度神经网络(DNN)训练加速器架构,结合直接反馈对齐(DFA)算法和FeFET的独特物理特性,以解决当前DNN训练中反向传播(BP)算法带来的高计算开销、复杂数据依赖和高能耗问题。通过设计基于FeFET的MVM引擎、低功耗ADC和随机数生成器(RNG),该架构在速度和功率效率方面相比现有基于ReRAM的加速器分别提升了1.3倍和2.5倍。研究为未来高效能AI训练硬件的发展提供了新的思路和实现路径。

wine的专栏 164

UG NX二次开发-博客文章速览

写了一些UG NX二次开发的心得体会,内容较多,感觉不好查找相应的内容,所以决心把导航写出来,方便自己也方便读者。主专栏是“”,C#专栏为 : “” ,Python专栏为 : “这三个专栏都会持续的更新。如果有需要咨询或者学习讨论的,请私信博主或者加QQ群:749492565。博主几乎每天都在。

GimiGimmy 3717

GCC是什么? gcc与g++的区别 具体编译细节

GCC是什么?gcc与g++的区别?

偶尔想看云飞的博客 1万+

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

GCC、gcc、g++三者有什么区别呢?

问题描述:GCC、gcc、g++三者有什么区别呢?GCC是工具集,包含了编译器、链接器、组装器。gcc处理c语言和c++,不会自动链接库。g++处理c++,会自动链接库。

weixin_43501408的博客 848

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

WINDOWS下如何安装GCC

WINDOWS下如何安装GCC? 2013/09/14 JULUREN 第一章 在视窗操作系统下的GCC 第一节 GCC家族概览 GCC 是一个原本用于 Unix-like 系统下编程的编译器。不过,现在 GCC 也有了许多 Win32 下的移植版本。所以,也许对于许多 Windows 开发者来说, GCC 还是一个比较陌生的东西。所以,我希望通过这章的叙述

yunxian_19的专栏 2万+

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

GCC学习总结

GCC(GNU Compiler Collection,GNU编译器套件)是GNU项目的一部分,是一个广泛使用的开源编译器套件,支持多种编程语言和处理器架构。GCC最初是为了编译C语言而开发的,但现在已经成为一个多语言编译器,支持多种编程语言,包括C、C++、Objective-C、Fortran、Ada、Go、D等多种语言。GCC包含以下主要组件:前端(Frontend):负责处理源代码,将源代码转换为中间表示(Intermediate Representation,IR)。不同的编程语言有不同的前端。

studyingdda的博客 4357

什么是gcc

啥是gcc Linux系统下的GCC(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。 GCC编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的...

weixin_45380951的博客 1474

Windows中使用GCC介绍

Windows中使用GCC介绍。注意,GCC与gcc,g++是不同的东西: GCC:GNU Compiler Collection(GUN 编译器集合),它可以编译C、C++、JAV、Fortran、Pascal、Object-C、Ada等语言。 gcc是GCC中的GUN C Compiler(C 编译器)。 g++是GCC中的GUN C++ Compiler(C++编译器)。.....................

cnds123的专栏 1万+

GCC、g++、gcc的关系

GCC:GNU Compiler Collection(GUN 编译器集合) 编译器集合! 所以GCC这个中有许多语言的编译器 比如C、C++ Pascal等 gcc的全称 GUN C Compiler(GUN中的C 编译器) 编译C语言用的 g++的全称 GUN C++ Compiler(GUM中的C++编译器) 编译C++用的

Jaylan的博客 710

GCC是什么

本文简要介绍GCC是什么

cnds123的专栏 7787

GCC 简介

GCC(GNU Compiler Collection)是一套由 GNU 开发的编程语言编译器,它支持多种编程语言,包括 C、C++、Objective-C、Fortran、Ada 和 Go 等。GCC 是一个开源的工具集,可在多个平台上运行,支持多种操作系统和架构。它是许多操作系统的默认编译器,也是许多开源项目的首选编译工具。GCC 的编译过程可以分为四个主要阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembling)和链接(Linking)。

陈辰学长的博客 2334

GCC的gcc和g++区别

http://www.cnblogs.com/samewang/p/4774180.html GCC的gcc和g++区别 看的Linux公社的一篇文章,觉得不错,内容复制过来了。 其实在这之前,我一直以为gcc和g++是一个东西,只是有两个不同的名字而已,今天在linux下编译一个c代码时出现了错误才找了一下gcc和g++的区别。 先描述一下今天遇到的错误: 因为以前写程序的时候,写的都是cpp文...

guochande007的博客 229
上一篇: ld script 脚本浅析
下一篇: ld script
da895
博客等级 码龄18年 34粉丝 24原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值