《嵌入式Linux开发实践教程 第2版》 课件 项目6 嵌入式Linux C 开发_第1页
《嵌入式Linux开发实践教程 第2版》 课件 项目6 嵌入式Linux C 开发_第2页
《嵌入式Linux开发实践教程 第2版》 课件 项目6 嵌入式Linux C 开发_第3页
《嵌入式Linux开发实践教程 第2版》 课件 项目6 嵌入式Linux C 开发_第4页
《嵌入式Linux开发实践教程 第2版》 课件 项目6 嵌入式Linux C 开发_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

管理Glibc库文件物联网学院平震宇GlibcGlibc(GNUCLibrary)是GNU发布的C语言标准库,即C语言运行库。Glibc是GNU工具链的关键组件用Glibc

做为系统的C语言运行库,是Linux演进的一个重要里程碑

Glibc主要包含以下内容动态库与静态库函数库头文件函数库说明文件字集转换模组与区域化资料库时区资料库Glibc主要包含以下内容动态库与静态库 /lib与/usr/lib函数库头文件

/usr/include函数库说明文件

/usr/man

/usr/share/manGlibc主要包含以下内容字集转换模组与区域化资料库/usr/lib/gconv/内含大量的字集转换模块,各种字集及编码方式与系统的基底字集之间的转换

/usr/lib/locale,内含以系统基底字集写成的区域化资料库(locale)

/usr/share/locale/,内含可跨平台使用的区域化资料,主要是各应用程式的信息翻译部分/usr/share/i18n/,其内容是各区域化资料库的原始码,以及系统支援的内码对应表等时区资料库

/usr/share/zoneinfo目录下包含世界各地时区与格林威治时间的转换资料GlibcGlibc是Linux平台C程序运行的基础,提供一组头文件和一组库文件,最基本、最常用的C标准库函数和系统函数在libc.so库文件中。数学计算的C程序

libm.so多线程的C程序

libpthread.so

GlibcGlibc的库有静态库和动态库两个版本,都位于/lib和/usr/lib目录中,静态库的文件以.a为后缀名,动态库以.so为后缀名。

lddldd命令用于判断一个程序必须使用的动态库。参数说明:

--version打印ldd的版本号

-v--verbose打印所有信息,例如包括符号的版本信息

-d--data-relocs执行符号重部署,并报告缺少的目标对象(只对ELF格式适用)

-r--function-relocs对目标对象和函数执行重新部署,并报告缺少的目标对象和函数(只对ELF格式适用)

ldconfigldconfig是一个动态链接库管理命令,其目的为了让动态链接库为系统所共享。ldconfig的主要用途:默认搜寻/lilb和/usr/lib,以及配置文件/etc/ld.so.conf内所列的目录下的库文件。搜索出可共享的动态链接库,库文件的格式为:lib***.so.**,进而创建出动态装入程序(ld.so)所需的连接和缓存文件。缓存文件默认为/etc/ld.so.cache,该文件保存已排好序的动态链接库名字列表。ldconfig通常在系统启动时运行,而当用户安装了一个新的动态链接库时,就需要手工运行这个命令。

GCC编译器动态库的搜索路径搜索的先后顺序

编译目标代码时指定的动态库搜索路径;环境变量

LD_LIBRARY_PATH

指定的动态库搜索路径;配置文件

/etc/ld.so.conf

中指定的动态库搜索路径;默认的动态库搜索路径

/lib

;默认的动态库搜索路径

/usr/lib

文件I/O编程物联网学院平震宇文件描述符文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。打开文件Flag标记O_RDONLY就表示以只读方式打开O_WRONLY表示以只写方式打开O_RDWR表示以可读可写方式打开当打开已经存在并且内部有内容的文件时O_APPEND标志:以添加方式打开文件,在打开文件的同时,文件指针指向文件的末尾,即将写入的数据添加到文件的末尾O_TRUNC标志:若文件已经存在,那么会删除文件中的全部原有数据,并且设置文件大小为0文件读写控制文件读写位置lseek参数fd:已经打开的文件描述符。offset:偏移量,每一读写操作所需要移动的距离,单位是字节,可正可负(向前移,向后移)。whence:当前位置的基点。SEEK_SET:当前位置为文件的开头,新位置为偏移量的大小SEEK_CUR:当前位置为文件指针的位置,新位置为当前位置加上偏移量SEEK_END:当前位置为文件的结尾,新位置为文件的大小lseeklseek文件开始文件结束fcntl函数fcntl参数fd:已经打开的文件描述符。cmd

:不同的命令struct

flock

*lock:设置记录锁的具体状态

