《嵌入式Linux開(kāi)發(fā)實(shí)踐教程 第2版》 課件 項(xiàng)目6 嵌入式Linux C 開(kāi)發(fā)_第1頁(yè)
《嵌入式Linux開(kāi)發(fā)實(shí)踐教程 第2版》 課件 項(xiàng)目6 嵌入式Linux C 開(kāi)發(fā)_第2頁(yè)
《嵌入式Linux開(kāi)發(fā)實(shí)踐教程 第2版》 課件 項(xiàng)目6 嵌入式Linux C 開(kāi)發(fā)_第3頁(yè)
《嵌入式Linux開(kāi)發(fā)實(shí)踐教程 第2版》 課件 項(xiàng)目6 嵌入式Linux C 開(kāi)發(fā)_第4頁(yè)
《嵌入式Linux開(kāi)發(fā)實(shí)踐教程 第2版》 課件 項(xiàng)目6 嵌入式Linux C 開(kāi)發(fā)_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

管理Glibc庫(kù)文件物聯(lián)網(wǎng)學(xué)院平震宇GlibcGlibc(GNUCLibrary)是GNU發(fā)布的C語(yǔ)言標(biāo)準(zhǔn)庫(kù),即C語(yǔ)言運(yùn)行庫(kù)。Glibc是GNU工具鏈的關(guān)鍵組件用Glibc

做為系統(tǒng)的C語(yǔ)言運(yùn)行庫(kù),是Linux演進(jìn)的一個(gè)重要里程碑

Glibc主要包含以下內(nèi)容動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)函數(shù)庫(kù)頭文件函數(shù)庫(kù)說(shuō)明文件字集轉(zhuǎn)換模組與區(qū)域化資料庫(kù)時(shí)區(qū)資料庫(kù)Glibc主要包含以下內(nèi)容動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù) /lib與/usr/lib函數(shù)庫(kù)頭文件

/usr/include函數(shù)庫(kù)說(shuō)明文件

/usr/man

/usr/share/manGlibc主要包含以下內(nèi)容字集轉(zhuǎn)換模組與區(qū)域化資料庫(kù)/usr/lib/gconv/內(nèi)含大量的字集轉(zhuǎn)換模塊,各種字集及編碼方式與系統(tǒng)的基底字集之間的轉(zhuǎn)換

/usr/lib/locale,內(nèi)含以系統(tǒng)基底字集寫(xiě)成的區(qū)域化資料庫(kù)(locale)

/usr/share/locale/,內(nèi)含可跨平臺(tái)使用的區(qū)域化資料,主要是各應(yīng)用程式的信息翻譯部分/usr/share/i18n/,其內(nèi)容是各區(qū)域化資料庫(kù)的原始碼,以及系統(tǒng)支援的內(nèi)碼對(duì)應(yīng)表等時(shí)區(qū)資料庫(kù)

/usr/share/zoneinfo目錄下包含世界各地時(shí)區(qū)與格林威治時(shí)間的轉(zhuǎn)換資料GlibcGlibc是Linux平臺(tái)C程序運(yùn)行的基礎(chǔ),提供一組頭文件和一組庫(kù)文件,最基本、最常用的C標(biāo)準(zhǔn)庫(kù)函數(shù)和系統(tǒng)函數(shù)在libc.so庫(kù)文件中。數(shù)學(xué)計(jì)算的C程序

libm.so多線(xiàn)程的C程序

libpthread.so

GlibcGlibc的庫(kù)有靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)兩個(gè)版本,都位于/lib和/usr/lib目錄中,靜態(tài)庫(kù)的文件以.a為后綴名,動(dòng)態(tài)庫(kù)以.so為后綴名。

lddldd命令用于判斷一個(gè)程序必須使用的動(dòng)態(tài)庫(kù)。參數(shù)說(shuō)明:

--version打印ldd的版本號(hào)

-v--verbose打印所有信息,例如包括符號(hào)的版本信息

-d--data-relocs執(zhí)行符號(hào)重部署,并報(bào)告缺少的目標(biāo)對(duì)象(只對(duì)ELF格式適用)

-r--function-relocs對(duì)目標(biāo)對(duì)象和函數(shù)執(zhí)行重新部署,并報(bào)告缺少的目標(biāo)對(duì)象和函數(shù)(只對(duì)ELF格式適用)

