第2章嵌入式LINUX概述ppt课件

上传人:沈*** 文档编号:183196239 上传时间:2023-01-29 格式:PPT 页数:44 大小:182KB
返回 下载 相关 举报
第2章嵌入式LINUX概述ppt课件_第1页
第1页 / 共44页
第2章嵌入式LINUX概述ppt课件_第2页
第2页 / 共44页
第2章嵌入式LINUX概述ppt课件_第3页
第3页 / 共44页
点击查看更多>>
资源描述
第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述第二章第二章 嵌入式嵌入式LINUX概述概述2.1 嵌入式嵌入式LINUX简介简介2.2 嵌入式嵌入式LINUX开发流程和环境开发流程和环境2.3 GCC工具简要介绍工具简要介绍结结 束束第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述2.1 嵌入式嵌入式LINUX简介简介2.1.1 嵌入式嵌入式LINUX的发展的发展2.1.2 嵌入式嵌入式LINUX的优点的优点2.1.3 嵌入式嵌入式LINUX的缺点的缺点返回本章首页返回本章首页第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述嵌入式LINUX的发展Linux 正在嵌入式开发领域稳步发展。Linux 使用 GPL,所有对特定开发板、PDA、掌上机、可携带设备等嵌入式 Linux 系统感兴趣的人都可以从因特网上免费下载其内核和应用程序,并开始移植和开发。许多 Linux 改良品种迎合了嵌入式市场,它们包括 RTLinux实时 Linux)、uclinux用于非 MMU 设备的 Linux)、Montavista Linux用于 ARM、MIPS、PPC 的 Linux 分发版)、ARM-LinuxARM 上的 Linux和其它 Linux 系统。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述嵌入式 Linux 的发展比较迅速。NEC、索尼已经在销售个人视频录像机等基于 Linux的消费类电子产品,摩托罗拉则计划在其未来的大多数手机上使用 Linux,IBM 也制定了在手持机上运行 Linux 的计划。数年来,“Linux 标准库组织一直在从事对在服务器上运行的 Linux 进行标准化的工作,如今,嵌入式计算领域也开始了这一工作。嵌入式 Linux标准吸引了“Linux 标准库以及Unix 组织中有益的元素。返回本节返回本节第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述嵌入式嵌入式LINUX的优点的优点典型的典型的 Linux 系统经过打包,在拥有硬盘系统经过打包,在拥有硬盘和大容量内存的和大容量内存的 PC 机上运行,嵌入式系统不需机上运行,嵌入式系统不需要这么高的配置。一个功能完备的要这么高的配置。一个功能完备的 Linux 内核要内核要求大约求大约 1 MB 内存。而内存。而 Linux 微内核只占用其中微内核只占用其中很小一部分内存,包括虚拟内存和所有核心的操很小一部分内存,包括虚拟内存和所有核心的操作系统功能在内,只需占用系统约作系统功能在内,只需占用系统约 100 K 内存。内存。只要有只要有 500 K 的内存,一个有网络栈和基本实用的内存,一个有网络栈和基本实用程序的完全的程序的完全的 Linux 系统就可以在一台系统就可以在一台 8 位总线位总线SX的的 Intel 386 微处理器上运行的很好了。微处理器上运行的很好了。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述由于内存要求常常是需要的应用所决定的,由于内存要求常常是需要的应用所决定的,因此它是一个瞄准嵌入式市场的轻量级操作系统。因此它是一个瞄准嵌入式市场的轻量级操作系统。与传统的实时操作系统相比与传统的实时操作系统相比RTOS),采),采用象嵌入式用象嵌入式 Linux这样的开放源码的操作系统的另这样的开放源码的操作系统的另外一个好处是外一个好处是 Linux 开发团体看来会比开发团体看来会比 RTOS 的的供应商更快地支持新的供应商更快地支持新的 IP 协议和其它协议。例如,协议和其它协议。例如,用于用于 Linux 的设备驱动程序要比用于商业操作系统的设备驱动程序要比用于商业操作系统的设备驱动程序多,如网络接口卡的设备驱动程序多,如网络接口卡NIC驱动程驱动程序以及并口和串口驱动程序。核心序以及并口和串口驱动程序。核心 Linux 操作系统操作系统本身的微内核体系结构相当简单。本身的微内核体系结构相当简单。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述网络和文件系统以模块形式置于微内核的上网络和文件系统以模块形式置于微内核的上层。驱动程序和其它部件可在运行时作为可加载模层。驱动程序和其它部件可在运行时作为可加载模块编译到或者是添加到内核。这为构造定制的可嵌块编译到或者是添加到内核。这为构造定制的可嵌入系统提供了高度模块化的构件方法。而在典型情入系统提供了高度模块化的构件方法。而在典型情况下该系统需结合定制的驱动程序和应用程序以提况下该系统需结合定制的驱动程序和应用程序以提供附加功能。供附加功能。返回本节返回本节第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述嵌入式嵌入式LINUX的缺点的缺点嵌入式嵌入式LINUX不是一个实时嵌入式操作系统。不是一个实时嵌入式操作系统。在嵌入式系统上运行在嵌入式系统上运行 Linux 的一个缺点是的一个缺点是 Linux 体系提供实时性能需要添加实时软件模块。而这些模块体系提供实时性能需要添加实时软件模块。而这些模块运行的内核空间正是操作系统实现调度策略、硬件中断运行的内核空间正是操作系统实现调度策略、硬件中断异常和执行程序的部分异常和执行程序的部分,容易引起严重错误。容易引起严重错误。返回本节返回本节第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述2.2嵌入式嵌入式LINUX开发流程和环境开发流程和环境2.2.1 嵌入式嵌入式LINUX的开发流程的开发流程2.2.2 嵌入式嵌入式LINUX的开发环境建立的开发环境建立返回本章首页返回本章首页第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述嵌入式嵌入式LINUX的开发流程的开发流程嵌入式嵌入式 linux 开发,根据应用需求的不同有开发,根据应用需求的不同有不同的配置开发方法,但是一般都要经过以下过不同的配置开发方法,但是一般都要经过以下过程:程:建立开发环境。建立开发环境。操作系统一般使用操作系统一般使用 REDHAT LINUX,版本,版本7 到到9 都可以,选择定制都可以,选择定制安装或全部安装,通过网络下载相应的安装或全部安装,通过网络下载相应的 GCC 交交叉编译器进行安装,或者安装产品厂家提供的交叉编译器进行安装,或者安装产品厂家提供的交叉编译器。叉编译器。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述配置开发主机。配置配置开发主机。配置 MINICOM,一般参,一般参数为波特率数为波特率 115200,数据位,数据位 8 位,停止位位,停止位 1,无,无奇偶校验,软硬件控制流设为无。奇偶校验,软硬件控制流设为无。MINICOM 软软件的作用是作为调试嵌入式开发板信息输出的监件的作用是作为调试嵌入式开发板信息输出的监视器和键盘输入的工具;配置网络,主要是配置视器和键盘输入的工具;配置网络,主要是配置 NFS 网络文件系统,需要关闭防火墙,简化嵌入网络文件系统,需要关闭防火墙,简化嵌入式网络调试环境设置过程。式网络调试环境设置过程。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述建立引导装载程序建立引导装载程序 BOOTLOADER。从网。从网络上下载一些公开源代码的络上下载一些公开源代码的 BOOTLOADER,如,如U-BOOT、VIVI、等,根据自己具体芯片进行移、等,根据自己具体芯片进行移植修改。有些芯片没有内置引导装载程序,比如植修改。有些芯片没有内置引导装载程序,比如三星的三星的 ARM7、ARM9 系列芯片,这样就需要编系列芯片,这样就需要编写烧写开发板上写烧写开发板上flash 的烧写程序,网络上有免费的烧写程序,网络上有免费下载的下载的 WINDOWS下通过下通过 JTAG并口简易仿真器并口简易仿真器烧写烧写 ARM 外围外围 flash 芯片的程序。芯片的程序。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述也有也有 LINUX下公开源代码的下公开源代码的 J-FLASH 程序。程序。如果不能烧写自己的开发板,就需要根据自己的如果不能烧写自己的开发板,就需要根据自己的具体电路进行源代码修改。这是让系统可以正常具体电路进行源代码修改。这是让系统可以正常运行的第一步。如果你购买了厂家的仿真器当然运行的第一步。如果你购买了厂家的仿真器当然比较容易烧写比较容易烧写 flash 了,但是其核心技术是无法了了,但是其核心技术是无法了解的。这对于需要迅速开发应用的人来说是可以解的。这对于需要迅速开发应用的人来说是可以提高进度的。提高进度的。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述下载别人已经移植好的下载别人已经移植好的 LINUX 操作系统,操作系统,如如 UCLINUX、ARM-LINUX、PPC-LINUX 等。等。如果有专门针对你所使用的如果有专门针对你所使用的 CPU 移植好的移植好的LINUX 操作系统那是再好不过,下载后再添加自操作系统那是再好不过,下载后再添加自己的特定硬件的驱动程序,进行调试修改,对于己的特定硬件的驱动程序,进行调试修改,对于带带 MMU 的的CPU 可以使用模块方式调试驱动,对可以使用模块方式调试驱动,对于于UCLINUX 这样的系统好像只能编译进内核进这样的系统好像只能编译进内核进行调试。行调试。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述建立根文件系统,从建立根文件系统,从 busybox 下载使用下载使用BUSYBOX 软件进行功能裁减,产生一个最基本软件进行功能裁减,产生一个最基本的根文件系统,再根据自己的应用需要添加其他的根文件系统,再根据自己的应用需要添加其他的程序。默认的启动脚本一般都不会符合应用的的程序。默认的启动脚本一般都不会符合应用的需要,所以就要修改根文件系统中的启动脚本。需要,所以就要修改根文件系统中的启动脚本。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述建立应用程序的建立应用程序的 flash磁盘分区,一般使用磁盘分区,一般使用 JFFS2或或 YAFFS文件系统,这需要在内核中提供文件系统,这需要在内核中提供这些文件系统的驱动,有的系统使用一个线性这些文件系统的驱动,有的系统使用一个线性 flashNOR 型型512K32M,有的系统使用非,有的系统使用非线性线性 flashNAND 型型8512M,有的两个同时,有的两个同时使用,需要根据应用规划使用,需要根据应用规划 flash的分区方案。的分区方案。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述开发应用程序,可以下载到根文件系统中,开发应用程序,可以下载到根文件系统中,也可以放入也可以放入 YAFFS、JFFS2 文件系统中,有的应文件系统中,有的应用程序不使用根文件系统,而是直接将应用程序用程序不使用根文件系统,而是直接将应用程序和内核设计在一起,这有点类似于和内核设计在一起,这有点类似于 UCOS-II的方的方式。式。返回本节返回本节第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述嵌入式嵌入式LINUX的开发环境建立的开发环境建立通常的嵌入式系统的软件开发采用一种交叉通常的嵌入式系统的软件开发采用一种交叉编译调试的方式。交叉编译调试环境建立在宿主编译调试的方式。交叉编译调试环境建立在宿主机即一台机即一台 PC 机上,对应的开发板叫做目标机上,对应的开发板叫做目标板。在进行嵌入式开发前第一步的工作就是要板。在进行嵌入式开发前第一步的工作就是要安装一台装有指定操作系统的安装一台装有指定操作系统的 PC 机作宿主开发机作宿主开发机,对于嵌入式机,对于嵌入式 LINUX,宿主机上的操作系统一,宿主机上的操作系统一般要求为般要求为 REDHAT LINUX。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述嵌入式开发通常要求宿主机配置有网络,支嵌入式开发通常要求宿主机配置有网络,支持持 NFS为交叉开发时为交叉开发时 mount 所用)。然后要在所用)。然后要在宿主机上建立交叉编译调试的开发环境。环境的宿主机上建立交叉编译调试的开发环境。环境的建立需要许多的软件模块协同工作,这将是一个建立需要许多的软件模块协同工作,这将是一个比较繁杂的工作,不过这些工作都已经由专业人比较繁杂的工作,不过这些工作都已经由专业人士完成,我们所做的就是依样画葫芦。士完成,我们所做的就是依样画葫芦。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述主机中,主机中,LINUX安装后,需要配置网络,安装后,需要配置网络,包括配置包括配置 IP地址、地址、NFS 效劳、防火墙。网络配置效劳、防火墙。网络配置主要是要安装好以太网卡,对于一般常见的主要是要安装好以太网卡,对于一般常见的 RTL8139 网卡,网卡,REDHAT9.0 可以自动识别并自可以自动识别并自动安装好,完全不要用户参与因此建议使用该网动安装好,完全不要用户参与因此建议使用该网卡。然后配置宿主机卡。然后配置宿主机 IP 为为 192.168.0.121。如果是。如果是在有多台计算机使用的局域网环境使用此开发设在有多台计算机使用的局域网环境使用此开发设备,备,IP地址可以根据具体情况设置。地址可以根据具体情况设置。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述对于对于 REDHAT9.0,它默认的是打开了防火,它默认的是打开了防火墙,因此对于外来的墙,因此对于外来的 IP 访问它全部拒绝,这样其访问它全部拒绝,这样其它网络设备根本无法访问它,即无法用它网络设备根本无法访问它,即无法用 NFS mount 它,许多网络功能都将无法使用。因此网它,许多网络功能都将无法使用。因此网络安装完毕后,应立即关闭防火墙。在系统设置络安装完毕后,应立即关闭防火墙。在系统设置菜单中选择服务器设置菜单,再选中服务菜单,菜单中选择服务器设置菜单,再选中服务菜单,将将 iptables 服务的勾去掉服务的勾去掉,并确保并确保 nfs 选项选中。选项选中。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述配置配置 NFS:点击主菜单运行系统设置点击主菜单运行系统设置-服务器设置服务器设置-NFS服服务器英文为:务器英文为:SETUP-SYSTEM SERVICE -NFS),点击增加出现如下在界面,在目录),点击增加出现如下在界面,在目录(Drictory):中填入需要共享的路径,在主机:中填入需要共享的路径,在主机(Hosts):中填入允许进行连接的主机:中填入允许进行连接的主机 IP地址。并地址。并选择允许客户对共享目录的操作为只读选择允许客户对共享目录的操作为只读Readonly或读写或读写(Read/write)。当将远程根用户当作。当将远程根用户当作本地根用户时本地根用户时,对于操作比较方便对于操作比较方便,但是安全性较但是安全性较差。差。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述配置配置MINICOM:在终端的命令行提示符后输入在终端的命令行提示符后输入 minicom,回,回车,你就会看到车,你就会看到 minicom的启动画面。的启动画面。minicom启启动后,先按动后,先按 CtrlA键,再按键,再按Z 键注意不是连续键注意不是连续按,按,Ctrl+A松开后才按松开后才按 Z),进入主配置界面。),进入主配置界面。按按“O进入配置界面。按上下键选择进入配置界面。按上下键选择 Serial port setup,进入端口设置界面,这里有几个重要选项,进入端口设置界面,这里有几个重要选项改为如下值:改为如下值:第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述Serial Device:/dev/ttyS0(端口号使用串口(端口号使用串口 1)BPS/par/bits :/115200 8N1 (波特率)(波特率)F,E 硬件流,软件流都改为硬件流,软件流都改为 NO,若要使用,若要使用 PC 机的串口机的串口 2 来接板子的串口来接板子的串口 1 做监控,改为:做监控,改为:/dev/ttyS1 即可。即可。返回本节返回本节第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述2.3 GCC工具简要介绍工具简要介绍2.3.1 GCC概述概述2.3.2 GCC的执行过程的执行过程2.3.3 GCC的基本用法和选项的基本用法和选项2.3.4 GCC的使用实例的使用实例返回本章首页返回本章首页第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述GCC概述概述在在LINUX开发环境下,开发环境下,GCC是进行是进行C程序程序开发不可或缺的编译工具。它包含了预处理器、开发不可或缺的编译工具。它包含了预处理器、编译器、汇编器、链接器等组件。对于一般的开编译器、汇编器、链接器等组件。对于一般的开发者,发者,GCC可提供简单的使用方法,即只要给它可提供简单的使用方法,即只要给它提供提供C源代码文件,它将完成预处理器、编译、源代码文件,它将完成预处理器、编译、汇编、链接所有工作,最后生成一个可执行文件汇编、链接所有工作,最后生成一个可执行文件。对于中高级开发者,它提供了足够多的参数,。对于中高级开发者,它提供了足够多的参数,可让开发者全面控制代码的生成,这对于嵌入式可让开发者全面控制代码的生成,这对于嵌入式系统级软件开发者相当重要。系统级软件开发者相当重要。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述通常通常linux系统上的默认系统上的默认gcc都是针对都是针对PC机自身的硬件平台,机自身的硬件平台,一般来说是一般来说是X86系列或者是兼容机。但是在嵌入式系统开发中,针对系列或者是兼容机。但是在嵌入式系统开发中,针对的是目标机进行开发,所需的的是目标机进行开发,所需的gcc工具并不一定针对工具并不一定针对X86及其兼容系列。及其兼容系列。ARM公司已经提供了在公司已经提供了在LINUX平台上进行交叉开发的平台上进行交叉开发的gcc工具,工具,arm-linux-gcc、arm-uclibc-gcc等。它们是针对等。它们是针对ARM硬件平台进行开发的。硬件平台进行开发的。我们可以从网上下载这些工具。一般的教学设备经销商也都提供这些我们可以从网上下载这些工具。一般的教学设备经销商也都提供这些工具。工具。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述GCC识别的主要文件扩展名如下表所示。这里原码识别的主要文件扩展名如下表所示。这里原码文件的扩展名就清楚地区别文件的扩展名就清楚地区别GCC使用的预处理器和汇编器。使用的预处理器和汇编器。使用源码文件来产生某种形式的目标文件。在这一系列的使用源码文件来产生某种形式的目标文件。在这一系列的处理过程中,文件的名没有改变,改变的是扩展名。在链处理过程中,文件的名没有改变,改变的是扩展名。在链接阶段中,一个目标文件中对其他文件符号中符号参考引接阶段中,一个目标文件中对其他文件符号中符号参考引用被解释和替换。用被解释和替换。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述文件扩展名文件扩展名文件类型文件类型.cC语言代码语言代码.C或或.ccC+语言代码语言代码.i预处理后的预处理后的C语言代码语言代码.s或或.S汇编语言代码汇编语言代码.o目标代码目标代码.a静态链接库静态链接库.so动态链接库动态链接库返回本节返回本节第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述GCC的执行过程的执行过程虽然我们称虽然我们称GCC是是C语言的编译器,但使用语言的编译器,但使用GCC由由C语言源代码文件生成可执行文件的过程不语言源代码文件生成可执行文件的过程不仅仅是编译的过程,仅仅是编译的过程,而是要经历四个相互关联的步而是要经历四个相互关联的步骤骤 预处理预处理(也称预编译,也称预编译,Preprocessing)、编译、编译(Compilation)、汇编、汇编(Assembly)和连接和连接(Linking)。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述命令命令gcc首先调用首先调用cpp进行预处理,在预处理进行预处理,在预处理过程中,对源代码文件中的文件包含过程中,对源代码文件中的文件包含(include)、预编译语句预编译语句(如宏定义如宏定义define等等)进行分析。进行分析。接着调用接着调用cc1进行编译,这个阶段根据输入进行编译,这个阶段根据输入文件生成以文件生成以.o为后缀的目标文件。汇编过程是针为后缀的目标文件。汇编过程是针对汇编语言的步骤,调用对汇编语言的步骤,调用as进行工作,进行工作,一般来一般来讲,讲,.S、.s为后缀的汇编语言文件经过预编译和为后缀的汇编语言文件经过预编译和汇编之后都生成以汇编之后都生成以.o为后缀的目标文件。为后缀的目标文件。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述当所有的目标文件都生成之后,当所有的目标文件都生成之后,gcc就调用就调用 ld来完成最后的关键性工作,这个阶段就是连接。来完成最后的关键性工作,这个阶段就是连接。在连接阶段,在连接阶段,所有的目标文件被安排在可执行程所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。函数也从各自所在的档案库中连到合适的地方。返回本节返回本节第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述GCC的基本用法和选项的基本用法和选项在使用在使用gcc编译器的时候,我们必须给出一编译器的时候,我们必须给出一系列必要的调用参数和文件名称。系列必要的调用参数和文件名称。gcc编译器的编译器的调用参数大约有调用参数大约有100多个,多个,其中多数参数我们可其中多数参数我们可能根本就用不到,这里只介绍其中最基本、最常能根本就用不到,这里只介绍其中最基本、最常用的参数。用的参数。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述GCC最基本的用法是最基本的用法是 gcc options filenames 其中其中options就是编译器所需要的参数,就是编译器所需要的参数,filenames给出相关的文件名称。给出相关的文件名称。-c,只编译,不链接成为可执行文件,编译器只,只编译,不链接成为可执行文件,编译器只是由输入的是由输入的.c等源代码文件生成等源代码文件生成.o为后缀的目标文为后缀的目标文件,通常用于编译不包含主程序的子程序文件。件,通常用于编译不包含主程序的子程序文件。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述-o output_filename,确定输出文件的名称,确定输出文件的名称output_filename,同时这个名称不能和源文件同,同时这个名称不能和源文件同名。如果不给出这个选项,名。如果不给出这个选项,gcc就给出预设的可执就给出预设的可执行文件行文件a.out-g,产生符号调试工具,产生符号调试工具(GNU的的gdb)所必要的符号所必要的符号资讯,要想对源代码进行调试,我们就必须加入资讯,要想对源代码进行调试,我们就必须加入这个选项。这个选项。-O,对程序进行优化编译、连接,采用这个选项,对程序进行优化编译、连接,采用这个选项,整个源代码会在编译、连接过程中进行优化处理,整个源代码会在编译、连接过程中进行优化处理,这样产生的可执行文件的执行效率可以提高,但这样产生的可执行文件的执行效率可以提高,但是,编译、连接的速度就相应地要慢一些。是,编译、连接的速度就相应地要慢一些。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述-O2,比-O更好的优化编译、连接,当然整个编译、连接过程会更慢。-Wall,编译警告选项,在编译的过程中如果gcc遇到一些它认为可能会发生错误的地方就会提出一些相应的警告和提示信息。提示我们注意这个地方是不是有什么失误导致的错误。-Idirname,将dirname所指出的目录加入到程序头文件目录列表中,是在预编译过程中使用的参数。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述C程序中的头文件包含两种情况程序中的头文件包含两种情况 A)#include B)#include“myinc.h”其中,其中,A类使用尖括号类使用尖括号(),B类使用双引类使用双引号号(“”)。对于。对于A类,预处理程序类,预处理程序cpp在系统预设包在系统预设包含文件目录含文件目录(如如/usr/include)中搜寻相应的文件。中搜寻相应的文件。而对于而对于B类,类,cpp在当前目录中搜寻头文件,在当前目录中搜寻头文件,这个选项的作用是告诉这个选项的作用是告诉cpp,如果在当前目录中没,如果在当前目录中没有找到需要的文件,有找到需要的文件,就到指定的就到指定的dirname目录中目录中去寻找。在程序设计中,如果我们需要的这种包去寻找。在程序设计中,如果我们需要的这种包含文件分别分布在不同的目录中,含文件分别分布在不同的目录中,就需要逐个使就需要逐个使用用-I选项给出搜索路径。选项给出搜索路径。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述-Ldirname,将,将dirname所指出的目录加入到程序所指出的目录加入到程序函数档案库文件的目录列表中,是在连接过程中函数档案库文件的目录列表中,是在连接过程中使用的参数。使用的参数。在预设状态下,连接程序在预设状态下,连接程序ld 在系统的预设路在系统的预设路径中径中(如如/usr/lib)寻找所需要的档案库文件,这个寻找所需要的档案库文件,这个选项告诉连接程序,首先到选项告诉连接程序,首先到-L指定的目录中去寻指定的目录中去寻找,然后到系统预设路径中寻找,如果函数库存找,然后到系统预设路径中寻找,如果函数库存放在多个目录下,就需要依次使用这个选项,给放在多个目录下,就需要依次使用这个选项,给出相应的存放目录。出相应的存放目录。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述-lname,在连接时,装载名字为,在连接时,装载名字为“libname.a的的函数库,该函数库位于系统预设的目录或者由函数库,该函数库位于系统预设的目录或者由-L选项确定的目录下。选项确定的目录下。例如,例如,-lm表示连接名为表示连接名为“libm.a的数学函数库。的数学函数库。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述GCC编译器如果发现源程序中有错误,编译器如果发现源程序中有错误,就无法继续进行,也无法生成最终的可执行就无法继续进行,也无法生成最终的可执行文件。为了便于修改,文件。为了便于修改,gcc给出错误资讯,给出错误资讯,我们必须对这些错误资讯逐个进行分析、处我们必须对这些错误资讯逐个进行分析、处置,并修改相应的语言,才能保证源代码的置,并修改相应的语言,才能保证源代码的正确编译连接。正确编译连接。gcc给出的错误给出的错误资讯一般可以分为四大类,分别是资讯一般可以分为四大类,分别是:C语法错误语法错误 头文件错误头文件错误 档案库错误档案库错误 未定义符号未定义符号 返回本节返回本节第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述GCC的使用实例的使用实例学习的最好方法是实践学习的最好方法是实践,下面我们就开始一个非常下面我们就开始一个非常简单的简单的Hello World实例。实例。#include int main(int argc,char*argv)char*pszStr=Hello worldn;printf(Hello,worldn);exit(0);第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述1使用缺省方法编译该程序使用缺省方法编译该程序 gcc hello.c 使用缺省方法编译以后,会生成一个使用缺省方法编译以后,会生成一个a.out程序程序2使用使用o参数参数 gcc o hello hello.c 使使-o参数编译以后,会生成一个参数编译以后,会生成一个hello执行文件。执行文件。第第2 2章章 嵌入式嵌入式LINUXLINUX概述概述3使用使用Wall选项查看是否有警告信息选项查看是否有警告信息 gcc-o hello hello.c-Wall hello.c:In function mainhello.c:5:warning:unused variable pszStr hello.c:8:warning:control reaches end of non-void function 两个警告信息。一个是第五行申明的变量两个警告信息。一个是第五行申明的变量*pszStr没有被使用到,我们可以删除,一个是我没有被使用到,我们可以删除,一个是我们申明函数返回们申明函数返回int型,但是没有返回一个返回值。型,但是没有返回一个返回值。返回本节返回本节
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!