fcntl参数F_DUPFD与dup函数功能一样,复制由fd指向的文件描述符,调用成功后返回新的文件描述符,与旧的文件描述符共同指向同一个文件。F_GETFD读取文件描述符close-on-exec标志F_SETFD将文件描述符close-on-exec标志设置为第三个参数arg的最后一位F_GETFL获取文件打开方式的标志,标志值含义与open调用一致F_SETF设置文件打开方式为arg指定方式fcntl参数F_SETLK此时fcntl函数用来设置或释放锁。当short_l_type为F_RDLCK为读锁,F_WDLCK为写锁,F_UNLCK为解锁。如果锁被其他进程占用,则返回-1;这种情况设的锁遇到锁被其他进程占用时,会立刻停止进程。F_SETLKW此时也是给文件上锁,不同于F_SETLK的是,该上锁是阻塞方式。当希望设置的锁因为其他锁而被阻止设置时,该命令会等待相冲突的锁被释放。F_GETLK第3个参数lock指向一个希望设置的锁的属性结构,如果锁能被设置,该命令并不真的设置锁,而是只修改lock的l_type为F_UNLCK,然后返回该结构体。如果存在一个或多个锁与希望设置的锁相互冲突,则fcntl返回其中的一个锁的flock结构。structflock标准I/O编程物联网学院平震宇文件I/O与标准I/O文件I/O:文件I/O称之为不带缓存的IO(unbufferedI/O)。标准I/O:基于流缓冲的,提供了三种类型的缓存。全缓存:当填满标准I/O缓存后才进行实际的I/O操作。

行缓存:当输入或输出中遇到新行符时,标准I/O库执行I/O操作。

不带缓存:标准出错stderr。文件I/O与标准I/O

标准I/O文件I/O打开fopen,freopen,fdopenopen关闭fcloseclose读getc,fgetc,getchar

fgets,gets

freadread写putc,fputc,putchar

fputs,puts,

fwritewrite打开文件Mode取值标志名说

明r或rb打开只读文件,该文件必须存在r+或r+b打开可读写的文件,该文件必须存在W或wb打开只写文件。若文件不存在则建立该文件w+或w+b打开可读写文件。若文件不存在则建立该文件a或ab以附加的方式打开只写文件。a+或a+b以附加方式打开可读写的文件。文件读写文件状态structstat网络通讯编程物联网学院平震宇TCP/IP协议模型TCP/IP协议模型TCP/IP协议模型Socket套接字

socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,都可以用“打开open–>读写write/read–>关闭close”模式来操作。socket就是该模式的一个实现,socket即是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭).Socket套接字

流式套接字socket(SOCK_STREAM)数据报套接字socket(SOCK_DGRAM)原始套接字socket客户/服务模式socket()建立一个socket连接bind()用于将本地IP地址绑定到端口号sockaddr获取本地IP地址listen()让Socket侦听传入的连接尝试,并指定侦听队列容量accept()接收连接并返回一个新的socketconnect()初始化与另一个Socket的连接send()和recv()发送和接收数据网络编程实例当用户从客户端输入“HelloServer”传送到服务器端,服务器端发送“Hello,Client”到客户端;如果从客户端输入“HelloABC”,传送到服务器端,服务器端发送“Helloabc”到客户端;如果从客户端输入“exit”,传送到服务器端,服务器端程序退出,不向客户端送回任何信息。网络编程实例串口通讯编程物联网学院平震宇并行通信与串行通信并行通信:是指利用多条数据传输线将数据的各位同时传送优点:传输速度快缺点:数据有多少位就需要多少根传输线,所以在位数多、传输距离远时,通信线路复杂,成本高。串行通信:是指利用一条传输线将数据一位位地顺序传送。优点:这种通信方式的数据传输只需一、两根传输线,通信线路简单,成本低,特别适用于远程通信缺点:传输速度较慢。多用于传输距离长、低速度的场合。串口简介

RS-232-C:也称标准串口,是目前最常用的一种串行通讯接口RS-422:为改进RS-232通信距离短、速率低的缺点RS-485:为扩展应用范围,EIA又于1983年在RS-422基础上制定了RS-485标准,增加了多点、双向通信能力USB:通用串行总线,用于规范电脑与外部设备的连接和通讯。是应用在PC领域的接口技术。RJ-45:RJ-45接口,适用于由双绞线构建的网络,以太网集线器都会提供这种端口串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。9芯D型插座(DB9)针脚名称全名3TDTransmitData2RDReceiveData7RTSRequestToSend8CTSClearToSend6DSRDataSetReady4DTRDataTerminalReady1CDDataCarrierDetect9RIRingIndicator5-SignalGround串口文件在linux中,针对所有的周边设备都提供了设备文件供用户访问,所以如果要访问串口,只要打开相关的设备文件即可。在Linux下串口文件是位于/dev下的COM1串口一为/dev/ttyS0COM2串口二为/dev/ttyS1串口设置在使用串口之前必须设置相关配置,包括:波特率、数据位、校验位、停止位等c_cflag常量名称

设置波特率设置数据位设置奇偶校验位设置停止位

激活配置

打开串口fd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论