Linux C第一课

来源:互联网 发布:平板splashtop优化 编辑:程序博客网 时间:2024/05/17 22:38

一、现代社会,当我们程序猿拿到一部智能设备,心里在想什么呢?当然是这个智能设备是由什么组成的啦。智能设备的组成包括它的硬件平台和软件平台。硬件平台就是指CPU,CPU有很多系列,常见的有51单片机,avr,ARM,mips,PowerPC等,其中ARM又分为ARM7(stm32),ARM9(2440,2451),ARM11(6410三星),和cotex-A系列;x86又分为386和486。软件平台就是操作系统,现在流行的操作系统有Windows,linux,ISO,Android,wince,VxWorks,μcosii等。
二、那么什么是嵌入式呢?嵌入式就是在已有的平台上移植(修改操作系统源码)操作系统(内核)后做相应的开发(应用软件开发,系统软件开发)。操作系统是用来管理硬件资源和软件资源的。目前做应用软件开发需要熟练掌握一门语言并且熟悉一款操作系统,而做系统软件开发则需要我们精通C语言,熟悉汇编,理解操作系统的实现和熟悉硬件操作原理。
三、现在有操作系统的就称为嵌入式,那么嵌入式的优势在哪里呢?首先操作系统提高了软件的可移植性,其次使得软件开发人员不在需要熟悉硬件的工作原理,再次操作系统提供了多任务机制(进程和线程),而且嵌入式技术提供了丰富的网络协议栈和很多开源 的工具,库和软件。
四、嵌入式操作系统的分类:按收费模式划分:①商用型:VxWorks(美国军方用,航空航天),Wince(Windows的一款,常用于出租车计价器,POS机,超市收银等)②免费性:Linux,μcLinux,μC/OS-II(源代码较少);按实时性划分(规定时间内完成规定操作):①硬实时:VxWorks②软实时:Wince,RTLinux,μC/OS-II(通过软件调度算法来实现)③无实时:Embedded Linux。
五、促进Linux发展的三大因素:第一、GPL计划,开源社区里的交流,更好的维护了Linux操作系统;第二、POSIX标准,在此标准下产生的软的软件都可以兼容Unix和Linux;第三、DNU计划,提出Linux于Unix的不同之处。
六、GCC编译器
GNU CC(简称GCC),它是GNU项目中符合ANSI C标准的编译系统,能够编译多种语言,包括C,C++,JAVA,Object C。gcc 是一个交叉平台编译器,它能够在当前CPU平台上为多种不同体系结构的硬件平台开发软件(不同的CPU哟不同的汇编,生成不同的机器码)。
从.c文件到可执行文件要经历四个过程:预处理阶段,编译,汇编,链接。
gcc -E 预处理阶段生成.i文件。预处理阶段主要完成三个功能:加载头文件,宏替换,条件编译,总得来说就是处理#开头的语句
gcc -c编译阶段生成.o文件即目标文件,分为可重入目标文件和不可重入目标文件。可重入即可以重复进入,目标文件在链接的过程中可以被中断,主要用于多任务环境中,不依赖于任何外部环境,切编译结果可预测,没有静态数据结构。不可重入目标文件的特征:用到了静态数据结构(内部存储器),malloc,free和标准I/O函数等,且多次链接的结果不一定相同。
gcc -S汇编阶段生成 .s文件
gcc file.c -o file 链接阶段 链接阶段是不可以停止的,主要操作:符号(函数名、变量名都称为符号)的导入,文件的加载(链接)

gcc -w file 关闭所有警告
gcc -Wall file 打开所有警告

gcc 的优化选项
-O0 默认优化选项,不优化
-O1 一级优化,减少目标文件大小以及执行时间,且不会是编译时 间显著增加(在编译大程序时显著增加编译内存的使用)
-O2 二级优化,包含几乎所有优化,编译器不执行循环展开以及函数内联
-Os 专门优化目标文件大小(执行所有不增加目标文件大小的-O2优化选项)
-O3 在O2的基础上增加了产生inline函数,使用寄存器等优化技术
** #include

0 0
原创粉丝点击