您的位置:首页 > 运维架构 > Linux

7.6linux基础学习

2016-07-07 09:45 537 查看
(1)硬件平台:CPU (51,arr,ARM,mips,powerpc,x86)

     软件平台:windows,linux,andriod,ios,vxworks,wince,ucosii

     1.软件-------》硬件

     2.软件-------》操作系统------》硬件

     第二种方法的优势:硬件改变,只要操作系统不变,应用层软件不需要改变。

     嵌入式核心:操作系统(操作系统的核心:内核)

     有操作系统的优势:(1)提高软件的移植性

                       (2)使软件开发不需要再熟悉硬件工作原理

                       (3)提供多任务机制(进程&线程)

                       (4)提供丰富的网络协议栈

                       (5)提供很多开源的工具,库,以及软件

(2)硬实时性:Vxworks

     软实时性:Wince, RTLinux

     无实时性:Embedded,Linux

(3)gcc编译器(全称GNU CC)是GNU项目中符合ANSI C标准的编译系统

     GPL协议

     POSIX标准(同时在Linux和unix上运行)

     GLU计划(GNU is not unix)

(4)c文件到可执行文件的步骤

    1.预处理:进行一些代码文本的替换

       (1)将所有的#define删除,并展开所有的宏定义

          (2)处理所有的条件预编译指令,如:#if ?#ifdef #elif #else #endif

          (3)处理#include预编译指令,将被包含的文件插进到该指令的位置,这个过程是递归的

          (4)删除所有的注释//与/* */

          (5)添加行号与文件名标识,以便产生调试用的行号信息以及编译错误或警告时能够显示行号

          (6)保留所有的#pragma编译器指令,因为编译器需要使用它们

        范例:gcc -E hello.c>hello.i

             “>”是重定向 

                   “-o”是重命名

    2.编译:把预处理完的文件进行一系列词法分析(lex)、语法分析(yacc)、语义分析及优化后生成汇编代码,这个过程是程序构建的核心部分。

      范例:gcc -c hello.c 

    3.?汇编:汇编代码->机器指令。

      范例:gcc -s hello.c

    4.链接:这里讲的链接,严格说应该叫静态链接。多个目标文件、库->最终的可执行文件(拼合的过程)。

(5)加声明提高效率

     范例:gcc -o1/-o2/-o3 optimize.c -o optimize(一级/二级/三级优化)

     <>只在系统的头文件目录寻找,找不到就报错

     “”现在当前目录寻找,再到系统头文件目录找,找不到报错

(6)库文件(1.静态库 2.动态库):无法直接访问里面的内容,但可以使用

     静态库优点:执行效率高,布局方便

     动态库优点:易于软件升级,编译效率高,库体积小

     (两者的优缺点相对)

     范例:创静态库:#gcc -c add.c

                     #ar rcs libadd.a add.o(把add.o封装到库)

                     #gcc main.c -ladd -L/root/0706/           

     -l用于链接库 -L指定链接到头文件的搜索路径

           创动态库:#gcc -shared -fPIC add.c -o libadd.so

                     #gcc main.c /root/0706/libadd.so -o add 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: