Linux--gcc的基本用法

  • 1.四个过程
  • 2.一次性完成
  • 二、gcc常用选项
  • 三、多模块编译
  • 四、静态库与动态库
    • 1.静态库(.a)
    • gcc编译步骤:
      • (1)预处理
      • (2)编译
      • (3)汇编
      • (4)链接

1.四个过程

预处理(pre-processing) E
编译器将C源代码中的包含的头文件如stdio.h编译进来,替换宏。
编译(Compiling)S
gcc首先要检查代码的规范性、是否有语法错误等,以确定代码的实际要做的工作,在检查无误后,gcc把代码翻译成汇编语言。
汇编(Assembling) c
把编译阶段生成的”.s”文件转成二进制目标代码。
链接 (Linking)
链接到库中,生成可执行文件。

2.一次性完成

二、gcc常用选项

选项名 作用
E 激活预处理;头文件、宏等展开(.i文件)
S 激活预处理、编译;生成汇编代码(.s文件)
c 激活预处理、编译、汇编;生成目标文件(.o文件)
o 生成目标
Wall 打开编译告警(所有)
g 嵌入调试信息,方便gdb调试
llib 链接 lib 库 (这里是小写 L ) 相当于 C++ #pragma comment(lib, “xxx.lib”)
Idir 增加 include 目录 (这里是大写 i ) 头文件路径
LDir 增加 lib 目录 (编译静态库和动态库)

三、多模块编译


多模块编译中如果某一个模块发生了变化,只需要编译更改的模块即可

四、静态库与动态库

1.静态库(.a)

程序在编译链接时候把库的代码链接到可执行文件中。程序运行时候,不再需要静态库,生成的可执行文件大,每个可执行文件都会加载一份拷贝到内存。

gcc编译步骤:

(1)预处理

gcc –E xxxxx.c -o xxxxx.i
展开头文件
删除注释

(2)编译

gcc -> cc1
gcc –S xxxx.c –o xxxx.s
将C源代码编译为汇编语言

(3)汇编

gcc -> as
gcc –c xxxxx.c -o xxxxxx.o
将汇编文件汇编为二进制文件

(4)链接

gcc -> collect2
gcc xxxxx.c -> a.out
将多个二进制文件进行链接
改变二进制文件显示 == :%!xxd==
回到普通模式状态: == :%!xxd -r==

Linux--gcc的基本用法相关推荐

  1. Linux GCC用法

    GCC原名为GNU C语言编译器(GNU C Compiler),只能处理C语言.但其很快扩展,变得可处理C++,后来又扩展为能够支持更多编程语言,如Fortran.Pascal.Objective ...

  2. C语言——程序的编译+链接(linux+gcc实现过程)

    文章目录 前言 一.预处理 1.预处理阶段的操作: 1.预处理过程实现: 二.编译 1.编译阶段的操作: 2.编译过程的实现: 三.汇编 1.汇编阶段的操作: 2.汇编过程的实现: 四.链接 1.链接 ...

  3. linux中make的用法

    一.linux中make的用法   目的:        基本掌握了make 的用法,能在Linux系统上编程. 环境:        Linux系统 准备:        准备三个文件:file1. ...

  4. linux gcc中sin30度,学习gcc.pdf

    学习gcc 如何在 Ubuntu 下安装和使用 gcc GCC 是在Linux 系统中用的比较多的编译器,一般做Linux 开发的朋友都会用 GCC 编译器,但今天 在 Ubuntu 上安装 GCC ...

  5. 深入剖析 linux GCC 4.4 的 STL string

    转自: 深入剖析 linux GCC 4.4 的 STL string 本文通过研究STL源码来剖析C++中标准模板块库std::string运行机理,重点研究了其中的引用计数和Copy-On-Wri ...

  6. linux 中gcc运行命令,Linux gcc命令的具体使用

    01. 命令概述 gcc命令使用GNU推出的基于C/C++的编译器,是开放源代码领域应用最广泛的编译器,具有功能强大,编译代码支持性能优化等特点. gcc是GNU编译器套件(GNU Compiler ...

  7. linux查询jiffies命令,Linux全局变量jiffies的用法

    jiffies是Linux系统中的全局变量,与时间有关,那么jiffies变量具体有哪些作用呢?下面小编就给大家介绍下Linux全局变量jiffies的用法,感兴趣的朋友不妨来了解下吧. 系统运行时间 ...

  8. Linux之make的用法讲解,linux中make的用法

    1.linux中make的用法 目的: 基本掌握了make 的用法,能在Linux系统上编程. 环境: Linux系统 准备: 准备三个文件:file1.c, file2.c, file2.h fil ...

  9. linux下svn的用法(转)

    linux下svn的用法 2008-10-30 17:12:56 标签:linux svn 用法 [推送到技术圈] 来源:http://zhoutao.blog.51cto.com/425866/10 ...

  10. linux下find命令用法

    一.Linux中find常见用法示例 ·find    path    -option    [    -print ]    [ -exec    -ok    command ]    {} /; ...

最新文章

  1. 假如我们的坦克继续前进队——需求改进系统设计
  2. 得物App联合Zippo推出限量款打火机 首批开售十分钟即售罄
  3. 距离度量以及python实现(一)
  4. Hadoop运行错误——could only be replicated to 0 nodes, instead of 1
  5. Java 代码精简之道 | 凌云时刻
  6. 计算机统考模拟系统3.0,统考计算机模拟系统操作流程
  7. 常见视频封装格式(1) — AVI
  8. 虚拟机CentOS-7修改ip地址
  9. 愤怒的牛(重回基础二分)
  10. 1.1 pug常用命令
  11. 为什么SecureCRT里无法输入?
  12. 2021中国工业软件上市企业公司排行2021中国智能制造企业排名
  13. python量化分析
  14. 古人的智慧之回文诗——《两相思》
  15. Post请求body为list,校验里面的对象
  16. 云图说丨初识云速建站服务
  17. Java虚拟机(JVM)面试题(总结最全面的面试题!!!)
  18. js取服务器系统时间,JS中new Date()用法及获取服务器时间
  19. Xcode7.2配置OpenGL环境(包括GLTools)
  20. android新手引导页面,GuideHelper 实现Android新手引导页

热门文章

  1. python循环语句打印输出1-10_python_不用循环打印1-1000
  2. 基础设施即代码(IAC),Zalando Postgres Operator 简介
  3. mina自定义编解码
  4. 神经网络、目标检测学习
  5. 微信公众号开发笔记(二):微信分享接口实现和问题
  6. spring 演变_团队的演变
  7. 如何进行系统的架构设计?
  8. Unity 2D手游——坦克大战 C#
  9. 华为 手机 hbuilderx 连接不上手机
  10. Typora自定义主题分享 (Mac风、图片立体感...)