Linux下gcc命令详解
GCC 原名为 GNU C 语言编译器(GNU C Compiler),因为它原本只能处理C语言。GCC 很快地扩展,变得可处理 C++。后来又扩展为能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。
gcc命令下各选项的含义
- -E:仅作预处理,不进行编译、汇编和链接
- -S:仅编译到汇编语言,不进行汇编和链接
- -c:编译、汇编到目标代码(也就是计算机可识别的二进制)
- -o:执行命令后文件的命名
- -g:生成调试信息
- -w:不生成任何警告
- -Wall:生成所有的警告
gcc编译的四个步骤
- 预处理:gcc -E Test.c -o Test.i
- 编译: gcc -S Test.i -o Test.s
- 汇编: gcc -c Test.s -o Test.o
- 链接生成可执行文件: gcc Test.o -o Test
简单程序的编译过程
1. 先创建一个Test.c文件
2.逐步编译
①预处理:
此时我们发现目录中已经出现了我们创建的Test.i文件,不妨cat进去看一下里面都有什么吧:
由此我们发现:gcc的-E选项,可以让编译器在预处理后停止,并输出预处理结果。
在此程序中中,预处理结果就是将stdio.h 文件中的内容插入到Test.c中了。
②编译:
gcc的-S选项,表示在程序编译期间,将我们的代码编译成汇编语言。
③汇编:
gcc的-c选项,表示由汇编器负责将刚才的.s文件编译为目标文件,即计算机所能识别的序列。
④链接生成可执行文件:
将刚才的Test.o文件与C标准输入输出库进行连接,最终生成程序Test可执行文件。
3.运行程序
这里我们就完成了从最开始的代码,到最终可执行文件的整个过程。
Linux下gcc命令详解相关推荐
- linux下dd命令详解
linux下dd命令详解 名称: dd 使用权限: 所有使用者dd 这个指令在 manual 里的定义是 convert and copy a file 使用方式: dd [option] 如果 ...
- linux下scp命令详解
http://www.cnblogs.com/xuxm2007/archive/2010/08/04/1792179.html linux下scp命令详解 http://www.9usb.net/20 ...
- linux下tree命令详解
From:http://blog.163.com/ly_89/blog/static/186902299201161302812880/ linux下tree命令详解---linux以树状图逐级列出目 ...
- Linux下top命令详解
Linux下top命令详解 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top是一个动态显示过程,即可以通过用户按键来不断刷 ...
- linux系统rar命令行,Linux下rar命令详解
Linux下rar命令详解 发布时间:2010-05-24 23:28:23 作者:佚名 我要评论 通常rar命令由一个主命令加若干选项(可选)构成,操作文档为操作施加的.rar文件对象,文件 ...
- linux cat命令缩写,linux下cat命令详解
cat 能够一同显现多个文件的内容,比方咱们能够在一个cat指令上一同显现两个文件的内容;那么你知道linux下cat命令详解么?接下来是小编为大家收集的linux下cat命令详解,欢迎大家阅读: l ...
- linux中的ps fx命令,Linux下ps命令详解 Linux下ps命令的详细使用方法
Linux下ps命令详解 1. 运行(正在运行或在运行队列中等待) 2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断 ...
- linux 命令xargs,Linux下xargs命令详解
Linux下xargs命令详解 1. 简介 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如: find /sbin -pe ...
- linux中top指令,Linux下top命令详解
原标题:Linux下top命令详解 1.简介 top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器.top显示系统当前的进程和其他状况 ...
最新文章
- 中科创达孙力:不迷信 AI 算法,智能视觉如何转型升级?
- linux手动安装rsync_Linux服务器之间文件如何实现实时同步传输
- 基于Boost::beast模块的同步WebSocket服务器
- 前端学习(1903)vue之电商管理系统电商系统之调用api添加用户
- 【AD用户设置系列一】让IT省心省力的漫游配置文件
- 【算法】剑指 Offer 18. 删除链表的节点
- 创建二叉树的代码_解二叉树的右视图的两种方式
- 下面不是android四大组件之一的是,Android四大组件之一 Service
- html video播放rmvb,HTML如何播放rmvb格式的视频??要可以播放的代码。。。。
- exsi 安装ipmi_在vSphere中为不同服务器配置IPMI功能
- 计算机网络之网络层- IPv4编址
- java基础学习_集合类04_Map接口、Collections工具类_day18总结
- 来,带你认识几种最流行的Python编辑器的IDEs
- 可信启动、安全启动:SGX、TrustZone、SecureEnclave
- RFID读写器的组成
- 画环形或者蚊香线圈的软件介绍以及使用笔记
- Ducky Debugging(字符串输入)题解
- java手动/按模板生成word与excel
- 游戏外包开发技术难点分析
- 敏捷项目管理与传统项目管理有什么区别?
热门文章
- jsp042ssm宠物狗猫咪交流网站
- RecyclerView+网络加载数据图片+属性动画对角平移透明
- 亚马逊POA计划怎么写
- js 根据秒数获取多少小时,多少分钟,多少秒
- 招才猫显示服务器开小差,梦幻西游:百区平转开启却抢不到服务器?教你几招助你顺利转区...
- python大牛_成为Python大牛必须要掌握的高端语法——yield
- WebService soap报文请求与响应报文解析
- 使用simhash进行海量文章数据相似度去重
- [JZOJ5952] 凯旋而归 ([BZOJ 5092]【Lydsy1711月赛】分割序列)【高维前缀和】【DP】
- 2015年西北工业大学机试第八题