嵌入式linux應(yīng)用程序開發(fā)教程版_第1頁
嵌入式linux應(yīng)用程序開發(fā)教程版_第2頁
嵌入式linux應(yīng)用程序開發(fā)教程版_第3頁
嵌入式linux應(yīng)用程序開發(fā)教程版_第4頁
嵌入式linux應(yīng)用程序開發(fā)教程版_第5頁
已閱讀5頁,還剩397頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

《嵌入式Linux應(yīng)用程序開發(fā)標(biāo) 1Linux快速入 能夠獨立設(shè)置Linux環(huán)境變量Linux自由開源軟件在嵌入式應(yīng)用上,受到青睞,Linux日益成為主流的嵌入式操作系統(tǒng)之一。隨著摩托羅拉手A760、IBMWatchPadPDAZaurus等一款款高性能“智能數(shù)碼產(chǎn)品”的出現(xiàn),以及Motolola、三星、MontaVista、飛利浦、Nokia、IBM、SUNLinux的Linux的開發(fā)工作,成熟的嵌入式Linux產(chǎn)品不斷涌現(xiàn)。Linux系統(tǒng)發(fā)展如此迅速。業(yè)界歸納為三大原因︰第一,Linux在嵌入式系統(tǒng)所需的實時性、電源管理等技術(shù)不斷發(fā)展;第二,國際標(biāo)準(zhǔn)組織(如OSDL、CELF等)持續(xù)建立嵌入Linux相關(guān)開發(fā)工具、系統(tǒng)。嵌入式Linux以年費訂閱方式為主,與其他的以產(chǎn)品利潤為收入方式的嵌入式系統(tǒng)不同,彈性的銷售策略,助其成功地逐年提高市場占有率,從200446.8%擴大到200756.4%。LinuxMontavista,收購了Paource的愛可信和奇趣科技等,加強了LinuxLinuxLinux廠商已經(jīng)形成了Linux簡單地說,Linux是指一套免費使用和自由的類UNIX操作系統(tǒng)。人們通常所說的Linux是LinusTorvalds所寫的Linux操作系統(tǒng)內(nèi)核。Linus還是芬蘭赫爾辛基大學(xué)的一名學(xué)生,他主修的課程中有一門課是操作系統(tǒng),而且這門課是專MinixUNIX系統(tǒng)。Minix是一款僅為教Minix的眾多使用者一樣,Linus也希望能給它添加一些在之后的幾個月里,Linus根據(jù)實際的需要編寫了磁盤驅(qū)動程序以便組的文件,又編寫了個聯(lián)網(wǎng)Linux的內(nèi)核FSF(FreeSoftwareFoundation)資助發(fā)起的GNU(GNU’sNotUNIX)的自由軟件精神不謀而合。NU是為了推廣自由軟件的精神以實現(xiàn)一個自由的操作系統(tǒng),然后從應(yīng)用程序開始,實現(xiàn)其內(nèi)核。而當(dāng)時Linux的優(yōu)良性能備受NU的賞識,于是NU就決定采用Linus及其開發(fā)者的內(nèi)核。在他們的共同努力下,LinuxenralubcLne(L)協(xié)議,這是最開放也是最嚴格的協(xié)議方式,這個協(xié)議規(guī)定了源碼必須可以無償?shù)墨@取并且修改。因此,從嚴格意義上說,Linux應(yīng)該叫做NULinux,其中許多重要的工具如gcc、gdb、ake、ecs等都是NU貢獻的。MMU.xx。小小知識識 此整都惠該源成前。GPLGL協(xié)議是GNU組織、 的一種 協(xié)議,遵守這個協(xié)議的軟件以自由地獲取、查看、使用其源代碼。GL協(xié)議是整個開源世界的精神基礎(chǔ)。Linuxx.y.zz-wwwxy為偶數(shù)時測試版本為3個數(shù)字加上測試號,如2.4.12-rc1 的Linux內(nèi)核版本可 作為嵌入式操作系統(tǒng)的優(yōu)勢Linux系統(tǒng)的發(fā)展過程可以看出,Linux從最開始就是一個開放的系統(tǒng),并且它始終遵循著源代碼開放低成本開發(fā)系統(tǒng)LinuxLinux的源碼。這樣一方面大大降低了開發(fā)的成本,另一方面可應(yīng)用于多種硬件平臺LinuxX86、PowerPC、ARM、Xscale、MIPS、SH、68K、Alpha、Sparc等多種體系結(jié)構(gòu),并且已經(jīng)被移植到多種硬件平臺。這對于經(jīng)費、時間受限制的研究與開發(fā)項目是很有的。Linux采用一個可定制的內(nèi)核Linux具有獨特的內(nèi)核模塊機制,它可以根據(jù)用戶的需要,實時地將某些模塊插入到內(nèi)核中或者從內(nèi)核中移走,并能根據(jù)嵌入式設(shè)備的個性需要量體裁衣。經(jīng)裁減的Liux內(nèi)核最小可達到15KB以下,尤其適合嵌入式領(lǐng)域中資源受限的實際情況。當(dāng)前的2.6內(nèi)核加入了許多嵌入式友好特性。性能優(yōu)Linux系統(tǒng)內(nèi)核精簡、高效并且穩(wěn)定,能夠充分發(fā)揮硬件的功能,因此它比其他操作系統(tǒng)的運行效率更高。在個人計算機上使用Liux,可以將它作為工作站。它也非常適合在嵌入式領(lǐng)域中應(yīng)用,對比其他操作系統(tǒng),它占用的資源更少,運行更穩(wěn)定,速度更快。良好的網(wǎng)絡(luò)支持Linux版由于Linux屬于GNU系統(tǒng),而這個系統(tǒng)采用GPL協(xié)議,了源代碼的公開,于是眾多組織或公司在Linux內(nèi)核源代碼的基礎(chǔ)上進行了一些必要的修改加工,然后再開發(fā)一些配套的軟件,并把它整合成一個自己的發(fā)布版Linux。除去非商業(yè)組織Debian開發(fā)的DebianGNU/Linux外,的RedHat公司了RedHatLinux,法國的Mandrake公司了MandrakeLinux,德國的SUSE公司了SUSELinux,國內(nèi)眾多公司也了中文版的Linux,如著名的Linux。Linux目前已經(jīng)有超過250個版本。Red國內(nèi),乃至是全世界的Linux用戶最熟悉的版想必就是RedHat了。RedHat最早是由BobYoung和MarcEwing在1995年創(chuàng)建的。目前RedHat分為兩個系列:由RedHat公司提供技術(shù)支持和更新的RedHatEnterpriseLinux(RHEL,RedHat的企業(yè)版FedoraCore。RedHat企業(yè)版有3個版本——AS、ES和WS。AS是其能最為強大和完善的版本。而正統(tǒng)的桌面版主頁 /(IanMurdock)DebianLinux及其他開放性源代碼操作系統(tǒng)的精神一樣,都是由超過800位通過互聯(lián)網(wǎng)合作開發(fā)而成的一直以來,DebianGNU/Linux被認為是最正宗的Linux發(fā)行版本,而且它是一個完全免費、高質(zhì)量的且與UNIX兼容的操作系統(tǒng)。(Stable(Unstable要。Debian也是最受歡迎的嵌入式Linux之一。主頁:國內(nèi)的版本及其如何學(xué)習(xí)Linux上的應(yīng)用開發(fā),相信有編程語言經(jīng)驗的讀者一定會認同這一點。因此,在本以下列出了國內(nèi)的一些Linux: Linux之前,還需要了解一下在Linux安裝過程中可能遇到的一些基本知識以及它與Windows的區(qū)別。文件系統(tǒng)、分區(qū)和掛載Lnxdws大的區(qū)別,Wdows文件系統(tǒng)是以驅(qū)動器的盤符為基礎(chǔ)的,而且每一個與相應(yīng)的分區(qū)對應(yīng),例如Ex文件和外部設(shè)備(如硬盤、光驅(qū)等)都是以文件的形式掛在這個文件樹上,例如“/usr/localWndowsWnwsLnx1.11.2圖1.1Linux 圖1.2Windows Linux中把每一個分區(qū)和某一個對應(yīng),以后再對這個的操作就是對這個分區(qū)的操作,這樣就實現(xiàn)了硬件管理和軟件管理的統(tǒng)一。這個把分區(qū)和對應(yīng)的過程叫做掛載(Mount,想想主分區(qū)、擴展分區(qū)和邏輯分區(qū)且其主分區(qū)的數(shù)量可以是1~3個;擴展分區(qū)也就是除主分區(qū)外的分區(qū),但它不能直接使用,必須再將它劃分為若干個邏輯分區(qū)才可使用,其數(shù)量可以有01個;而邏輯分區(qū)則在數(shù)量上沒有什么限制。它們一般而言,對于先Windows的用戶,WindowsC盤是裝在主分區(qū)上的,可以Linux安裝在另一個Linux1.4所1.3Linux下主分區(qū)、擴展分區(qū)、邏輯分區(qū)示意1.4Linux安裝的分區(qū)示意盤—/dev/hda1(主分區(qū)盤—/dev/hda5(邏輯分區(qū)盤—/dev/hda6(邏輯分區(qū)SWAPLinux在硬盤上劃出一個區(qū)域來當(dāng)作臨時的內(nèi)存,而Windows操作系統(tǒng)把這個區(qū)域叫做虛擬內(nèi)存,Linux把它叫做交換分區(qū)swap。在安裝Linux建立交換分區(qū)時,一般將其設(shè)為內(nèi)存大小的2倍,當(dāng)然也可以設(shè)為更大。分區(qū)格用的XFS格式,也包括微軟公司的FATNTFS格式。GRUB是一種引導(dǎo)裝入器(類似在嵌入式中非常重要的bootloader,它負責(zé)裝入內(nèi)核并引導(dǎo)Linux系統(tǒng),GRUBLinuxGRUBLinux操作系統(tǒng)。但事實上它還可以引導(dǎo)Windows等多種操作系統(tǒng)。 來選擇啟動Windows或Linux的,因此,若此時直接在Windows下把Linux的分區(qū)刪除,會導(dǎo)致系統(tǒng)因沒有引導(dǎo)裝入器而無法啟動Windows,這點要格外 rootroot用戶。root的默認主在“/root”下,而其他普通用戶的則在“/home”Linux386的計算機已經(jīng)可以用來安裝Linux了;如果想運行X-Windows,那也只需要一臺16MB內(nèi)存、600MB硬盤的486計算機即可。這聽起來比那些需要256MB內(nèi)存、2.0GBHz的操作系統(tǒng)要好得多,事實上也正是如此。入式硬件平臺。而且Linux可以很好地支持標(biāo)準(zhǔn)配件。如果用戶的計算機是采用標(biāo)準(zhǔn)配件,那么運行Linux應(yīng)Linux 和進行查詢其次,用戶可以選擇從網(wǎng)絡(luò)安裝(如果帶寬夠大,筆者推薦從商家手中Linux的安裝盤,一般會獲得相應(yīng)的產(chǎn)品手冊、和眾多附贈的商業(yè)軟件,也可以從他人那里,放心,這是合法的,因為Linux是免費的。如果用戶需要獲得的,或需要一個不易于到的版本,那么用戶可以從Linux那么可以選擇在安裝前在Windows下刪除相應(yīng)分區(qū),也可以選擇在安裝時刪除。Linux文件及文件系統(tǒng)文件類型及文件屬性文件類LinuxWindowsLinux對和設(shè)備都當(dāng)作文件來進行處理,這樣就簡化了對各種不同類型設(shè)備的處理,提高了效率。Linux4種:普通文件、文件、文件和設(shè)備文件。普通文件同Windows中的文件一樣,是用戶日常使用最多的文件。它包括文本文件、s (s的概念在第2章會進行講解、二進制的可執(zhí)行程序和各種類型的數(shù)據(jù)。Linux中,也是文件,它們包含文件名和子名以及指向那些文件和子的指針。文件是Linux中文件名的惟一地方,當(dāng)把文件和相對應(yīng)起來時,也就是用指針將其起來之后,就構(gòu)成了文件。因此,在對文件進行操作時,一般不涉及對文件內(nèi)容的操作,而只是對名和文件另外,Linux系統(tǒng)中的每個文件都被賦予惟一的數(shù)值,而這個數(shù)值被稱作索引節(jié)點。索引節(jié)點在一個稱作索引節(jié)點表(InodeTable)中,該表在磁盤格式化時被分配。每個實際的磁盤或分區(qū)都有自己的索引Linux1賦予根,這也就是Linux的根文件在磁盤上的地址。根文件包括文件名、名及它們各自的索引節(jié)點號的列表,Linux可以通過查找從根開始的一個鏈來Linux通過來實現(xiàn)對整個文件系統(tǒng)的操作。比如,把文件從一個磁盤移到另一實際磁盤建立相應(yīng)的索引節(jié)點。它們之間的相應(yīng)關(guān)系如圖1.5所示。圖 Linux把設(shè)備都當(dāng)作文件一樣來進行操作,這樣就大大方便了用戶的使用(Linux編程中可以更為明顯地看出Linux下與設(shè)備相關(guān)的文件一般都在/dev下,它包括兩種,一種是塊設(shè)備文件,另文件屬1.6Linux文件屬性表示方 “s 而言,r該。文件系統(tǒng)類型介紹ext2數(shù)據(jù)完整性、速度以及易于轉(zhuǎn)化。ext3中采用了日志式的管理機制,它使文件系統(tǒng)具有很強的快速恢復(fù)能力,并且由于從ext2ext3無須進行格式化,因此,更加推進了ext3文件系統(tǒng)的推廣。swap文件用的文件系統(tǒng)類型必須是swap而沒有其他選擇。vfat文件NFS文件次次讀寫Flash的憂慮。ISO9660文件 文件系統(tǒng)中各主要的存放內(nèi)容,如表表 Linux文件系 結(jié) ls、mkdir等。有時,這個的內(nèi)容和/usr/bin里面的內(nèi)容一樣,它們都是放置一般用戶使grub就會用到其下的該中包含了所Linux系統(tǒng)中使用的外部設(shè)備。要注意的是,這里并不是存放外部設(shè)備的驅(qū)動程序,它實際上是一個這些外部設(shè)備的端口。由于在Linux中,所有的設(shè)備被當(dāng)作文件進行操作,比如:/dev/cdrom代表光驅(qū),用戶可以非常方便地像文件、目 x系統(tǒng)配置文件、設(shè)備配置信息、設(shè)置用戶信息等都在這個 主要存放Linux啟動和關(guān)閉時要用到的文件,在后面的啟動詳解中還會進一步 是Linux系統(tǒng)中默認的用戶工作根 。如前面在1.3.1節(jié)中所述,執(zhí)行adduser命 該 該該該 該該該。一般這是一個非常重要 ,用戶的很多應(yīng)用程序和文件都存放在這 下,類似 Linux2.6內(nèi)核的一個很大的變化。該下安裝2.6內(nèi)核中新出現(xiàn)的一個文件系統(tǒng)sysfs。sysfs文件系統(tǒng)3proc文件系統(tǒng)、針對直觀反映。當(dāng)一個內(nèi)核對象被創(chuàng)建的時候,對應(yīng)的文件和也在內(nèi)核對象子系統(tǒng)中被創(chuàng)建 實驗內(nèi)容——安裝Linux操作實驗?zāi)拷猓煜inux文件系統(tǒng) 實驗內(nèi) 實驗步(2)Linux版本 實驗結(jié)LinuxLinux文件系統(tǒng)的結(jié)構(gòu)能有一個整體的了解。本章首先介紹了Linux的歷史、嵌入式Linux操作系統(tǒng)的優(yōu)勢、Linux不同版本的區(qū)別以及如何學(xué)習(xí)Linux。在這里要著重掌握的是Linux內(nèi)核GNU的關(guān)系Linux版本號的規(guī)律,同時還要LinuxLinux,這里最關(guān)鍵的一步是分區(qū)。希望讀者能很好地掌握主分區(qū)、擴展分區(qū)的概念。LinuxWindowsLinux中“掛載”與“掛載點”的含義,這幾個都是Linux中的重要概念,希望讀者能夠切實理解其含義。LinuxLinux的文件分類、文件屬性的表示方法,并且能夠通過實際查看Linux結(jié)構(gòu)來熟悉Linux中重要的作用。如何安裝 學(xué)助馬上掃描下方華清遠見(:farsight2013),即可免費獲取價值388元的免費大禮包!包含7本嵌入式、android.、Linux、ARM、FPGA、DSP相關(guān)PDF完整版,您還可以通過華清遠見 《嵌入式Linux應(yīng)用程序開發(fā)標(biāo) 2Linux基礎(chǔ)命 掌握s 熟練使用Linux中用戶管理命令 熟練使用Linux中文 熟練使用Linux中打包壓縮相關(guān)命令 熟練使用Linux中文件比較合并相關(guān)命令熟練使用Linux中網(wǎng)絡(luò)相關(guān)命令 了解Linux的啟動過程深入了解init進程及其配置文件 能夠獨立完成在Linux中解壓縮軟件 能夠獨立定制Linux中的系統(tǒng)服務(wù)Linux在安裝完Linux再次啟動之后,就可以進入到與Windows類似的圖形化界面了。這個界面就是Linux圖形化界面X窗口系統(tǒng)(簡稱X)的一部分。要注意的是,X窗口系統(tǒng)僅僅是Linux上面的一個軟件(或者也可稱為服務(wù)它不是Linux自身的一部分。雖然現(xiàn)在的X窗口系統(tǒng)已經(jīng)與Linux整合得相當(dāng)好了,但畢竟還不能保證可靠性。另外,X窗口系統(tǒng)是一個相當(dāng)耗費系統(tǒng)資源的軟件,它會大大地降低Linux的系統(tǒng)性能。因此,若是希望更好地享受Linux所帶來的高效及高穩(wěn)定性,建議讀者盡可能地使用Linux令行界面,也就是s 傳給相關(guān)的程序。s是一種Linux中令行解釋程序,就如同 是DOS下令解釋程序一樣,為用戶提供使用操作系統(tǒng)的接口。它們之間的關(guān)系如圖2.1所示。用戶在提示符下輸入令都由s先解釋然后傳給Linux內(nèi)核。 建的s 個可執(zhí)行的sLinux中運行s的環(huán)境“系統(tǒng)工具下“終端, 擊“終端”以啟動s環(huán)境。這時屏幕上顯示類似 由于Linux中令非常多,要全部介紹幾乎 不可能的 且對每一中最常用令詳細講解,同時列出同一類中 其令 令

圖 內(nèi)核、 用戶系統(tǒng)相關(guān)命令LinuxLinux中的用戶切換su選項使用者表 su命令常見參數(shù)列 為該使用者重新登錄,大部分環(huán)境變量(如HOME、S 和USER等)和工作目-m,-- [[david@localhost~]$su-在將普通用戶變更為root用戶時建議使用“-”選項,這樣可以將root的環(huán)境變量和工作 export設(shè)置新的環(huán)境變量。用戶管理(useradd和表 Linux常見用戶管理命 useradd選項]用戶usermod選項]屬性userdel選項]用戶groupadd選項]組賬groupmod選項]groupdel選項][顯示用戶ID、組ID和用戶所屬的組列id用戶名groups[組賬號useradd:useradd選項]passwd:passwd選項用戶名]表 useradd命令常見參數(shù)列 [root@localhost[root@localhost~]#useradddavid[root@localhost~]#passwddavidNewpassword:(輸入 Retypenewpassword:(再輸入一 passwd:allauthenticationtokensupdatedsuccessfully[root@localhost~]#su–david /home/david(該用戶的工 adduser只是useradd的符 系統(tǒng)管理命令(ps和表 Linux常見系統(tǒng)管理命 ps選項隔輸出特定的信號給指定PID(進程號)kill選項]進程號uname選項crontab選項關(guān)閉或重啟Linux系ps:ps選項]kill:kill選項進程號(PID表 ps命令常見參數(shù)列 - -除可顯示-ef所有內(nèi)容外,還可顯示CPU及內(nèi)存占用率、進程狀-表 [root@localhost[root@localhostroot]#ps100?210?300?400?10?000:00:00grepPIDPPIDCSTIMEPIDPPIDCSTIMETIME[root@localhostrootkill97421(殺死進程[root@localhostroot]#ps-ef|grep 2178921739017:16 00:00:00grep行了。例如:ps–auxwww。管管道是Linux中信息通信的重要方式。它是把一個程序的輸出直接連接到另一個程序的輸入,而不經(jīng)過任何中間文件。管道線是指連接兩個 程序管的通路。在 中字符”|”表示管道線。如前例子中的ps–ef|grepntp所示ps–efgrepntp的程序中(grep命令在后面會有詳細的介紹)。grep、pr、sort和wc都可以在上述管道線上工作。讀者可以靈活地運表 Linux常見系統(tǒng)管理命選 free選項df選項統(tǒng) du選項也是一個非常好的硬盤分區(qū)工具,感的讀者可以另外查找資料學(xué)習(xí)如何使用fdisk進行硬盤分區(qū)。[root@localhost~]#fdisk-Disk/dev/hda:40.0GB,40007761920240heads,63sectors/track,5168Units=Deviceof*512Id/dev/hda11+cW95FAT32fW95Ext'd+bW95+bW958382LinuxDisk/dev/sda:999Disk/dev/sda:9994heads,8sectors/track,61023Units=cylindersof32*512=16384bytesDiskidentifier:0xDeviceId*1bW95外,hda1hda的第一個硬盤分區(qū),hda2hda的第二個分區(qū),依此類推。文件系統(tǒng)掛載命令掛載文件系統(tǒng),它的使用權(quán)限是超級用戶或/etc/fstab1.2.1節(jié)中所述,掛載是指在分區(qū)和mount命令可以把文件系統(tǒng)掛載到相應(yīng)的下,并且由于Linux中把設(shè)備都當(dāng)成文件一樣使用,因此,mount命令也可以掛載通常,在Linux下“/mnt” mount選項類型]表 mount命令選項常見參數(shù)列 ---t類種:vfat、ext3、ext2、iso9660、nfs等-會和-v一起使用必須確定掛載點已經(jīng)存在,也就是在“/mnt”下的相應(yīng)子已經(jīng)存在,一般建議在“/mnt”下新建幾個如“/mnt/windows”,“/mnt/usb”的子,現(xiàn)在有些新版本的Linux(如Fedora、Ubuntu、Linux、中軟Linux、MandrakeLinux)都可自動掛載文件系統(tǒng),RedHatLinux僅可自動掛載光驅(qū)。[root@locaohost~]#[root@locaohost~]#mkdir-p/mnt/win/c[root@locaohost~]#mount-tvfat/dev/hda1/mnt/win/c[root@localhost~]#cd/mnt/win/c sandSettingsProgramFiles24.s03e02.pdtv.xvid-sfm.rmvbDownloads …CWindowsC盤之后,可直接WindowsC盤的內(nèi)[root@localhost[root@localhost~]#umount[root@localhost~]#cd[root@localhost~]#ls可見,此 Linux下如何使用U小知 mount-tvfat/dev/sda1文件相關(guān)命令 cd路徑 [root@localhost[root@localhost~]#cd[root@localhostdavid]#pwd[root@localhostdavid]#/home/david/ pwd 該命令將當(dāng)前改變至指定路徑的。若沒有指定路徑,則回到用戶的主(例如:“/home/daviddavid的主。為了改變到指定,用戶必須擁有對指定的執(zhí)行使用 列 ls選項文件 表 ls命令常見參數(shù)列 -1,--format=single--a,- - -l, [david@localhosttest]$ls-totaldrwxr-xr-24096Mar2005drwxr-xr-34096Apr2005-rw-r--r-10Apr2002… 文件類型與權(quán)限數(shù)文件屬主文件屬組文件大小修改的時間名 mkdir選項]表 mkdir命令常見參數(shù)列 -對新 設(shè)置存取權(quán)限,也可以用od命令(在本節(jié)后會有詳細說明)設(shè)- [david@localhost[david@localhost~]$mkdir-p[david@localhost~]$cd [david@localhostmy]$pwd(查看當(dāng)前 [david@localhost[david@localhostmy]$mkdir-m777./why[david@localhostmy]$ls-ltotal 2 4096Jan1409:24 表 cat命令常見參數(shù)列 --[david@localhost[david@localhost~]$cat-1#include223456789void{ o!Thisismy}voidmain(){o!Thisisyour}cp、mv①cp:將給出的文件 ②mv:為文件 中③rm:刪除一 ①cp:cp[選項]源文件 ②mv:mv[選項]源文件 rm:rm選項]表 cp命令常見參數(shù)列 -保留、文件屬性,并其 -此時cp除源文件的內(nèi)容外,還將把其修改時間和權(quán)限也到新文件- 文件,此時cp將遞歸該 表 mv命令常見參數(shù)列 -或n,這樣可以避免誤覆-交互操mv操作要覆蓋某已有的目標(biāo)文件時不給任何指示,在指定此選項后,i表 rm命令常見參數(shù)列 指示rm將參數(shù)中列出的全 ①myo]#cp-a./my/why/o]#該實例使用-a選項將“/my/why” ②myo]#mv-i./my/why/o]#該實例中把 下的所有文件移至當(dāng) ,則 下文件被自動刪除③o]#rm–r-irm:descendintodirectory'./why'?yrm:remove'./why/my.c'?yrm:removedirectory'./why'? ② 文件,當(dāng)?shù)诙€參數(shù)類型是文件時,mv命令完成文件重命名,此時,它將所給的源文件或 ③ chown②chgrp:改變文件的組所chown:chown選項]...文件所有者[所有者組名]文件②chgrp:chgrp[選項]...文件所有組文件chown和chgrp的常見參數(shù)意義相同,其主要選項參數(shù)如表2.15所示表 chown和chgrp命令常見參數(shù)列 -c,-詳盡地描述每個file實際改變了哪-f,--silent,--[root@localhost[root@localhosttest]#$ls--rwxr-xr-x15 40966月4200XuClinux-[root@localhost[root@localhosttest]#chownrootuClinux-dist.tar[root@localhosttest]#ls–l-rwxr-xr-x15 40966月4200XuClinux-接著使用chgrp將文件用戶組變?yōu)閞oot。[root@localhost[root@localhosttest]#chgrprootuClinux-dist.tar[root@localhosttest]#ls–l-rwxr-xr-x15 40966月4200XuClinux-小知 可以使用輸入文件前幾個字母+<Tab>鍵的方式,即:cd/uC<tab>會顯示 ②八進制數(shù):od[選項]…八進制權(quán)限文件…表 od命令常見參數(shù)列 在此,可增加一個用戶級別a(all)來表示所有這3個不同的用戶級別。①第一種符號連接方式的od命令中,用加號“+”代表增限,用減號“?”代表刪除權(quán)限,等于 [root@localhost[root@localhosttest]#ls 1 Maroda+rx,u+w2005[root@localhost[root@localhosttest]#ls-rwxr-xr- 1 Mar242005 664(三位八進制數(shù)2.17表 二進二進34567[root@localhost[root@localhosttest]#ls-rw-rw-r- 1 20543Dec292004genromfs- od765genromfs-[root@localhosttest]#ls-rwxrw-r- 1 20543Dec292004genromfs- ododo+x想grep選項][文件及路徑 表 grep命令常見參數(shù)列 [root@localhost[root@localhosttest]#grepo"/-world$2=0…o ①明確要求搜索 ②忽略 :grep-dskip“l(fā)ess(小知識^在指 [ [選項]主要參數(shù)如表2.19所示 - [描述]主要參數(shù)如表2.20所示

find選項常見參數(shù)列find描述常見參數(shù)列 ---[root@localhost[root@localhosttest]#find./- 若使用路徑為“find命令可以使用混合查找的方法,例如,想在/etc中查找大于500000字節(jié),并且在24小時內(nèi)修改的某個文件,則可以使用-and(與)把兩個查找參數(shù)起來組合成一個混合的查找方式,如“find/etc-size c-and-mtime+1”。詢這個數(shù)據(jù)庫,而不必實際深入系統(tǒng)之中了。因此其速度比find快很多。locate選項表 locate命令常見參數(shù)列 -從 --將特定的文件系統(tǒng)排除在數(shù)據(jù)庫外,例如proc文件系統(tǒng)中的文--[root@localhost[root@localhosttest]#locateissue-U./[root@localhosttest]#updatedb[root@localhosttest]#locate-rissue*./ARM_TOOLS/uClinux-./ARM_TOOLS/uClinux-./ARM_TOOLS/uClinux-./ARM_TOOLS/uClinux-…實例中首先在當(dāng)前下建立了一個數(shù)據(jù)庫,并且在更新了數(shù)據(jù)庫之后進行正則匹配查找。通過運行可以發(fā)現(xiàn)locate的運行速度非???。locateupdatedbupdatedbcrondaemon周期性建立的,但若所crontab配置(etc/crontab)來更新周期值。為某一個文件在另外一個位置建立一個符號。當(dāng)需要在不同的用到相同的文件時,Linux允許用戶不用在每一個需要的下都存放一個相同的文件,而只需將其他下的文件用ln命令即可,這ln[選項][root@localhost[root@localhosttest]#ln-s../genromfs-0.5.1.tar.gz./[root@localhosttest]#ls-ltotalolrwxrwxrwx1root 24Jan14 o->../genromfs-該實例建立了當(dāng)前的o文件與上級之間的符號,可以看見,在ols–l中的第一位為l”,表示符號,同時還顯示了的源文件。軟就是上面所說的ln-s****,它只會在用戶選定的位置上生成一個文件的鏡像,不會重復(fù)占用磁盤硬是不帶參數(shù)的ln****,它會在用戶選定的位置上生成一個和源文件大小相同的文件,無論是軟鏈壓縮打包相關(guān)命令表 Linux常見系統(tǒng)管理命 bzip2[選項]壓縮(解壓縮)bunzip2[選項bz2壓縮文修復(fù)損壞的.bz2文.gzip選項]壓縮(解壓縮)的文件解壓縮被gzip壓縮過的文gunzip選項gz解壓縮winzip壓縮的.zip文unzip選項zip壓縮文compress選項]文 tar[選項][打包后文件名]文 gzip選項]壓縮(解壓縮)表 gzip命令常見參數(shù)列 --portmap-4.0-portmap-4.0-[root@localhosttest]#gzip-lportmap-4.0-pressed 使用gzip壓縮只能壓縮單個文件,而不能壓縮 對文件在此需要對打包和壓縮這兩個概念進行區(qū)分。打包是指將一些文件或變成一個總的文件,而壓縮則是Linux中的tar[選項][打包后文件名]文件列表??梢允且M行打包備份的文件列表,也可以是進行解包的文件列表。tar主要選項參數(shù)如表2.24所示表 tar命令常見參數(shù)列 調(diào)用gzip來壓縮打包文件,與-x聯(lián)用時調(diào)用gzip完成-調(diào)用bzip2來壓縮打包文件,與-x聯(lián)用時調(diào)用bzip2完成解壓-調(diào)用compress來壓縮打包文件,與-x聯(lián)用時調(diào)用compress完成解壓[root@localhost[root@localhosthome]#tar-cvfdavid.tar [root@localhosthome]#ls-l-rw-r--r- 1 10240Jan1415:01 [david@localhost[david@localhostdavid]#tar-zxvflinux-linux-linux- …tar命令除了用于常規(guī)的打包之外,使用更為頻繁的是用選項“-z”或“-jgzipbzip2(Linux中另表 Linux常見類型的文件解壓命令一覽 tartarxvpressgunziptartarxvZftartarxvzftartarjxvf安裝:rpm安裝:rpm-io解壓縮:rpm2cpio.deb(Debain中的文件格安裝:dpkg安裝:dpkg-i解壓縮:dpkg-deb--fsys-tarounzip文件比較合并相關(guān)命令 diff[選項1命令格式及混合命令格式,它們之間的區(qū)別會在使用實例中進行詳細講解。當(dāng)選項缺省時,diff默認使用diff主要選項參數(shù)如表2.26所示表 diff命令常見參數(shù)列 - --e,c,u,調(diào)用compress來壓縮歸檔文件,與-x聯(lián)用時調(diào)用compress完成解壓o1.cvoidmain(){ o!Thisismy} o2.c*/voidmain(){ o!Thisisyour}[root@localhost[root@localhostdavid]#diff- SatJan1416:24:51-- SatJan1416:54:41***1,5****voidmain(){ o!Thisismy}#include[root@localhost[root@localhostdavid]#[root@localhostdavid]#vio2.c o!Thisismy‐22!!void{}o!Thisisyour[root@localhost[root@localhostdavid]#diff SatJan1416:24:51 SatJan1416:54:41@@-1,5+1,5@@voidmain(){-+}o!Thisismyo!Thisisyour[root@localhost[root@localhostdavid]#diff- o!Thisisyour表示添加,b表示刪除,c表示更改因此,-e選項令符表示:若要把o1.c變?yōu)閛2.c,就需要把o1.c“printf“[root@localhost[root@localhostdavid]#diff- o!Thisisyour[root@localhost[root@localhostdavid]#<-->o!Thisismyo!Thisisyour(也就是差異文件)diff的功能之一,不同的選項格式可以生成與之相對應(yīng)的補丁文>o!Thisisyour上上例中所使用的”>“是輸出重定向。通常在Linux上執(zhí)行一個s 輸出重定向機制和管道(1.3.1的小知識中已有介紹)。其中,輸入重定向是把“diffo1.co2.c”的結(jié)果重定向到o.patchpatch選項patch的文件[patch文件]]-[表 patch命令常見參數(shù)列 --把dir設(shè)置為解釋補丁文件名的當(dāng)-把輸入的補丁文件看作是ed- --顯示patch的版本xc.orig/config/cf/Imake.cfFriJul3012:45:47+++xc.new/config/cf/Imake.cfFriJan2113:48:44patch如果直接應(yīng)用,那么它會去找“xc.orig/config/cf”下的Makefile文件,假如用戶源碼樹的根是缺省的xc而不xc.orig,則除了可xc.origxc處之什么簡單的patchconfig/cf/Makefile,-p2的結(jié)果是cf/Makefile。因此,在此例中就可以用命令cdxcpatch_p1<[root@localhost[root@localhostdavid]#o2.c[root@localhostdavid]#patch o1.c patchingfile./ [root@localhostdavid]#vi #include<stdio.h>void{ o!Thisisyour}在該實例中,由于patch文件和源文件在同 ,在應(yīng)用了patch失敗,patchpatch行補上其差異,同時(無條件)生成備份文件和一個.rej文件。.rejpatch行,需要手工打上補丁。這種情況在源碼升級的時-u選項來指定輸入的補丁文件的格式。由于只有GNUpatch可以創(chuàng)建和新版上下文格式的網(wǎng)絡(luò)相關(guān)命令表 Linux下網(wǎng)絡(luò)相關(guān)命 查詢一臺機器的IP地址和其對應(yīng)[[選項]主機名/IP地址ifconfig選項網(wǎng)絡(luò)接口利用ftp協(xié)議上傳和文利用net協(xié)議主ent[選項][IP地址/ssh選項IP地址‐‐25 Linkencap:EthernetHWaddr 有兩種使用格式,分別用于查看和更改網(wǎng)絡(luò)接口。①[ifconfig[選項]地址:用來配置指定接口(eth0、eth1)IP地址、網(wǎng)絡(luò)掩碼、廣播地址ifconfig第二種格式的常見選項參數(shù)如表2.29表 ftp命令選項的常見參數(shù)列 -指定的網(wǎng)絡(luò)接口名,如eth0和pointo設(shè)置指定接口設(shè)備的IP地[root@localhost[root@localhost~]# Linkencap:EthernetHWaddrinetaddr:0Bcast:55inet6addr:fe80::208:2ff:fee0:c18a/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:26931errors:0dropped:0overruns:0frame:0TXpackets:3209errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RX (6.3MiB)TXbytes:321302(313.7Linkencap:Localinetaddr:Mask:inet6addr:::1/128Scope:HostUPLOOPBACKRUNNINGMTU:16436RXpackets:2537errors:0dropped:0overruns:0TXpackets:2537errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RX (1.9MiB)TX (1.9inet6addr:fe80::208:2ff:fee0:c18a/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:27269errors:0dropped:0overruns:0frame:0TXpackets:3212errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RX (6.3MiB)TXbytes:322488(314.9[root@localhost[root@localhost~]#ifconfigeth0[root@localhost~]# Linkencap:Localinetaddr:Mask:inet6addr:::1/128Scope:HostUPLOOPBACKRUNNINGMTU:16436RXpackets:1931errors:0dropped:0overruns:0frame:0TXpackets:1931errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:0RX (2.4MiB)TX (2.4在此例中,通過將指定接口的狀態(tài)設(shè)置 DOWN,暫時停止該接口的工作[root@localhost[root@localhost~]#ifconfigeth042netmask[root@localhost~]#ifconfig Linkencap:EthernetHWaddrinetaddr:42Bcast:55inet6addr:fe80::208:2ff:fee0:c18a/64Scope:LinkUPBROADCASTRUNNINGMULTICASTMTU:1500Metric:1RXpackets:1722errors:0dropped:0overruns:0frame:0TXpackets:5errors:0dropped:0overruns:0carrier:0collisions:0txqueuelen:1000RXbytes:147382(143.9KiB)TXbytes:398(398.0…ifconfig命令配置的網(wǎng)絡(luò)設(shè)備參數(shù)不重啟就可生效,但在機器重新啟動以后將會失效,除非在網(wǎng)絡(luò)接命令是指成功登錄后進行的一系列操作,下面會詳細列出。若用戶缺省“主機名/IP”,則可在轉(zhuǎn)入到ftpftp常見選項參數(shù)如表2.30所示表 ftp命令選項常見參數(shù)列 --限制ftp的自動登--ftp常見內(nèi)部命令如表2.31所示表 ftp命令常見內(nèi)部命 使用ASCII類型傳輸方bin/type退出ftp會話過cdremote-進入主 odmodefile-中斷與服務(wù)器的ftp會話(與open對應(yīng)deleteremote-dir/ls[remote-dir][local-顯示主 ,并將結(jié)果存入本地文件local-同將本地工 切換至mputlocal-open建立與指定ftp服務(wù)器的連接,可指定連將本地文件local-file傳送至主類似于get,但若local-file存在,則從上次傳輸中斷處繼續(xù)傳sizefile- [root@localhost[root@localhost~]#Connected. FTP500'AUTHGSSAPI':commandnot500'AUTHKERBEROS_V4':commandnotunderstoodKERBEROS_V4rejectedasanauthenticationtypeName( :root):anonymous331Anonymousaccessallowed,sendidentity(e-mailname)aspassword.230AnonymoususerloggedRemotesystemtypeisftp>227EnteringPassiveMode125Dataconnectionalreadyopen;ftp>227EnteringPassiveMode125Dataconnectionalreadyopen;Transfer226Transferftp>ftp>cd/Wrox/Wrox.Beginning.SQL.Feb.2005.eBook-250CWDcommandftp>257 ftp>ftp>lcdLocaldirectorynow/root/workplaceftp>getd-wbsq01.ziplocal:d-wbsq01.zipremote:d-200PORTcommand150OpeningASCIImodedataconnectionford-wbsq01.zip(WARNING!5350barelinefeedsreceivedinASCIImodeFilemaynothavetransferredcorrectly.226Transferbytesreceivedin1.7seconds(8.6e+02接下來通過lcd命令首先改變用戶的本地工作,也就是希望或上傳的工作,接著通過get命令進行文件。由于ftp默認使用ASCII模式,因此,若希望改為其他模式如“bin”,直接輸入bin即可,ftp>ftp>200Typesettoftp>ftp>的E-mail地址即可。Linux啟動過程詳解Linux的常見命令之后,下面詳細講解Linux的啟動過程。Linux的啟動過程包含了Linux工作原概當(dāng)用戶打開PC(inCPU)的電源時,CPU將自動進入實模式,并從地址0xFFFF0000開始自動執(zhí)行程序代碼,這個地址通常是ROM-BIOS中的地址。這時BIOS進行開機自檢,并按BIOS中設(shè)置的啟動設(shè)備(通常是硬盤)進行啟動,接著啟動設(shè)備上安裝的引導(dǎo)程序lilo或grub開始引導(dǎo)Linux(也就是啟動設(shè)備的第一個扇區(qū))Linuxin第四階段,init啟動mingetty,打開終端供用戶登錄系統(tǒng),用戶登錄成功后進入了s,這樣就完成了Linux啟動總體流程如圖2.2所示,其中的4個階段分別由同步棒隔開。第一階段不涉及Linux自身的啟動內(nèi)核引導(dǎo)階段

2.2Linux啟動總體流程在grub或lilo等引導(dǎo)程序成功完成引導(dǎo)Linux系統(tǒng)的任務(wù)后,Linux就從它們手中接管了CPU的控制權(quán)。 上版本的源碼進行閱讀,其為:linux-2.6.*.*/arch/i386/boot。在啟動過程中主要用到該下的幾個文件:bootsect.S、setup.S以及compressed子下的head.S等。Linuxvmlinuz中的。Linux中提供的內(nèi)核包含了眾多驅(qū)動和功能,容量較大,壓縮內(nèi)核可以節(jié)省大量的空間,壓縮的內(nèi)核grub讀入vmlinuzbootsect(512字節(jié))setup0x90000開始的的內(nèi)存里(0x90000,但現(xiàn)在有所變化grubbootsect而bootsect.S在完成了指令搬移以后就退出了。之后執(zhí)行權(quán)就轉(zhuǎn)到了setup.S的程序中。setupsetup.S的主要功能是利用ROMBIOS中斷機器系統(tǒng)數(shù)據(jù),并將系統(tǒng)參數(shù)(包括內(nèi)存、磁盤等)保存到以0x90000~0x901FF開始的內(nèi)存中。最后,它還會設(shè)置CPU的控制寄存器CR0(也稱機器狀態(tài)字從而進入32位保護模式運行,并跳轉(zhuǎn)到絕對地址為0x100000(虛擬地址0xC +0x100000)的位置。當(dāng)CPU跳到0x100000時,將執(zhí)行“arch/i386/kernel/head.S”中的startup_32。當(dāng)運行到head.S時,系統(tǒng)已經(jīng)運行在保護模式,而head.S完成的一個重要任務(wù)就是將內(nèi)核解壓。內(nèi)核是通過壓縮的方式放在內(nèi)存中的,head.Smisc.c中定義的press_kernel()vmlinuz解壓到0x100000。head.Sarch/i386/kernel/head.S。CPU用于Linux系統(tǒng)的啟動。initinit進程,該進程號始終是“1”。init進程根據(jù)其配id1~4gettymingettyloginidtty的編號相同,否則getty程序?qū)⒉荒苷9ぷ鳌unlevelsrunlevels是運行級般使0~6以及Ss016運行級別為系統(tǒng)保留:0shutdown也不在inittab中出現(xiàn)。7~9級別也是可以使用的,傳統(tǒng)的UNIX系統(tǒng)沒有定義這幾個級別。runlevel可以是并列的多個值,對大多數(shù)action來說,僅當(dāng)runlevel與當(dāng)前運行級別匹配成initdefault用于標(biāo)識系統(tǒng)缺省的啟動級別。當(dāng)init由內(nèi)核激活以后,它將inittab中的initdefault項,取runlevelinittabinitdefault項,init將在控制臺上請求輸入runlevel。sysinit、boot、bootwaitaction將在系統(tǒng)啟動時無條件運行,忽略其中runlevel。respawn字段表示該類進程在結(jié)束后會重新啟動運行。process確定用戶登錄模式#Defaultrunlevel.TherunlevelsusedbyRHS戶模式、X-Windows多用戶模式等。其中的單人模式(runlevel為1)類似于Windows#Defaultrunlevel.TherunlevelsusedbyRHS#0-halt(DoNOTsetinitdefaultto#1-Singleuser#2-Multiuser,withoutNFS(Thesameas3,ifyoudonothave#3Fullmultiusermode(文本界面啟動模式#4-#5X11(圖形界面啟動模式#6-reboot(DoNOTsetinitdefaultto#執(zhí)行##System加載內(nèi)核的模塊,執(zhí)行各運行級別的以及進入用戶登錄界(ec/flevel,init進程會等待(wait“ec/rc.d/rc”的返回。系統(tǒng)還需要配置一些異常關(guān)機的處理部分,最后通過(tty1~tty6xdmxdm圖形界面的登錄方式。如果在本地打開一個虛擬終端,當(dāng)這個終端超時沒該終端,否則在經(jīng)過一段時間之后,我們會發(fā)現(xiàn)這個終端了,無法利用ALT+Fn切換。#TrapCTRL-ALT- #WhenourUPS lsuspowerhasfailed,assumewehaveafewminutes#ofpowerleft.Scheduleashutdownfor2minutesfromnow.#Thisdoes,ofcourse,assumeyouhavepowerdinstalledandyour#UPSconnectedandworkingcorrectly.pf::powerfail:/sbin/shutdown-f-h+2"PowerFailure;SystemShutting#Ifpowerwasrestoredbeforetheshutdownkickedin,cancelit.pr:12345:powerokwait:/sbin/shutdown-c"PowerRestored;ShutdownCancelled"#Rungettysinstandardrunlevels1:2345:respawn:/sbin/mingettytty12:2345:respawn:/sbin/mingettytty23:2345:respawn:/sbin/mingettytty34:2345:respawn:/sbin/mingettytty45:2345:respawn:/sbin/mingettytty56:2345:respawn:/sbin/mingettytty6#Runxdminrunlevel5x:5:respawn:/etc/X11/prefdm-Linuxinit進程的作是啟動Linux系統(tǒng)服務(wù)(也就是運行在的守護進程。Linux的系統(tǒng)服務(wù)包括兩種,第一種是獨立運行的系統(tǒng)服務(wù),它們常駐內(nèi)存中,自開機后一直運行著(如httpd,具有很快的響應(yīng)速度;第二種是由xinet設(shè)定的服務(wù)。xinet能夠同時多個指定的端口,在接受用戶請求時,它能夠根據(jù)用戶請求的端口不同,啟動不同的網(wǎng)絡(luò)服務(wù)進程來處理這些用戶請求。因此,可以把xnetd看作一個啟動服務(wù)的管理服務(wù)器,它決定把一個客戶請求交給哪個程序處理,然后啟動相應(yīng)的守護進程。下面分別介紹這兩種系統(tǒng)服務(wù)。獨立運行的服務(wù)[root@localhost[root@localhostinit.d]#lsacpiddc_clientiptablesnamedpandrpcsvcgssdtuxanacrondc_serverirdanetdumppcmciasaslauthdvncserverapmddiskdumpirqbalancenetfsportmapsendmailvsftpdarptables_jfdovecotisdnnetplugdpsacctsinglewatchquaggaatddundkillallnetworkrawdevicessmartdwinbindautofsfirstbootkudzuNetworkManagerreadaheadsmb…為了指定特定運行級別服務(wù)的開啟或關(guān)閉,系統(tǒng)的各個不同運行級別都有不同的文件,其為 .d”,其中的N分別對應(yīng)不用的運行級別。讀者可以進入各個不同的運行級別,查看相應(yīng)服務(wù)是在開啟還是關(guān)閉狀態(tài),如進入“/rc3.d”中的文件如下所示:[root@localhost[root@localhostrc3.d]#lsK02NetworkManagerK35winbindK89netplugdS10networS28autofsS95anacronK05saslauthdK36lisaK90bluetoothS12syslogS40smartdS95atdK10dc_serverK45namedK94diskdumpS13irqbalanceS44acpidS97messagebusK10psacctK50netdumpK99microcode_ctlS13portmapS55cupsS97rhnsd…(start在執(zhí)行完相應(yīng)的rcN.d 某些非系統(tǒng)服務(wù)設(shè)置為自啟動,可以編輯rc.local文件,加上相應(yīng)的執(zhí)行語句即可。另外,讀者還可以使用命令“service+系統(tǒng)服務(wù)+操作”來方便地實現(xiàn)相應(yīng)服務(wù)的操作,如下所示: [確定開啟 [確定完畢服務(wù)自動結(jié)束。xinetd的配置文件為“/etc/xinetd.confxinet的默認參數(shù)進行了配置:###Simpleconfigurationfileforxinetd#Somedefaults,andinclude/etc/xinetd.d/{ = =SYSLOG =HOST =2530}}從該配置文件的最后一行可以看出,xinetd啟動“/etc/xinetd.d”為其配置文件 錄中可以看到每一個服務(wù)的基本配置,如tftp服務(wù)的配置文件如下:serviceservice{socket_type=dgram(數(shù)據(jù)報格式 udp(使用UDP傳輸)====-s=yes(不啟動==100=}系統(tǒng)服務(wù)的其他相關(guān)命令…0:關(guān)0:關(guān)0:關(guān)0:關(guān)1:關(guān)閉2:打開3:打開4:打開5:打開6:關(guān)1:關(guān)閉2:關(guān)閉3:關(guān)閉4:關(guān)閉5:關(guān)閉6:關(guān)1:關(guān)閉2:打開3:打開4:打開5:打開6:關(guān)1:關(guān)閉2:打開3:打開4:打開5:打開6:關(guān)[] 0:關(guān)閉1:關(guān)閉2關(guān)閉3:關(guān)閉4:關(guān)閉5:關(guān)閉6:關(guān)閉[root@localhost~]#chkconfig--level3ntpdon[root@localhost~]#chkconfig--list|grep 0:關(guān)閉1:關(guān)閉2:關(guān)閉3:打開4:關(guān)閉5:關(guān)閉6:關(guān)在Linux下解壓常見軟件實驗?zāi)吭贚inux下安裝一個完整的軟件(嵌入式Linux的必備工具——交叉編譯工具掌握Linux常見命令,學(xué)實驗內(nèi)實驗步命令為:su-root-使用mkdir命令在“/mnt”新建子 命令為:mkdir/mnt/win 命令為:cd/mnt/win;ls在/usr/local下建一個名為arm的 命令為:mkdir/usr/local/arm將cross-3.3.2.tar.bz2到剛剛創(chuàng)建的 若若cross-3.3.2.tar.bz2中,則可將命令簡寫為:cp./cross- 想想 命令為 cross- 命令為:echo$PATH實驗結(jié)學(xué)會添加環(huán)境變量,同時對Linux的 實驗?zāi)恳布由顚nit進程的了解和掌握。實驗內(nèi)實驗步命令為 進入相應(yīng)級別的服務(wù),查看哪些服務(wù)是系統(tǒng)啟動的獨立運行的服務(wù),并做下記錄。 命令為 記錄 進入xinet配置管理的相應(yīng) 命令為 命令為 命令為 將sshd服務(wù)端改為4022。 重啟sshd服務(wù),驗證所改的端是否生效。 重啟Linux實驗結(jié)果分析LinuxLinux的基礎(chǔ)。Linux基本命令包括用戶系統(tǒng)相關(guān)命令、文件相關(guān)命令、壓縮打包相關(guān)命令、比較合并相關(guān)命令以及網(wǎng)絡(luò)相關(guān)命令。著重介紹了每一類命令中有代表性的重令及其用法,并給出了具體實例,對其令列出了其使用方法。希望讀者能LinuxLinux系統(tǒng)是非常有幫助的,如何定制Linux系統(tǒng)服務(wù),希望讀者能夠認真動手實踐。更 如何將文件屬性變?yōu)?rwxrw-r-- 學(xué)助馬上掃描下方華清遠見(:farsight2013),即可免費獲取價值388元的免費大禮包!包含7本嵌入式、android.、Linux、ARM、FPGA、DSP相關(guān)PDF完整版,您還可以通過華清遠見 《嵌入式Linux應(yīng)用程序開發(fā)標(biāo) 3LinuxC編程基 熟練使用gdb的調(diào)試技術(shù)熟悉makefile基本原理及語 LinuxCCC語言最早是由貝爾的DennisRitchie為了UNIX的輔助開發(fā)而編寫的,它是在B語言的基礎(chǔ)上開發(fā)出來的。盡管C語言不是專門針對UNIX操作系統(tǒng)或機器編寫的,但它與UNIX系統(tǒng)的關(guān)系十分緊密。由于它的硬件無關(guān)性和可移植性,使C語言逐漸成為世界上使用最廣泛的計算機語言。為了進一步規(guī)范C語言的硬件無關(guān)性,1987年,(ANSI)根據(jù)C語言問世以來各種版本對C語言的發(fā)展和擴充,制定了新的標(biāo)準(zhǔn),稱為ANSIC。ANSIC語言比原來的標(biāo)準(zhǔn)C語言有了很大的發(fā)展。目前流行的C語言編譯系統(tǒng)都是以它為基礎(chǔ)的。(2)C語言是結(jié)構(gòu)化的語言。C語言采用代碼及數(shù)據(jù)分隔,使程序的各個部分除了必要的信息交流外彼此獨立。這種結(jié)構(gòu)化方式可使程序?qū)哟吻逦阌谑褂?、以及調(diào)試。C語言是以函數(shù)形式提供給用戶(3)C語言功能齊全。C語言具有各種各樣的數(shù)據(jù)類型,并引入了指針的概念,可使程序效率更高。另項目管理工具?,F(xiàn)在我們先對這4種工具進行簡單介紹,后面會對其一一進行講解。編輯器LinuxWindows下的記事本、寫字板等一樣,完成對所錄入文字的編輯功能。Linux中最常用的編輯器有vi(vim)和emacs,3.1編譯過LinuxgccGNU推出的功能強大、性能優(yōu)越的多平臺編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30%。調(diào)試器是必不可少的。gdbLinux開發(fā)人員所使用的調(diào)試器,它可以方便地設(shè)置斷點、單步跟Linux系統(tǒng)提供了一個完整的編輯器系列,如Ed、Ex、vi和emacs等。按功能它們可以分為兩大類:emacsvi是Linx系統(tǒng)的第一個全屏幕交互式編輯程序,它從誕生至今一直得到廣大用戶的青睞,歷經(jīng)數(shù)十年仍然是人們主要使用的文本編輯工具,足以見其生命力之強,而強大的生命力是其強大的功能帶來的。由于大多數(shù)讀者在此之前都已經(jīng)用慣了ndos適應(yīng),但只要習(xí)慣之后,就能感受到它的方便與快捷。1.vi的模vi有3只有在該模式下,用戶才能進行文字編輯輸入,用戶按[ESC]可鍵回到命令2.vi進入vi,即在命令行下鍵入“vi o(如圖3.2所示。3.2進入vi命令行模3.3進入vi插入模:wq(退出)進入底行模式,如圖3.4所示。3.4進入vi底行模3.vi的各模式功能鍵表 vi命令行模式功能 iaoG光標(biāo)移動到第n$光標(biāo)向下移動nxX從光標(biāo)所在行開始向下刪除n光標(biāo)所在行開始的向下np將緩沖區(qū)內(nèi)的字符粘貼到光標(biāo)所在位置(與yy搭配u插入模式的功能鍵只有一個,即按“Esc表 vi底行模式功能 退出vi(系統(tǒng)對做過修改的文件會給出提示強制退出vi(對修改過的文件不作保存:w另存一個名為filename:set:set的正如前面所述,vi是一款功能非常強大的編輯器,它能夠方便、快捷、高效地完成用戶的任務(wù),那么,在此再次向讀者介紹另一款編輯器是否多此一舉呢?答案是否定的。因為emacs不僅僅是一款isualStudio一樣絢麗的界面,但是它可以在沒有圖形顯示的終端環(huán)境下出色的工作,相信追求強大功能和工作效率的用戶不會介意它樸素的界面的。eacsvieacsvi的種eacs只有一種模式,也就是編輯模式,而且它令全靠功能鍵完成。因此,功能鍵也就相當(dāng)重要了。emacsLinux(RedHatEnterprise4AS)emacs的安裝包,用戶可以通過安裝光盤進行安裝(一般在第2張光盤中。時指定,也可從“編程”→“emacs”打開,如3.5圖所示的就是從“編程”→“emacs”打開的emacs3.5emacs歡迎界從圖中可見,emacs的工作窗口分為上下兩個部分,上部為編輯窗口,底部為命令顯示窗口,用戶執(zhí)行功3.6emacs的工作窗下面介紹emacs中基本編輯功能鍵。字符會比按方向鍵快很多。表3.3列舉了emacs中光標(biāo)移動的常見功能鍵。表 emacs光標(biāo)移動功能功能 功能 C-M-C-C-C-C-C-M-<(M加M-M->(M加不贅述。以詞和行為單位的剪切和粘貼功能鍵如表3.4所示。表 emacs剪切和粘 M-M-M-C-C-C-x選擇區(qū)域的方法是:首先在起始點(A)按下“C-Space”或“C-@(C-Shift-2)”使它成為一個標(biāo)識點,再將光標(biāo)移至結(jié)束點(B,再按下“M-w”,就可將A與B之間的文本到系統(tǒng)的緩沖區(qū)中。再使用功能鍵C-y將其粘貼到指定位置。3.5emacs查找文本功能鍵功能 C-C-C+s(C+s框會出現(xiàn)如“Wrote/root/workplace/editor/why”的字樣,如圖3.7所示。3.7emacs中保存文save前后都有一個“#”,例如,編輯名為“o.c”的文件,其自動保存的文件的文件名就叫“#o.c#”。當(dāng)用戶正常地保存了文件后,emacs就會刪除這個自動保存的文件。這個機制當(dāng)系統(tǒng)發(fā)生異常時非常有用。emacs中的模emacs不僅僅是個強大的編譯器,它還是一個集編譯、調(diào)試等于一體的工作環(huán)境。在這里,讀者將會了解書進一步學(xué)習(xí)emacs。當(dāng)我們啟動某一文件時,emacs會判斷文件的類型,從而自動選擇相應(yīng)的模式。當(dāng)然,用戶也可以手動啟動各種模式,用功能鍵“M-x3.8所示,這樣就啟動了“C模式”。3.8emacs中選擇模emacs中,用“M-”可以產(chǎn)生一條右縮進的注釋。C模式下是“/*comments*/”形式的注釋,C++模式下是“comments”形式的注釋。當(dāng)用戶高亮選定某段文本,然后操作“C-cC-c”,就可以注釋該段文字。emacs員可以像使用Windows的其他開發(fā)工具一樣,將出錯位置和代碼定位聯(lián)系起來。進行查看。emacs可以支持大量的工程項目,以方便程序員的開發(fā)。得gdb的全部標(biāo)準(zhǔn)特性,還可以獲得通過接口增強而產(chǎn)生的其他性能。gccGNUCC(gcc)GNUANSICC、C++ObjectC等AdagccCPU平臺上為多種不同體系結(jié)構(gòu)的4.x.xgcc表 gcc所支持后綴名解后綴后綴C原始程hmObjective-C已經(jīng)過預(yù)處理的C原始程已經(jīng)過預(yù)處理的C++原始程……預(yù)處理(Pre-Processing編譯(Compiling;匯編(Assembling;(Linkng首先看一下o.c的源代碼:#include#includeintint{ o!Thisisourembeddedworld!\n");return0;}程中,編譯器將包含的頭文件stdio.h編譯進來,并且用戶可以使用gcc的選項“-E”進行查看,該選項的作用是讓gcc在預(yù)處理結(jié)束后停止編譯過程。gccgcc指令的一般格式為:gcc選項][選項目標(biāo)文件[root@localhostgcc]#gcco.ctypedeftypedefint(*gconv_trans_fct)(structgconv_step*,structgconv_step_data*,void*,constunsignedcharconstunsignedcharconstunsignedchar*,unsignedchar**,size_t*);…#2 o.c"int{ o!Thisisourembeddedworld!\n");return0;}由此可見,gcc確實進行了預(yù)處理,它把“stdio.h”的內(nèi)容插入o.i接下來進行的是編譯階段,在這個階段中,gcc首先要檢查代碼的規(guī)范性、是否有語法錯誤等,以確定代碼實際要做的工作,在檢查無誤后,gcc把代碼翻譯成匯編語言。用戶可以使用“-S”選項來

溫馨提示

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

評論

0/150

提交評論