ldconfigldconfig是一個(gè)動(dòng)態(tài)鏈接庫(kù)管理命令,其目的為了讓動(dòng)態(tài)鏈接庫(kù)為系統(tǒng)所共享。ldconfig的主要用途:默認(rèn)搜尋/lilb和/usr/lib,以及配置文件/etc/ld.so.conf內(nèi)所列的目錄下的庫(kù)文件。搜索出可共享的動(dòng)態(tài)鏈接庫(kù),庫(kù)文件的格式為:lib***.so.**,進(jìn)而創(chuàng)建出動(dòng)態(tài)裝入程序(ld.so)所需的連接和緩存文件。緩存文件默認(rèn)為/etc/ld.so.cache,該文件保存已排好序的動(dòng)態(tài)鏈接庫(kù)名字列表。ldconfig通常在系統(tǒng)啟動(dòng)時(shí)運(yùn)行,而當(dāng)用戶(hù)安裝了一個(gè)新的動(dòng)態(tài)鏈接庫(kù)時(shí),就需要手工運(yùn)行這個(gè)命令。

GCC編譯器動(dòng)態(tài)庫(kù)的搜索路徑搜索的先后順序

編譯目標(biāo)代碼時(shí)指定的動(dòng)態(tài)庫(kù)搜索路徑;環(huán)境變量

LD_LIBRARY_PATH

指定的動(dòng)態(tài)庫(kù)搜索路徑;配置文件

/etc/ld.so.conf

中指定的動(dòng)態(tài)庫(kù)搜索路徑;默認(rèn)的動(dòng)態(tài)庫(kù)搜索路徑

/lib

;默認(rèn)的動(dòng)態(tài)庫(kù)搜索路徑

/usr/lib

文件I/O編程物聯(lián)網(wǎng)學(xué)院平震宇文件描述符文件描述符是一個(gè)非負(fù)的整數(shù),它是一個(gè)索引值,并指向在內(nèi)核中每個(gè)進(jìn)程打開(kāi)文件的記錄表。當(dāng)打開(kāi)一個(gè)現(xiàn)存文件或創(chuàng)建一個(gè)新文件時(shí),內(nèi)核就向進(jìn)程返回一個(gè)文件描述符;當(dāng)需要讀寫(xiě)文件時(shí),也需要把文件描述符作為參數(shù)傳遞給相應(yīng)的函數(shù)。打開(kāi)文件Flag標(biāo)記O_RDONLY就表示以只讀方式打開(kāi)O_WRONLY表示以只寫(xiě)方式打開(kāi)O_RDWR表示以可讀可寫(xiě)方式打開(kāi)當(dāng)打開(kāi)已經(jīng)存在并且內(nèi)部有內(nèi)容的文件時(shí)O_APPEND標(biāo)志:以添加方式打開(kāi)文件,在打開(kāi)文件的同時(shí),文件指針指向文件的末尾,即將寫(xiě)入的數(shù)據(jù)添加到文件的末尾O_TRUNC標(biāo)志:若文件已經(jīng)存在,那么會(huì)刪除文件中的全部原有數(shù)據(jù),并且設(shè)置文件大小為0文件讀寫(xiě)控制文件讀寫(xiě)位置lseek參數(shù)fd:已經(jīng)打開(kāi)的文件描述符。offset:偏移量,每一讀寫(xiě)操作所需要移動(dòng)的距離,單位是字節(jié),可正可負(fù)(向前移,向后移)。whence:當(dāng)前位置的基點(diǎn)。SEEK_SET:當(dāng)前位置為文件的開(kāi)頭,新位置為偏移量的大小SEEK_CUR:當(dāng)前位置為文件指針的位置,新位置為當(dāng)前位置加上偏移量SEEK_END:當(dāng)前位置為文件的結(jié)尾,新位置為文件的大小lseeklseek文件開(kāi)始文件結(jié)束fcntl函數(shù)fcntl參數(shù)fd:已經(jīng)打開(kāi)的文件描述符。cmd

:不同的命令struct

flock

*lock:設(shè)置記錄鎖的具體狀態(tài)

