上节《GCC编译C语言程序完整演示》讲解的是通过gcc命令一次性完成编译和链接的整个过程,这样最方便,大家在学习C语言的过程中一般都这么做。实际上,gcc命令也可以将编译和链接分开,每次只完成一项任务。

本节将涉及到C语言程序的生成原理,如果你不了解,请转到《C语言入门教程》学习。

本节以下面的C语言代码为例进行演示:

#include int main() { puts("C语言中文网"); return 0; }

1) 编译(Compile)

将源文件编译成目标文件需要使用-c选项,例如:

gcc -c main.c

就将 main.c 编译为 main.o。打开 demo 目录,就会看到 main.o:

对于微软编译器(内嵌在 Visual C++ 或者 Visual Studio 中),目标文件的后缀为.obj;对于 GCC 编译器,目标文件的后缀为.o。

一个源文件会生成一个目标文件,多个源文件会生成多个目标文件,源文件数目和目标文件数目是一样的。通常情况下,默认的目标文件名字和源文件名字是一样的。

如果希望自定义目标文件的名字,那么可以使用-o选项,例如:

gcc -c main.c -o a.o

这样生成的目标文件的名字就是 a.o。

2) 链接(Link)

在gcc命令后面紧跟目标文件的名字,就可以将目标文件链接成为可执行文件,例如:

gcc main.o

就将 main.o 链接为 a.out。打开 demo 目录,就会看到 a.out。

在gcc命令后面紧跟源文件名字或者目标文件名字都是可以的,gcc命令能够自动识别到底是源文件还是目标文件:如果是源文件,那么要经过编译和链接两个步骤才能生成可执行文件;如果是目标文件,只需要链接就可以了。

使用-o选项仍然能够自定义可执行文件的名字,例如:

gcc main.o -o main.out

这样生成的可执行文件的名字就是 main.out。

下面是一个完整的演示:

$ cd demo

$ gcc -c main.c

$ gcc main.o

$ ./a.out

C语言中文网

$

在控制台上的真实效果为:

