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”后缀。

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

    关注

    5082

    文章

    19117

    浏览量

    304963
  • C语言
    +关注

    关注

    180

    文章

    7604

    浏览量

    136763
  • 编译器
    +关注

    关注

    1

    文章

    1634

    浏览量

    49118

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

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

收藏 人收藏

    评论

    相关推荐

    嵌入式操作系统有哪些

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

    嵌入式Linux操作系统的使用

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

    嵌入式实时操作系统教程

    嵌入式实时操作系统教程:以VRTX为对象详细介绍了嵌入式实时操作系统的原理和应用,特别是第一部分关于嵌入式实时
    发表于 04-19 21:55 44次下载
    <b class='flag-5'>嵌入式</b>实时<b class='flag-5'>操作系统</b>教程

    源码公开的嵌入式实时操作系统T-Kernel

     本文主要讲述的是源码公开的嵌入式实时操作系统T-Kernel。
    发表于 04-24 10:55 25次下载

    嵌入式操作系统uClinux和eCos的比较

    uClinux和eCos操作系统是两种性能优良、源码公开且被广泛应用的免费嵌入式操作系统。本文通过对uclinux和eCos的对比,分析和总结了嵌入
    发表于 04-18 08:36 1710次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>uClinux和eCos的比较

    嵌入式操作系统的网络加载实现

      在复杂的应用系统中通常需要嵌入式操作系统的支持,这样嵌入式操作系统镜像文件的尺寸往往就会变
    发表于 08-25 14:02 1267次阅读
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>的网络加载实现

    嵌入式操作系统-李春杰

    主要内容: 嵌入式操作系统概述 典型嵌入式操作系统介绍 嵌入式操作系统选型
    发表于 01-04 18:30 0次下载

    UCOS-II:源码公开的实时嵌入式操作系统

    UCOS-II:源码公开的实时嵌入式操作系统
    发表于 04-20 13:55 9次下载

    嵌入式操作系统是什么_嵌入式操作系统有哪些

    嵌入式操作系统(Embedded OperatingSystem,简称:EOS)是指用于嵌入式系统操作系统
    发表于 04-08 14:36 2.1w次阅读

    Linux嵌入式操作系统有哪些优势

    嵌入式Linux操作系统是将Linux操作系统进行裁剪,使Linux操作系统能够在嵌入式计算机系统
    发表于 07-10 16:34 5119次阅读

    嵌入式操作系统如何应用_嵌入式操作系统的组成

    本文首先介绍了入操作系统的特点,其次阐述了嵌入式操作系统的应用,最后介绍了嵌入式操作系统的组成
    发表于 09-01 16:36 3607次阅读

    什么是嵌入式操作系统 常见的嵌入式系统有哪些

    、INTEGRITY、OSE、C ExecuTIve  什么是嵌入式操作系统 嵌入式操作系统是一种支持嵌入式
    发表于 10-21 09:36 27次下载
    什么是<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b> 常见的<b class='flag-5'>嵌入式</b><b class='flag-5'>系统</b>有哪些

    嵌入式操作系统

    参考:[1] 《嵌入式系统软件及操作系统》1、嵌入式操作系统的功能在嵌入式
    发表于 10-21 11:21 10次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>

    嵌入式操作系统

    嵌入式操作系统一、嵌入式操作系统概述1.1 嵌入式操作系统的特点1.2
    发表于 11-03 18:36 46次下载
    <b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>

    什么是嵌入式操作系统

    嵌入式操作系统是一种专门的操作系统(OS),旨在为非计算机的设备执行特定任务。嵌入式操作系统的主要工作是运行允许设备完成其工作的代码。
    的头像 发表于 12-23 15:33 7770次阅读
    什么是<b class='flag-5'>嵌入式</b><b class='flag-5'>操作系统</b>?