fcntl參數(shù)F_DUPFD與dup函數(shù)功能一樣,復(fù)制由fd指向的文件描述符,調(diào)用成功后返回新的文件描述符,與舊的文件描述符共同指向同一個(gè)文件。F_GETFD讀取文件描述符close-on-exec標(biāo)志F_SETFD將文件描述符close-on-exec標(biāo)志設(shè)置為第三個(gè)參數(shù)arg的最后一位F_GETFL獲取文件打開(kāi)方式的標(biāo)志,標(biāo)志值含義與open調(diào)用一致F_SETF設(shè)置文件打開(kāi)方式為arg指定方式fcntl參數(shù)F_SETLK此時(shí)fcntl函數(shù)用來(lái)設(shè)置或釋放鎖。當(dāng)short_l_type為F_RDLCK為讀鎖,F(xiàn)_WDLCK為寫(xiě)鎖,F(xiàn)_UNLCK為解鎖。如果鎖被其他進(jìn)程占用,則返回-1;這種情況設(shè)的鎖遇到鎖被其他進(jìn)程占用時(shí),會(huì)立刻停止進(jìn)程。F_SETLKW此時(shí)也是給文件上鎖,不同于F_SETLK的是,該上鎖是阻塞方式。當(dāng)希望設(shè)置的鎖因?yàn)槠渌i而被阻止設(shè)置時(shí),該命令會(huì)等待相沖突的鎖被釋放。F_GETLK第3個(gè)參數(shù)lock指向一個(gè)希望設(shè)置的鎖的屬性結(jié)構(gòu),如果鎖能被設(shè)置,該命令并不真的設(shè)置鎖,而是只修改lock的l_type為F_UNLCK,然后返回該結(jié)構(gòu)體。如果存在一個(gè)或多個(gè)鎖與希望設(shè)置的鎖相互沖突,則fcntl返回其中的一個(gè)鎖的flock結(jié)構(gòu)。structflock標(biāo)準(zhǔn)I/O編程物聯(lián)網(wǎng)學(xué)院平震宇文件I/O與標(biāo)準(zhǔn)I/O文件I/O:文件I/O稱(chēng)之為不帶緩存的IO(unbufferedI/O)。標(biāo)準(zhǔn)I/O:基于流緩沖的,提供了三種類(lèi)型的緩存。全緩存:當(dāng)填滿(mǎn)標(biāo)準(zhǔn)I/O緩存后才進(jìn)行實(shí)際的I/O操作。

行緩存:當(dāng)輸入或輸出中遇到新行符時(shí),標(biāo)準(zhǔn)I/O庫(kù)執(zhí)行I/O操作。

不帶緩存:標(biāo)準(zhǔn)出錯(cuò)stderr。文件I/O與標(biāo)準(zhǔn)I/O

標(biāo)準(zhǔn)I/O文件I/O打開(kāi)fopen,freopen,fdopenopen關(guān)閉fcloseclose讀getc,fgetc,getchar

fgets,gets

freadread寫(xiě)putc,fputc,putchar

fputs,puts,

fwritewrite打開(kāi)文件Mode取值標(biāo)志名說(shuō)

明r或rb打開(kāi)只讀文件,該文件必須存在r+或r+b打開(kāi)可讀寫(xiě)的文件,該文件必須存在W或wb打開(kāi)只寫(xiě)文件。若文件不存在則建立該文件w+或w+b打開(kāi)可讀寫(xiě)文件。若文件不存在則建立該文件a或ab以附加的方式打開(kāi)只寫(xiě)文件。a+或a+b以附加方式打開(kāi)可讀寫(xiě)的文件。文件讀寫(xiě)文件狀態(tài)structstat網(wǎng)絡(luò)通訊編程物聯(lián)網(wǎng)學(xué)院平震宇TCP/IP協(xié)議模型TCP/IP協(xié)議模型TCP/IP協(xié)議模型Socket套接字

socket起源于Unix,而Unix/Linux基本哲學(xué)之一就是“一切皆文件”,都可以用“打開(kāi)open–>讀寫(xiě)write/read–>關(guān)閉close”模式來(lái)操作。socket就是該模式的一個(gè)實(shí)現(xiàn),socket即是一種特殊的文件,一些socket函數(shù)就是對(duì)其進(jìn)行的操作(讀/寫(xiě)IO、打開(kāi)、關(guān)閉).Socket套接字