gcc编译c语言多线程程序的步骤,GCC分步骤编译C语言程序相关推荐

  1. covariance matrix r语言_时间序列分析|ARIMAX模型分步骤详解和R中实践

    这是关于时间序列的第N篇文章,本文将介绍ARIMAX模型,简单来说就是在ARIMA的基础上增加一个外生变量.ARIMAX和ARIMA相比在理论上没有太多新的内容,所以本文直接介绍在R里怎么一步一步跑A ...

  2. Linux下C语言程序编写及执行和分步骤编译链接C源代码

    实验一:Linux下C语言程序编写及执行 //hello.c #include <stdio.h> int main(){int x = 1;int y = 2;int sum = x + ...

  3. GCC 编译 C++ 程序分步骤流程(预处理 gcc -E、编译 gcc -S、汇编 gcc -c 和链接 gcc 以及 gcc -o 选项)

    C 或者 C++ 程序从源代码生成可执行程序的过程,需经历 4 个过程,分别是预处理.编译.汇编和链接. 同样,使用 GCC 编译器编译 C 或者 C++ 程序,也必须要经历这 4 个过程.但考虑在实 ...

  4. 01-2.C(C程序编译步骤-gcc 编译过程)

    c代码编译成可执行程序4步: 1.预处理:宏定义展开,头文件展开,条件编译,同时将代码中的注释删除,这里并不会检查语法 gcc -E hello.c -o hello.i 2.编译:检查语法,将预处理 ...

  5. c语言编译四个步骤,gcc编译的四个步骤

    以最简单的hello.c为例子 一步到位:gcc hello.c 这条命令隐含执行了 (1)预处理 (2)编译 (3)汇编 (4)链接 这里未指定输出文件,默认输出为a.out gcc编译C源码有四个 ...

  6. Linux的C语言开发工具——通过进度条小程序学习使用gcc、gdb和make/Makefile工具

    C语言实现进度条程序--gcc.gdb和make工具的使用 一.Linux下的进度条程序实现 二.Linux编译器-gcc 2.1 预处理(进行宏替换) 2.2 编译(生成汇编) 2.3 汇编(生成机 ...

  7. 简单说明c语言程序步骤,C语言的入门简介和三个简单的C语言程序详细说明

    学习一种编程语言,最重要的是建立一个练习环境,边学边练才能学好.Keil软件是目前最流行开发80C51系列单片机的软件,Keil提供了包括C编译器.宏汇编.连接器.库管理和一个功能强大的仿真调试器等在 ...

  8. c语言编程软件平板_想在ipad上进行C语言程序编写,请问有没有编译的APP

    app store 里搜索 C++ Programming Languageapp store 里搜索 C++ Programming Language 本回答被提问者采纳 app store 里搜索 ...

  9. 单片机DPTR(DPH,DPL)和SP特殊寄存器C语言中应用?这三个特殊寄存器对C程序员来说是透明的,不用C程序员操作,编译的时候会自动运用这三个寄存器ACC寄存器和B寄存器也类似

    单片机DPTR(DPH,DPL)和SP特殊寄存器C语言中应用?这三个特殊寄存器对C程序员来说是透明的,不用C程序员操作,编译的时候会自动运用这三个寄存器,ACC寄存器和B寄存器也类似 编译器把C译成指 ...

  10. linux用gcc编译完怎么运行,linux下使用gcc编译运行C/C++程序

    编译C 首先,程序编译过程有: 1.预处理(展开宏,头文件,检查代码是否有误) 2.编译(将.c转为汇编代码.s) 3.汇编(将汇编代码.s转为机器代码.o) 4.链接(将所有机器代码.o和库文件链接 ...

最新文章

  1. springboot创建parent_Springboot 框架整理,建议做开发的都看看,整理的比较详细!...
  2. linux mint(Ubuntu、Debian) 18修改环境变量
  3. python图片内容长度识别_教你如何用几行Python代码识别图片文字--就是这么简单!...
  4. linux 专家认证,ONAP专家认证 (COP)
  5. Boost:人口 bimap的测试程序
  6. java 中通过 Lettuce 来操作 Redis
  7. 简单实用的PS亮度蒙版工具:Lumenzia Mac版
  8. 二开的精美UI站长源码分享论坛网站源码 可切换皮肤界面
  9. OpenSIPS替代VOS3000的方案
  10. Shell 条件表达式的正则匹配
  11. 导盲机器人 英语作文_小米有品推学习平板:小爱AI陪娃学英语,一台陪娃十年成长...
  12. 算法笔记_什么是数据结构_向量vector
  13. Java自学免费视频教程
  14. DLNA的使用-天翼高清电视机顶盒镜像投屏
  15. 屏幕小于6英寸的手机_这3款手机屏幕小于6英寸,单手操控没压力
  16. win10设置linux虚拟网卡,win10系统安装虚拟网卡的详细步骤
  17. 比湿,相对湿度和绝对湿度
  18. python unpack_python struct中pack和unpack
  19. 一款自制calendar插件
  20. 概率论与数理统计-----随机试验与随机事件、样本空间、事件集合表示

热门文章

  1. 如何评价刘同新书《我在未来等你》?
  2. 孙宏斌称不会继续投资乐视;微信否认屏蔽抖音;扎克伯格向英国用户道歉丨价值早报
  3. 2014百度联盟峰会:预计分成70亿,技术创新引领产业变革
  4. Redis序列化方式
  5. 命令式编程与函数式编程
  6. 理解马哲的辩证法和认识论
  7. 《牧马城市》——我们的城市
  8. 编程时格式化打印占位符%v%s%t%T%d的含义
  9. 多个CAN节点收发异常,TVS结电容在高速电路中的影响
  10. Activity的初级,中级,高级问法,android开发艺术探索电子