0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

嵌入式操作系统都基于GCC进行源码编译

Q4MP_gh_c472c21 来源:未知 作者:李倩 2018-03-30 13:57 次阅读

1.GCC相关介绍

GCC与gcc有什么不同?

● GCC(GNU Compiler Collection)

GNU编译器集合,包含众多语言的编译器:C、C++Java、D、Objective-C、etc

●gcc:特指GCC中的C语言编译器

GCC VS 嵌入式

●多数嵌入式操作系统都基于GCC进行源码编译

LinuxVxWorksAndroid、etc

●实际开发中的应用

内核开发:gcc

应用开发:gcc / g++ / gdc

2 初识编译器

●gcc将代码编译成可执行程序的过程会完成预处理(preprocessing)、编译(compilation)、汇编(assembly)、链接(linking)四个步骤

●编译器由预处理器(cpp工具,C Preprocessor)、编译器(cc工具,C and C++ compiler)、汇编器(as工具,assembler)、连接器(ld工具)组成

3 gcc关键编译选项

3.1 预处理指令

3.1.1 指令格式

gcc -E file.c -o file.i

3.1.2 预处理文件相关内容

从file.i文件中我们可以看到存在大量的以“#”开头的行。每行的格式是“# 行号 文件名 标志“,其中的”行号“与”文件名“表示从它后一行开始的内容来源于哪一个文件的哪一行;标志可以是1、2、3和4四个数字,每个数字的含义如下:

当file.c使用到非系统头文件且它们不在当前目录下时,需要通过使用gcc的-I参数加以指定,否则gcc会因为无法获得必要的头文件进行宏展开而报错。

3.2 编译指令

3.2.1 指令格式

gcc -S file.i -o file.sgcc -S -O2 file.c -o file.s

3.2.2 说明

使用-S参数时,我们可以根据需要使用-O选项。

3.3 汇编指令

3.3.1 指令格式

gcc -c file.s -o file.o

3.4 生成映射文件

3.4.1 指令格式

gcc -Wl,-Map=file.map file.c

3.4.2 说明

映射文件是通过ld链接器来生成的,我们可以通过映射文件了解一个程序文件中各符号在内存中的布局信息。gcc的-Wl选项用于指定传递给链接器的选项,-Map=file.map选项由gcc传递给链接器以指示链接器为我们生成名为file.map的映射文件。在使用-Wl选项时,它后面的选项如有多个则需要用逗号加以分割。

3.5 宏定义

3.5.1 指令格式

gcc -D'TEST="test"' file.c

3.5.2 说明

如果宏为字符串时,则需要用单引号引起来。

3.6 获取系统头文件路径

3.6.1 指令格式

gcc -v file.c

3.6.2 说明

系统头文件是指C语言本身和操作系统相关的头文件。在使用-v选项获取系统头文件路径时,必须后面带一个有效的C程序源文件,否则gcc输出的信息将不包含系统头文件路径这一内容。

3.7 生成依赖关系

3.7.1 指令格式

获取目标的完整依赖关系:gcc -M test.c获取目标的部分依赖关系:gcc -MM test.c

3.7.2 说明

由于系统头文件在绝大多数情形下是不会改变的,因此在构造make所需的依赖关系时不必将它们纳入其中。通过-MM选项,可以让gcc生成不包含系统头文件的依赖关系。

3.8 指定库文件及库文件搜索路径

3.8.1 指令格式

-L选项:指定库文件的搜索路径-l选项:指定库文件ar crs libfunc.a func.ogcc test.c -L. -lfunc

3.8.2 说明

注意,-L选项用于告诉gcc可以从哪个目录查找库文件,可以多次使用它以指定多个目录;-I选项则用于告诉gcc在生成可执行程序时需要链接的库名,这一选项同样可以多次使用以指定多个库。使用-l选项时要注意后面所跟的名字并不包括“lib”前缀和“.a”后缀。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式
    +关注

    关注

    4981

    文章

    18274

    浏览量

    288367
  • C语言
    +关注

    关注

    180

    文章

    7528

    浏览量

    128447
  • 编译器
    +关注

    关注

    1

    文章

    1576

    浏览量

    48606

