7.6linux基础学习

(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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值