上节《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. 在Ubuntu 16.04.6 LTS上升级python 3.5到3.7.3实录
  2. Opencv-Python学习笔记五
  3. 车联网行业No.1元征科技的云端架构实现
  4. java 数据库字段_JAVA如何获得数据库的字段及字段类型
  5. IE8开发人员工具资料
  6. Java工作笔记-Spring Boot封装Jedis实例
  7. event.keyCode列表
  8. 循环 Request.ServerVariables
  9. 【OJ8756】砝码称重V2,可达性多重背包
  10. 机器学习/人工智能 知识图谱
  11. 频率法:数组排序的另一种思路
  12. 邮箱服务器退回,发出去的邮件为什么被退回?
  13. Linux进程管理工具 Supervisor详解
  14. 原型模式(Prototype)C++实现
  15. 【我的Android进阶之旅】Realm数据库学习资料汇总(持续更新)
  16. 2022西电抗疫CTF个人赛
  17. TextCNN pytorch实现
  18. 解决其他浏览器能上网谷歌浏览器不能上网
  19. 如何实现 ASP.NET Core WebApi 的版本化
  20. oracle数据库开发认证,数据库考试简介之Oracle认证

热门文章

  1. Mysql 添加外键失败
  2. Premiere Pro CC 2020 v14.0.0.572 Win/Mac 中文版/英文版
  3. 小说电影里面的“冥想”只是玄学中来修炼的吗?
  4. 大学生返乡回农村种植有机水果,带领农民走上创富之路
  5. Jenkins(10):禁止用户注册
  6. Git学习之旅:Mac安装Git与创建本地仓库(一)
  7. Servlet入门总结及第一个Servlet程序
  8. linux远程连接windows桌面背景,xrdp实现windows 远程桌面连接linux(各用户桌面独立)...
  9. 部署前端刷新页面出现404问题
  10. Swoole加速结巴分词