【Linux学习笔记】gcc编译单个文件
来源:互联网 发布:无法进入linux系统 编辑:程序博客网 时间:2024/05/22 07:50
编译程序的基本知识
GCC编译器对程序的编译如图所示,分为四个阶段:预编译,编译和优化,汇编和链接。源文件:存放可编辑代码的文件,如存放C,C++和汇编语言的文件。
目标文件:经过编译器编译生成的CPU可识别的二进制代码,但是目标文件一般不能执行,因为其中有一些函数过程没有相关的指示和说明。
可执行文件:目标文件与相关的库链接后的文件它是可以执行的。预编译过程将程序引用的头文件包含进源代码中,并对一些宏进行替换。
编译过程将用户可识别的语言翻译成一组处理器可识别的操作码,生成目标文件,通常翻译成汇编语言,而汇编语言和机器操作码之间是一种一对一的关系。
所有目标文件必须用某种方式组合起来才能运行,这就是链接的作用。目标文件中通长仅解析了文件内部的变量和函数,对于引用的函数和变量还没有解析,这需要将已编写好的目标文件引用进来,将没有解析的变量和函数进行解析,通常引用的目标是库。链接完成后会生成可执行文件。单个文件编译成可执行文件
在Linux下用GCC编译单个文件直接使用gcc命令后面加上要编译的C语言源文件,GCC会自动生成文件名为a.out的可执行文件。
下面是一个程序的源代码
/*hello.c*/#include<stdio.h>int main(){ printf("hello world\n"); return 0;}
将代码存入hello.c文件中,运行如下命令将代码编译成可执行文件。
$gcc hello.c
使用上述命令编译时,GCC先进行扩展名判断,选择编译器。由于hello.c扩展名为.c,所以选择gcc编译器进行编译。
GCC将采用默认步骤,先将C文件编译成目标文件,然后将目标文件连接成可执行文件,最后删除目标文件。上述命令没有指定生成可执行文件的名称,所以生成磨人的文件名a.out。运行结果如下:
$./a.out (执行可执行文件a.out)hello world
可使用-o选项使编译程序生成指定文件名,例如生成一个叫做test的可执行文件:
$gcc -o test hello.c
3.编译生成生成目标文件
GCC的-c选项用于生成目标文件,默认情况下生成的目标文件与源文件名称一样,只是扩展名为.o。例如下面的命令会生成名为hello.o的目标文件:
$gcc -c hello.c
如果需要指定生成的文件名,可以使用-o选项。
$gcc -c -o test.o hello.c
可以一条命令编译多个源文件,生成目标文件。通常用于编写库文件或者项目中包含多个源文件时。
$gcc -c file1.c file2.c file3.c
- 【Linux学习笔记】gcc编译单个文件
- linux学习笔记2: linux中如何用gcc编译用vi写的c文件
- Linux 学习笔记之Makefile单个c文件的编写
- Linux下编译单个C文件
- Linux - gcc 学习笔记
- linux笔记--2 -- gcc编译
- Linux gcc 多文件编译
- Linux学习笔记——例说makefile 单个C文件
- Linux学习笔记——例说makefile 单个C文件
- arm-linux-gcc学习笔记
- arm-linux-gcc学习笔记
- Vs2012在Linux开发中的应用(11): 编译单个文件
- linux下gcc 编译c++文件
- linux下gcc-多文件编译
- 【Linux学习笔记八】Linux编程-编译(gcc)与调试(gdb)
- C++学习笔记--GCC编译过程
- 嵌入式学习笔记之gcc编译
- GCC学习笔记(一)--编译流程
- struts2_请求路径_namespace_result测试
- Spring + SpringMVC + Mybatis (SSM)基于Maven管理工具搭建企业项目
- 【Python学习】截图当前电脑并发送到qq邮箱
- Java数组排序方法
- PHP 自己写的位图函数库
- 【Linux学习笔记】gcc编译单个文件
- PHPExcel类导出excel表格
- Spring SpringMVC Mybatis(SSM+Oracle整合)
- vb.net 教程 1-10 List 之1
- Markdown的代码设置
- tomcat的启动内存参数设置,2017年再调整一下
- 判断二叉查找树(面试题)
- zoj 2301 || hdu 1199 Color the Ball 线段树 离散化
- 优先队列详解