原文标题:初识 嵌入式C语言编译器:GCC

文章出处:【微信号:gh_c472c2199c88,微信公众号:嵌入式微处理器】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    嵌入式操作系统及其特点

    嵌入式操作系统嵌入式应用软件的开发平台,嵌入式操作系统(OPerating System,OS)是嵌入
    发表于 07-11 16:51

    嵌入式操作系统上的FreeRTOS操作系统分析

    嵌入式领域中,嵌入式实时操作系统正得到越来越广泛的应用。采用嵌入式实时操作系统(rtos)可以更合理、更有效地利用cpu的资源,简化应用软
    发表于 07-01 08:19

    【案例分享】FreeRTOS的嵌入式实时操作系统的实现

    FreeRTOS是一个源码公开的免费的嵌入式实时操作系统,通过研究其内核可以更好地理解嵌入式操作系统的实现原理.本文主要阐述FreeRTOS
    发表于 07-23 04:30

    嵌入式操作系统怎么实现网络加载?

    在复杂的应用系统中通常需要嵌入式操作系统的支持,这样嵌入式操作系统镜像文件的尺寸往往就会变得比
    发表于 03-18 08:20

    嵌入式操作系统怎么选择?

    嵌入式操作系统是ARM CPU的软件基础,从8位/16位单片机发展到以arm CPU核为代表的32位嵌入式处理器,嵌入式操作系统将替代传统的
    发表于 04-07 07:13

    嵌入式操作系统有哪些

      1.嵌入式Linux  嵌入式Linux(Embedded Linux)是标准Linux经过小型化裁剪处理之后的专用Linux操作系统,能够固化于容量只有几KB或者几MB的存储器芯片或者单片机中
    发表于 06-20 15:13

    什么是嵌入式操作系统? 

    、INTEGRITY、OSE、C ExecuTIve  什么是嵌入式操作系统 嵌入式操作系统是一种支持嵌入式
    发表于 10-28 07:35

    嵌入式Linux操作系统的使用

    这是第一次接触嵌入式设计课程,课程设计内容目标如下:1、了解嵌入式技术;2、掌握嵌入式Linux操作系统的使用;(命令)3、掌握嵌入式Lin
    发表于 11-08 06:43

    基于Linux的嵌入式操作系统

    嵌入式操作系统一、嵌入式操作系统概述1.1 嵌入式操作系统的特点1.2
    发表于 11-08 09:05

    进行嵌入式操作系统和应用软件的开发

    ,一种是硬件开发,一种是软件开发。简单来说,嵌入式底层驱动开发就是针对嵌入式操作系统的一些设备编写驱动程序。而嵌入式底层软件开发就是进行
    发表于 12-17 08:25

    嵌入式系统与桌面操作系统的区别是什么

    嵌入式系统与桌面操作系统的区别嵌入式系统开发式一项综合的计算机应用技术系统结构:状态控制器,中断
    发表于 12-22 06:03

    嵌入式操作系统的分类及其优势

    目录1. 嵌入式操作系统1.1 定义1.2 嵌入式操作系统分类1.3 嵌入实时操作系统市场2.
    发表于 12-22 06:39

    什么是嵌入式操作系统嵌入式操作系统有何功能

    什么是嵌入式操作系统?常见的嵌入式操作系统有哪几种?嵌入式操作系统有何功能?
    发表于 12-24 07:07

    嵌入式linux、arm嵌入式操作系统的相关资料分享

    开发工具链异常处理linux内核裁剪与移植GCC命令基本用法系统调用与中断进程间通信接口中断驱动程序引导程序C语言与汇编语言嵌入式操作系统嵌入式
    发表于 12-27 07:35

    基于ARM的嵌入式操作系统简介

    操作系统文章目录操作系统前言一、 概述二、ARM深入1.基于ARM的嵌入式操作系统2.ARM编译器及IDE开发环境名词总结前言上面了解了芯片
    发表于 01-25 07:28