编译c程序时 gcc编译器
来源:互联网 发布:俄罗斯高加索知乎 编辑:程序博客网 时间:2024/06/05 00:59
编译器的作用 -- 把C语言 生成可执行的二进制文件
编译器所做的事情如下:
源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)
在shell窗口 我们只要执行 命令 gcc a.c -o a 就能生成main的可执行文件
gcc 编译器所做的事情
gcc a.c -o a.i -E -E Stop after the preprocessing stage; 在预编译结束后就停止
gcc a.i -o a.s -S -S Stop after the stage of compilation proper; 在适当的阶段停止编译!该阶段会把c程序转换成汇编文件
gcc a.s -o a.o -c -c Compile or assemble the source files, but do not link. 编译或组装这个源程序,但是不链接,这个文件也称之为可从定位二进制文件,obj文件
gcc a.o -o a -lc 给目标文件链接上标准c库,因为c库在系统环境变量里,所以直接这样链接就可以了。如果不写的话,gcc编译器也会自己去环境变量里找的。
这个文档里有些东西写的很好:关于编译器跟程序运行的 点击打开链接
用vim 查看二进制文件
#vim -b a
:%!xxd 十六进制查看
gcc编译器还有一个优化级别之说
比如
gcc a.c -o a -O0 所谓优化等级越高,优化的细节越多,编译的速度越慢,程序执行的效率越高,调试越困难
gcc a.c -o a -O2
编译器内部会对这些c变量进行解析,从而生成相对于的机器码.感觉这个是很庞大的东西,应该原理就跟数电里的译码器,编辑器相类似吧。
其他关于gcc的信息就要去man gcc了 看了下基本还能看懂,希望英语跟我差不多的同学也跟我一样坚持
- 编译c程序时 gcc编译器
- gcc编译器编译c++程序
- 通过GCC编译器编译c语言
- Gcc编译C/C++程序
- linux gcc编译C程序
- gcc编译c语言程序
- linux gcc编译C程序
- linux gcc编译C程序
- GCC编译器编译过程
- gcc编译器编译
- 在Windows中使用Cygwin环境下的gcc编译器编译【电脑教程网】Informix ESQ/C程序
- 抽取VS文件组成类GCC的编译器,并编译C程序为dll动态链接库
- 【c语言基础必备】gcc编译器的简单编译
- GCC编译c程序的工作过程
- linux下GCC编译C程序
- linux下gcc编译c程序
- gcc编译C程序出现段错误
- gcc编译c程序出现“__gxx_personality_v0”
- 第十三周项目四 数组的排序(对字符数组进行冒泡排序)
- 数据库课程设计——宾馆管理系统UML序列图
- Lucene中的分词器
- Terminal快捷键
- android 注意小技巧(持续更新)
- 编译c程序时 gcc编译器
- JavaWeb:报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path
- 在Myeclipse buildpath 加server lib (server runtime)
- 转载 X264代码解析
- 配置Hadoop单机模式并运行Wordcount
- linux configure参数
- QT 5.3.2 + VC2012 中文乱码 完美解决方案
- 思想+行动= 创造力
- 第十三周项目四 数组的排序(选择排序按降序排列)