流式套接字socket(SOCK_STREAM)數(shù)據(jù)報(bào)套接字socket(SOCK_DGRAM)原始套接字socket客戶(hù)/服務(wù)模式socket()建立一個(gè)socket連接bind()用于將本地IP地址綁定到端口號(hào)sockaddr獲取本地IP地址listen()讓Socket偵聽(tīng)傳入的連接嘗試,并指定偵聽(tīng)隊(duì)列容量accept()接收連接并返回一個(gè)新的socketconnect()初始化與另一個(gè)Socket的連接send()和recv()發(fā)送和接收數(shù)據(jù)網(wǎng)絡(luò)編程實(shí)例當(dāng)用戶(hù)從客戶(hù)端輸入“HelloServer”傳送到服務(wù)器端,服務(wù)器端發(fā)送“Hello,Client”到客戶(hù)端;如果從客戶(hù)端輸入“HelloABC”,傳送到服務(wù)器端,服務(wù)器端發(fā)送“Helloabc”到客戶(hù)端;如果從客戶(hù)端輸入“exit”,傳送到服務(wù)器端,服務(wù)器端程序退出,不向客戶(hù)端送回任何信息。網(wǎng)絡(luò)編程實(shí)例串口通訊編程物聯(lián)網(wǎng)學(xué)院平震宇并行通信與串行通信并行通信:是指利用多條數(shù)據(jù)傳輸線(xiàn)將數(shù)據(jù)的各位同時(shí)傳送優(yōu)點(diǎn):傳輸速度快缺點(diǎn):數(shù)據(jù)有多少位就需要多少根傳輸線(xiàn),所以在位數(shù)多、傳輸距離遠(yuǎn)時(shí),通信線(xiàn)路復(fù)雜,成本高。串行通信:是指利用一條傳輸線(xiàn)將數(shù)據(jù)一位位地順序傳送。優(yōu)點(diǎn):這種通信方式的數(shù)據(jù)傳輸只需一、兩根傳輸線(xiàn),通信線(xiàn)路簡(jiǎn)單,成本低,特別適用于遠(yuǎn)程通信缺點(diǎn):傳輸速度較慢。多用于傳輸距離長(zhǎng)、低速度的場(chǎng)合。串口簡(jiǎn)介

RS-232-C:也稱(chēng)標(biāo)準(zhǔn)串口,是目前最常用的一種串行通訊接口RS-422:為改進(jìn)RS-232通信距離短、速率低的缺點(diǎn)RS-485:為擴(kuò)展應(yīng)用范圍,EIA又于1983年在RS-422基礎(chǔ)上制定了RS-485標(biāo)準(zhǔn),增加了多點(diǎn)、雙向通信能力USB:通用串行總線(xiàn),用于規(guī)范電腦與外部設(shè)備的連接和通訊。是應(yīng)用在PC領(lǐng)域的接口技術(shù)。RJ-45:RJ-45接口,適用于由雙絞線(xiàn)構(gòu)建的網(wǎng)絡(luò),以太網(wǎng)集線(xiàn)器都會(huì)提供這種端口串行接口簡(jiǎn)稱(chēng)串口,也稱(chēng)串行通信接口(通常指COM接口),是采用串行通信方式的擴(kuò)展接口。9芯D型插座(DB9)針腳名稱(chēng)全名3TDTransmitData2RDReceiveData7RTSRequestToSend8CTSClearToSend6DSRDataSetReady4DTRDataTerminalReady1CDDataCarrierDetect9RIRingIndicator5-SignalGround串口文件在linux中,針對(duì)所有的周邊設(shè)備都提供了設(shè)備文件供用戶(hù)訪問(wèn),所以如果要訪問(wèn)串口,只要打開(kāi)相關(guān)的設(shè)備文件即可。在Linux下串口文件是位于/dev下的COM1串口一為/dev/ttyS0COM2串口二為/dev/ttyS1串口設(shè)置在使用串口之前必須設(shè)置相關(guān)配置,包括:波特率、數(shù)據(jù)位、校驗(yàn)位、停止位等c_cflag常量名稱(chēng)

設(shè)置波特率設(shè)置數(shù)據(jù)位設(shè)置奇偶校驗(yàn)位設(shè)置停止位

激活配置

打開(kāi)串口fd

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論