下載本文檔
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
創(chuàng)建系統(tǒng)開(kāi)發(fā)環(huán)境漳州師范學(xué)院物理系王靈芝本章主要內(nèi)容1、Linux與
Linux概述2、Linux文件系統(tǒng)結(jié)構(gòu)3、Linux常用命令4、Linux常用工具5、Linux編譯器gcc及編譯工具6、交叉編譯工具的創(chuàng)建1、Linux操作系統(tǒng)的組成2、Linux操作系統(tǒng)的內(nèi)核版本3、
LinuxLinux與Linux概述Linux簡(jiǎn)介作者:Linux
Torvalds
·1991年9月發(fā)布Linux0.01版本:版版本為Ubuntu
13.101.
Fedora
Core2.
Debian3.Mandrake4.Ubuntu:目前5.
Red
Hat
Linux6.
SuSE7.
Linux
MintLinux操作系統(tǒng)的組成LINUX的內(nèi)核LINUXSLINUX文件系統(tǒng)LINUX應(yīng)用系統(tǒng)Linux操作系統(tǒng)的組成LINUX的內(nèi)核:含有設(shè)備驅(qū)動(dòng)程序、系統(tǒng)服務(wù)等程序,具有中斷處理、進(jìn)程調(diào)度、原語(yǔ)管理等功能。LINUX
S
:S
是系統(tǒng)的用戶(hù)界面,它是一個(gè)命令解釋器,它解釋用戶(hù)輸入
令,并且把它們送到內(nèi)核。提供了用戶(hù)與內(nèi)核進(jìn)行交互操作的一種接口。LINUX文件系統(tǒng):
是文件存放在磁盤(pán)等 設(shè)備上的組織方法。Linux能支持多種目前許多的文件系統(tǒng),如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB等。LINUX應(yīng)用系統(tǒng):標(biāo)準(zhǔn)的Linux系統(tǒng)都有一整套稱(chēng)為應(yīng)用程序的程序集,包括文本編輯器、編程語(yǔ)言、XWindow、辦公套件、Internet工具、數(shù)據(jù)庫(kù)等。Linux內(nèi)核采樹(shù)結(jié)構(gòu):一棵樹(shù)是穩(wěn)定樹(shù),主要用于;另一棵樹(shù)是非穩(wěn)定樹(shù)或開(kāi)發(fā)樹(shù),用于產(chǎn)品開(kāi)發(fā)、改進(jìn)、測(cè)試。源代碼版本序號(hào)形式:為x.y.zz結(jié)構(gòu),其中x為主版本號(hào),代表 的改動(dòng)升級(jí);y為次版本號(hào),表示功能性的改動(dòng);zz為末版本號(hào),表示BUG的改動(dòng)。其中x介于0到9之間,yy和zz則介于0到99之間。雙樹(shù)區(qū)分:對(duì)于穩(wěn)定樹(shù)來(lái)說(shuō),y是偶數(shù);對(duì)于開(kāi)發(fā)樹(shù)來(lái)說(shuō),y是比相應(yīng)穩(wěn)定樹(shù)大1的奇數(shù)。例2.4.18等為穩(wěn)定內(nèi)核版本。Linux的內(nèi)核版本Linux操作系統(tǒng)概述一、
Linux操作系統(tǒng)Linux是按照 操作系統(tǒng)的要求而設(shè)計(jì)的一種小型操作系統(tǒng)。由一個(gè)內(nèi)核及一些根據(jù)需要進(jìn)行定制的系統(tǒng)模塊組成。其kernel很小,一般只有幾百kB左右。即使加上其它必須的模塊和應(yīng)用程序,所需的 空間也很小。它具有多任務(wù)、多進(jìn)程的系統(tǒng)特征,有些還具有實(shí)時(shí)性
。Linux需要移植:對(duì)于
Linux,一般都不是原封不動(dòng)地使用, 考慮各種具體系統(tǒng)的特點(diǎn),有針對(duì)性地對(duì)Linux內(nèi)核加以裁減、修改和補(bǔ)充。下面是Linux
的基本示意圖:BootLoader內(nèi)核初始化設(shè)備驅(qū)動(dòng)程序文件系統(tǒng)網(wǎng)絡(luò)模塊Boot
LoaderBoot
Loader:負(fù)責(zé)Linux
內(nèi)核的啟動(dòng),它用于初始化系統(tǒng)資源,關(guān)閉看門(mén)狗,改變系統(tǒng)時(shí)鐘,初始化的代碼 到內(nèi)存中去。如果它能到內(nèi)存中去運(yùn)行,就把她成為Boot器,將將操作系統(tǒng)
Loader
。簡(jiǎn)單的說(shuō),Boot
Loader就是這么一段程序,它在系統(tǒng)上電時(shí)開(kāi)始執(zhí)行,初始化硬件設(shè)備,準(zhǔn)備好軟件環(huán)境,最好調(diào)用操作系統(tǒng)的內(nèi)核。設(shè)備驅(qū)動(dòng)設(shè)備驅(qū)動(dòng):設(shè)備驅(qū)動(dòng)占據(jù)了Linux
內(nèi)核很大部分。同其它操作系樣,設(shè)備驅(qū)動(dòng)為它們所控制的硬件設(shè)備和操作系統(tǒng)提供接口。設(shè)備驅(qū)動(dòng)包括:字符型設(shè)備驅(qū)動(dòng),塊設(shè)備驅(qū)動(dòng),網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)文件系統(tǒng)是操作系統(tǒng)用于明確磁盤(pán)或分區(qū)上的文件的方法和數(shù)據(jù)結(jié)構(gòu);即在磁盤(pán)上組織文件的方法。也指用于文件的磁盤(pán)或分區(qū),或文件系統(tǒng)種類(lèi)。文件系統(tǒng):Linux
最重要的特性之一就是對(duì)多種文件系統(tǒng)的支持。如EXT2、EXT3、FAT、VFAT、ISO9660、NFS、SMB.這種特性使得Linux很容易地同其它操作系統(tǒng)共存。文件系統(tǒng)的概念使得用戶(hù)能夠查看設(shè)備上的文件和路徑而無(wú)須考慮實(shí)際物理設(shè)備的文件系統(tǒng)類(lèi)型。Linux
透明的支持許多不同的文件系統(tǒng),將各種安裝的文件和文件系統(tǒng)以一個(gè)完整的虛擬文件系統(tǒng)的形式呈現(xiàn)給用戶(hù)。文件系統(tǒng)類(lèi)型:文件ext2
:早期linux中常用的文件系統(tǒng)ext3
:ext2的升級(jí)版,帶日志功能RAMFS
:內(nèi)存文件系統(tǒng),速度很快
NFS:網(wǎng)絡(luò)文件系統(tǒng),由SUN發(fā)明,主要用于共享MS-DOS
:MS-DOS文件系統(tǒng)VFAT
:Windows
95/98
操作系統(tǒng)采用的文件系統(tǒng)FAT
:Windows
XP
操作系統(tǒng)采用的文件系統(tǒng)NTFS
:Windows
NT/XP
操作系統(tǒng)采用的文件系統(tǒng)
swap:用于linux的交換分區(qū),它的作用是在物理內(nèi)存使用完之后,將磁盤(pán)空間(也就是SWAP分區(qū))虛擬成內(nèi)存來(lái)使用。ISO9660
:大部分光盤(pán)所采用的文件系統(tǒng)
CRAMFS文件系統(tǒng):是專(zhuān)門(mén)針對(duì)閃存設(shè)計(jì)的只讀壓縮的文件系統(tǒng),其容量上限為256M,采用zlib壓縮,文件系統(tǒng)類(lèi)型可以是EXT2或EXT3.YAFFS(YetAnotherFlash
File
System)是第一個(gè)專(zhuān)門(mén)為NAND
Flash
器設(shè)計(jì)的
文件系統(tǒng),適用于大容量的
設(shè)備;并且是在GPL(General
Public
License)協(xié)議下發(fā)布的,可在其
免費(fèi)獲得源代碼。Linux結(jié)構(gòu)Linux與DOS文件系統(tǒng)區(qū)別Linux文件系統(tǒng)是一個(gè) 樹(shù)結(jié)構(gòu),最上層是根 ,其他的所有的。/sbin
/usr
/etcDos文件系統(tǒng)也采用/root
/lib
/hom
/mnt樹(shù)的結(jié)構(gòu),但DOS以都是從根 出發(fā)而生成/每個(gè)分區(qū)為樹(shù)根,有幾個(gè)分區(qū)就有幾個(gè)樹(shù)型結(jié)構(gòu)。C
D
ELinux下,任何一個(gè)
都可以是一個(gè)分區(qū)。因此,在分區(qū)時(shí),必須將一個(gè)分區(qū)安裝在樹(shù)根下面。Linux不僅將分區(qū)安裝為一個(gè) ,而且還將所有的硬件設(shè)備都安裝成一個(gè)個(gè)設(shè)備文件。對(duì)設(shè)備的操作是通過(guò)文件的操作完成的。Linux下常用 令、工具系統(tǒng)啟動(dòng)時(shí)要用到的程序、系 引導(dǎo)配置啟所有的設(shè)備文件。但不文件設(shè)系統(tǒng)管理時(shí)要用到的各而種配 件和子用戶(hù)主 ,用戶(hù)非標(biāo)準(zhǔn) ,內(nèi)空,但系統(tǒng)管理員的系統(tǒng)管理程序的程序使用的庫(kù)文件保d
與fl
兩個(gè)方
/
/
/
/bi一個(gè)虛擬的文件系統(tǒng),可用來(lái)包含許多被/bin/和/sbin/大多數(shù)情況下是空的,用來(lái)超級(jí)用戶(hù)(管理員)的
目外部設(shè)備的掛接點(diǎn),通常用通常用來(lái)安裝各種
地系統(tǒng)運(yùn)行時(shí)的各種臨時(shí)文件Linux文件系統(tǒng)結(jié)構(gòu)“/”根
:包含基本的操作系統(tǒng)和
工具。這個(gè)的文件可以啟動(dòng)系統(tǒng),并且需要的話,可以完成緊急“/root”和修復(fù)的功能。:系統(tǒng)管理員(也叫超級(jí)用戶(hù)或根用戶(hù))的Home
?!?usr”
:包含所有
令、程序庫(kù)、文檔和其它文件。這些文件在正常操作中不會(huì)被改變的。這個(gè)
也包含你的Linux
版本的主要的應(yīng)用程序。/usr/bin,/bin:一般性執(zhí)行程序放置的地方/usr/sbin,/sbin:系統(tǒng)管理員常用的指令集“/home”
:包含用戶(hù)的文件:參數(shù)設(shè)置文件、個(gè)性化文件、文檔、數(shù)據(jù)、
、緩存數(shù)據(jù)等。這個(gè)
在系統(tǒng)升級(jí)時(shí)應(yīng)該保留?!?mnt”:一般用來(lái)臨時(shí)掛載別的文件系統(tǒng),如FAT32,NTFS等。在這個(gè)文件夾
通常用來(lái)設(shè)置共享文件夾?!?bin”:系統(tǒng)啟動(dòng)時(shí)需要的執(zhí)行文件(二進(jìn)制),這些文件可以被普通用戶(hù)使用?!?sbin”:系統(tǒng)執(zhí)行文件(二進(jìn)制),這些文件不打算被普通用戶(hù)使用。(普通用戶(hù)仍然可以使用它們,但要指定。)“/etc”
:操作系統(tǒng)的配置文件
。/etc/rc.d/init.d:系統(tǒng)開(kāi)機(jī)的時(shí)候載入的服務(wù)程序的scripts
的放置點(diǎn)“/dev”:設(shè)備文件。LINUX下設(shè)備被當(dāng)成文件,正常情況下,設(shè)備會(huì)有一個(gè)獨(dú)立的子。這些設(shè)備的內(nèi)容會(huì)出現(xiàn)在獨(dú)立的子下。比如:/dev/usb1;/dev/tty0; /dev/console
等等“/lib”庫(kù)?!?var”:根文件系統(tǒng) 下程序和 模塊的共享:存放在操作中被改變的文件:假脫機(jī)文件、記錄文件、加鎖文件、臨時(shí)文件和頁(yè)格式化文件等“/boot”
:用于啟動(dòng)加載程序的文件。當(dāng)計(jì)算機(jī)啟動(dòng)時(shí),這些文件首先被裝載。這個(gè)也會(huì)包含Linux核(壓縮文件
vmlinuz)。用于啟動(dòng)加載程序(LILO或GRUB)“/opt”
:可選的應(yīng)用程序。譬如,REDHAT5.2下的KDE
(REDHAT
6.0下,KDE放在其它的X-WINDOWS應(yīng)用程序中,主執(zhí)行程序在/usr/bin下)“/tmp”
:
臨時(shí)文件。該
會(huì)被自動(dòng)清理干凈。“/lost+found”件。:在文件系統(tǒng)修復(fù)時(shí)恢復(fù)的文Linux的文件類(lèi)型文件名Linux文件的名字可以由字母字符、下劃線和數(shù)字組成,也可以加上
和逗號(hào)。文件名的第一個(gè)字符不能是數(shù)字,短劃線、句點(diǎn)和星號(hào)等被系統(tǒng)用作特殊符號(hào)的其他符號(hào)。用“.”開(kāi)始的文件為隱藏文件,稱(chēng)為“點(diǎn)文件”。可用指令“file
文件名”來(lái)查看文件類(lèi)型。例如:#file
/bin/bin:
directory文件類(lèi)型:、壓縮的和歸檔的文件.bz2
—使用bzip2
方式壓縮的文件.gz
—使用gzip方式壓縮的文件.tar
—使用tar方式(tape
archive,磁帶歸檔的簡(jiǎn)寫(xiě))壓縮的文件,又稱(chēng)
tar
文件.tbz
—用tar
和bzip
壓縮的文件.tgz
—用tar
和gzip
壓縮的文件.zip—使用ZIP
壓縮的文件,在
MS-DOS
應(yīng)用程序中常見(jiàn)。多數(shù)為L(zhǎng)inux
壓縮的文件使用gzip
壓縮,因此Linux
文件中的.zip歸檔較少見(jiàn)。(2)、文件格式.au—音頻文件.gif—GIF
圖像文件.html/.htm—HTML
文件.jpg—JPEG
圖像文件.pdf—文檔的電子映像;PDF
代表PortableFormat(可移植文檔格式).png—PNG
圖像文件(Portable
NetworkGraphic
的簡(jiǎn)寫(xiě),可移植網(wǎng)絡(luò)圖形).ps—PostScript
文件,為打印而格式化過(guò)的文件.txt—純ASCII
文本文件.wav—音頻文件.xpm—圖像文件(3)、系統(tǒng)文件..conf
—一種配置文件。配置文件有時(shí)也使用.cfg。.lock—鎖(lock)文件;用來(lái)判定程序或設(shè)備是否正在被使用.rpm
—
Red
Hat
用來(lái)安裝
的
包管理器文件(4)、編程和
文件.c—C程序語(yǔ)言的源碼文件.cpp—C++程序語(yǔ)言的源碼文件.h—C
或C++程序語(yǔ)言的頭文件.o—程序的對(duì)象文件.pl
—
Perl.py
—Python.so—庫(kù)文件.sh
—
s.tcl
—
TCL常用的Linux文件系統(tǒng)Linux系統(tǒng)
支持十多種文件系統(tǒng)類(lèi)型:
ext、ext2、ext3、CRAMFS、msdos、umsdos、Vfat、NTFS等。minix
linux:最早使用的文件系統(tǒng)ext2
linux和ext3
linux:目前常用的文件系統(tǒng)nfs:網(wǎng)絡(luò)文件系統(tǒng)cramfs:只讀文件系統(tǒng)主要內(nèi)容1、Linux外殼s2、Linux常用命令Linux常用命令Linux外殼的功能:
s
是一種命令解釋器,提供了用戶(hù)和操作系統(tǒng)之間的交互接口。對(duì)用戶(hù)輸入
令,由外殼進(jìn)行解釋?zhuān)缓髮⒔忉?/p>
令送到操作系統(tǒng)去執(zhí)行。
s
可以執(zhí)行Linux的系統(tǒng)命令,也可以執(zhí)行應(yīng)用程序。用戶(hù)還可以利用外殼編程,執(zhí)行復(fù)雜令程序。Linux有多種s
,為用戶(hù)提供選擇。Linux外殼s常用的s
:p71bash、ash、csh、ksh、tcsh等。bash是Linux默認(rèn)使用的s
,它由Brian
Fox
和Chet
Ramey共同完成的。bash是Bourne
Again
S的縮寫(xiě), 命令有40個(gè)。Bash有如下特點(diǎn):1)使用方向鍵查閱已使用過(guò)
令行。2)補(bǔ)全命令行,按Tab鍵。3)可以使用通配符“?”、“*”。
4)有管道命令“|”,用“|”可將多個(gè)命令連接起來(lái)執(zhí)行,前面命令的輸出是后者的輸入。1、ls---文件及子
名列表語(yǔ)法格式:ls
[option]
[file]如:ls
以默認(rèn)方式顯示當(dāng)前下的子和文件。ls
–a
顯示所有文件,包括隱藏文件。ls
–l
以默認(rèn)方式顯示文件屬性,包括大小、日期、所有者、權(quán)限及名稱(chēng)。ls–F
以默認(rèn)方式顯示文件及類(lèi)型,以“/”結(jié)尾的為,以“*”結(jié)尾的為可執(zhí)行文件,以“@”結(jié)尾的為符號(hào)。Linux常用命令屬性文件數(shù)量所有者文件屬性符號(hào)格式:arwxrwxrwx
n
owner
group
size
date
name例如:drwxr-xr-x
2root
root4096
2008-3-3
bina:文件性質(zhì),可以是:n:對(duì)文件指硬連接數(shù)對(duì) 指含的子
數(shù)d:
文件;l:
符號(hào) 文件;b:
塊類(lèi)型設(shè)備文件;c:
字符型設(shè)備文件。r:
read,讀w:
write,寫(xiě)x:
execute,執(zhí)行紅色:文件擁有者權(quán)限黑色:文件組擁有者權(quán)限藍(lán)色:其他用戶(hù)的權(quán)限od更改 權(quán)限
od用于改變文件或的權(quán)限。用戶(hù)用它控制文件或的權(quán)限。該命令有兩種用法。一種是包含字母和操作符表達(dá)式的文字設(shè)定法;另一種是包含數(shù)字的數(shù)字設(shè)定法。1.文字設(shè)定法語(yǔ)法:
od
[who]
[+
|
-
|
=]
[mode]
文件名例如:
od
g+r,o+r
example操作對(duì)象who
下述字母中的任一個(gè)或者它們的組合:u
表示“用戶(hù)(user)”,即文件或 的所有者。g
表示“同組(group)用戶(hù)”,即與文件屬主有相同組ID的所有用戶(hù)。o
表示“其他(others)用戶(hù)”。a
表示“所有(all)用戶(hù)”。它是系統(tǒng)默認(rèn)值。操作符號(hào)可以是:
+
:添加某個(gè)權(quán)限。
-
:取消某個(gè)權(quán)限。
=
:賦予給定權(quán)限并取消其他所
限設(shè)置mode所表示的權(quán)限可用下述字母的任意組合:r
可讀、w
可寫(xiě)、x
可執(zhí)行……(其他省略)語(yǔ)法:
od
[who]
[+|
-
|
=][mode]
文件名文件名:以空格分開(kāi)的要改變權(quán)限的文件列表,支持通配符。在一個(gè)命令行中可給出多個(gè)權(quán)限方式,其間用逗號(hào)隔開(kāi)。例如:
od
g+r,o+r
example%使同組和其他用戶(hù)對(duì)文件example
有讀權(quán)限。2.
od數(shù)字設(shè)定法須首先了解用數(shù)字表示的屬性的含義:0表示沒(méi)限,1表示可執(zhí)行權(quán)限,2表示可寫(xiě)權(quán)限,4表示可讀權(quán)限,然后將其相加。所以數(shù)字屬性的格式應(yīng)為3個(gè)從0到7的八進(jìn)制數(shù),其順序是(u)(g)(o)。例如,如果想讓某個(gè)文件的屬主有“讀/寫(xiě)”二種權(quán)限,需要把4(可讀)+2(可寫(xiě))=6(讀/寫(xiě))。數(shù)字設(shè)定法的一般形式為:語(yǔ)法:
od
[mode]
文件名比如
od777
example;%表示用戶(hù)\同組用戶(hù)\其他用戶(hù)對(duì)文件example具有可讀\可寫(xiě)\執(zhí)行的權(quán)限比如
od755example;%表示用戶(hù)對(duì)文件example具有可讀\可寫(xiě)\執(zhí)行的權(quán)限,同組用戶(hù)\其他用戶(hù)只具有執(zhí)行和可讀的權(quán)限3、cd---改變工作語(yǔ)法格式:cd[directory]如:(
切換)切換到根cd
dir
切換到當(dāng)前 下的dir
。。切換到上一級(jí)
。切換到當(dāng)前 下的某下的abc
。cd
/cd
..cd
~/abc幾個(gè)符號(hào)“.”:本級(jí):
“/”:根;
“..”:4、cp---
文件和語(yǔ)法格式:cp
[源文件及路徑]
[目標(biāo)文件及路徑]cp
-r
源 目標(biāo)如:cpfile1
file2
將文件file1cp/root/file
.
將/root成file2。下的文件file到當(dāng)前
下,名字仍為file
。filecp
file到/usr/usr
將當(dāng)前 下的文件下,名字仍為file
。錄,全部cp
–r
dir1
dir2
將dir1下的文件和目到dir2
下。5、rm---刪除文件語(yǔ)法格式:rm[filename]如:刪除當(dāng)前刪除當(dāng)前刪除當(dāng)前rmfile1rm
*.crmabc.*文件。rm
*刪除當(dāng)前下的file1文件下的所有c文件下主文件名為abc的所有下的所有文件6、mv---移動(dòng)或更改文件、
名語(yǔ)法格式:mv
源地址
目標(biāo)地址如:mv file1
file2
將文件file1更改為file2
mv file1
dir2
將文件file1移動(dòng)到
dir2下,文件名仍為file1。mv dir1
dir2
將
dir1更改為dir2。7、建立語(yǔ)法格式:mkdir
[option]
名如:mkdir dir1
在當(dāng)前 下建立新
dir1。mkdir
dir1/dir2
在當(dāng)前 下的dir1
下建立新
dir2。mkdir -pdir3/dir4
在當(dāng)前dir3
,然后在dir3下建立新下先建立新dir4。8、刪除名名語(yǔ)法格式:rmdirrm
–r如:rmdir
dir1
刪除rm–r
dir2刪除dir1(dir1下必須為空)。dir2及其子
下所有文件。2、查看文件內(nèi)容命令1)cat---連續(xù)顯示格式:cat
filename如:catfile1cat
file2
|
more以連續(xù)方式顯示file1內(nèi)容以分頁(yè)方式顯示file2內(nèi)容2)more---分頁(yè)顯示格式:more
filename按空格查看下一頁(yè),按回車(chē)下一行。3)less---分頁(yè)并且可往回查看格式:less
filename按“空格”查看下一頁(yè);按“b”查看上一頁(yè);按“回車(chē)”下一行;按“q”鍵退出。10、ln---文件硬
:只針對(duì)文件而言語(yǔ)法格式:ln
源文件名及路徑
目標(biāo)文件名及路徑如:ln
file1
dir2/file2
將當(dāng)前
下file1,
到當(dāng)前
下的dir2下,名為file2ln
dir3/file3file4
將當(dāng)前
下的dir3
下的file3,
到當(dāng)前
下,名為file4刪除方法:用rm命令(2)符號(hào)(相當(dāng)于Win2k的快捷方式)語(yǔ)法格式:ln
–s
源文件名及路徑
目標(biāo)文件名及路徑如:ln
-s
file1
dir2/file2
將當(dāng)前到當(dāng)前 下的dir2下的文件file1,下,文件名為file2。ln–s dir3/file3
file4
將當(dāng)前 下dir3
下的文件file3, 到當(dāng)前 下,文件名為file4。刪除方法:用rm命令11.grep:列出含有某個(gè)字符串的文件格式:grep[options]pattern
[file]例如:(1)在內(nèi)核 下查找包含“request_irq”文件#
cd/mnt/hgfs/fs2410_2.6.8#grep
“request_irq”
*
-R*表示在當(dāng)前
下查找,-R表示遞歸查找所有的子#grep
“request_irq”
kernel
-R12.find:列出滿足某種條件的文件格式:
find
[-H][-L][-P][path][expression]例如:(1)在內(nèi)核
下查找包含“request_irq”文件#cd
/mnt/hgfs/fs2410_2.6.8#find -name
“*fb*”*表示在當(dāng)前
下查找文件包含“fb”的字樣11、tar---壓縮與解壓語(yǔ)法格式:tar
-參數(shù)(必選)+參數(shù)(可選)
目標(biāo)文件
(.tar
.gz)
源文件/主選項(xiàng)c
創(chuàng)建 文件r
追加文件到創(chuàng)建好的 文件末尾文件,如果有則覆蓋,沒(méi)有則追加末尾文件t
列出 文件包含的文件u
更新x輔助選項(xiàng)b
磁帶機(jī)
塊大小20(20*512bytes)f
必須選項(xiàng)k
壓縮/解壓縮過(guò)程中保存同名文件m
還原文件時(shí),修改文件時(shí)間為當(dāng)前時(shí)間M
創(chuàng)建多卷文件v
顯示處理信息w
每一步都要求確認(rèn)z
用gzip壓縮/解壓縮文件11、tar---壓縮與解壓(1)壓縮文件語(yǔ)法格式:tar cfzv
目標(biāo)文件路徑
被壓縮的如:tar
cfzv
dir1/file1.tgz將當(dāng)前 下的dir2為文件file.tgz,存放在當(dāng)前dir2下的所有文件,壓縮下的dir1
下。說(shuō)明:選項(xiàng)4個(gè)字母cfzv,不分次序。(2)解壓文件tarxfzv
被解壓的文件路徑
保存的tar
xfzv
file.tgz
dir1下的dir1將文件file.tgz解壓,保存到當(dāng)前下。說(shuō)明:選項(xiàng)4個(gè)字母xfzv,不分次序?qū)嵗?tar
-cf
mydir.tar
mydir#將mydir
下所有文件打包到mydir.tar#tar-uf
mydir.tar
mydir#更新mydir.tar#tar
-tf
mydir.tar#顯示mydir.tar內(nèi)的文件#tar
-cf
/dev/fd0
mydir#用設(shè)備名稱(chēng)作
名#tar
-xf
/dev/fd0#恢復(fù)軟盤(pán)中的文件fdisk-l
查看U盤(pán)標(biāo)識(shí)符root@ubuntu:/#
fdisk
-lDisk
/dev/sda:
42.9
GB,
42949672960
bytesDevice
Boot
Start
End
BlocksId
System/dev/sda1
*2048
81788927
40893440 83
Linux/dev/sda2817909748388403110465295
Extended/dev/sda58179097683884031104652882
Linux
swap
/
SolarisDisk
/dev/sdb:15.9
GB,bytes1
heads,
1
sectors/track,
30965760
cylinders,
total
30965760
sectorsUnits
=
sectors
of
1
*
512
=
512
bytesSector
size
(logical/physical):
512
bytes/
512
bytes12、磁盤(pán)、
掛接與卸載(1)mount---掛接語(yǔ)法格式:mount
[option]
被掛接的設(shè)備 掛接點(diǎn)掛接點(diǎn)mount
IP地址:被掛接的
option:文件類(lèi)型:二進(jìn)制、文本、可執(zhí)行等如:mount-t
yaffs
/dev/mtdblock0
/mnt把/dev/mtdblock0
裝載到/mntmount
-t
nfs
:/friendly-arm/root
/mnt將nfs
服務(wù)的共享
/friendly-arm/root
掛接到/mnt(2)umount---卸載語(yǔ)法格式:umount
被掛接或掛接點(diǎn)掛載文件系統(tǒng)將一個(gè)文件系統(tǒng)的頂層 掛到另一個(gè)文件系統(tǒng)的子上,使它們成為一個(gè)整體,稱(chēng)為掛載。把該子目錄稱(chēng)為掛載點(diǎn)。當(dāng)一個(gè)機(jī)器上裝了多個(gè)操作系統(tǒng),比如在Linux工作時(shí)需
Windows下的C盤(pán),則需要在Linux上掛載采用mount命令掛載,umount命令卸載。為避免每次系統(tǒng)啟動(dòng)時(shí)都掛接,可寫(xiě)入相應(yīng)命令到/etc/fstab。YAFFS(Yet
Another
Flash
File
System)是第一個(gè)專(zhuān)門(mén)為NAND
Flash統(tǒng),適用于大容量的器設(shè)計(jì)的
文件系設(shè)備;NFS是Network
FileSystem的簡(jiǎn)寫(xiě),即網(wǎng)絡(luò)文件系統(tǒng).
網(wǎng)絡(luò)文件系統(tǒng)是FreeBSD支持的文件系統(tǒng)中的一種,也被稱(chēng)為NFS.NFS允許一個(gè)系統(tǒng)在網(wǎng)絡(luò)和文件。通過(guò)使用NFS,用戶(hù)本地文件一樣
遠(yuǎn)端系統(tǒng)上上與他人共享和程序可以像的文件。,新建所掛接分區(qū)對(duì)應(yīng)
,例加掛FAT32系統(tǒng)首先進(jìn)入/mntwinDmount
–t
vfat
–o
iocharset=cp936
/dev/hda2
/mnt/winD其中,hda2為D盤(pán)對(duì)應(yīng)的設(shè)備文件,可通過(guò)“fdisk-l”命令或“系統(tǒng)工具/硬件瀏覽器”中查看各盤(pán)對(duì)應(yīng)的設(shè)備文件。加掛ntfs系統(tǒng)-
fs加掛U盤(pán)上的文件系統(tǒng)mount
–t
vfat
–o
iocharset=cp936
/dev/sda1
/mnt/udiskpwd(print
working
directory)功能說(shuō)明:顯示工作
。語(yǔ)
法:pwd
[--help][--version]補(bǔ)充說(shuō)明:執(zhí)行pwd指令可立刻得知您目前所在的工作目錄的絕對(duì)路徑名稱(chēng)。參
數(shù):--help
。--version
顯示版本信息。例子:/root#
pwd
(回車(chē))/root#
/rootexport功能說(shuō)明:設(shè)置或顯示環(huán)境變量。例子:
/root# export
lib_dir=/usr/lib/bin語(yǔ)
法:export
[-fnp][變量名稱(chēng)]=[變量設(shè)置值]補(bǔ)充說(shuō)明:在s
中執(zhí)行程序時(shí),s
會(huì)提供一組環(huán)境變量。export可新增,修改或刪除環(huán)境變量,供后續(xù)執(zhí)行的程序使用。export的效力僅及于該s
內(nèi)有效。參
數(shù):-f
代表[變量名稱(chēng)]中為函數(shù)名稱(chēng)。-n
刪除指定的變量。變量實(shí)際上并未刪除,只是不會(huì)輸出到后續(xù)指令的執(zhí)行環(huán)境中。-p
列出所有的s
賦予程序的環(huán)境變量。12、s應(yīng)用手冊(cè)---man對(duì)于Linux
令,隨時(shí)可以使用隨機(jī)所帶的應(yīng)用手冊(cè)獲得幫助。獲得幫助方法:man
命令名如:man
cp13、Linux應(yīng)用程序的幫助---help對(duì)于Linux的應(yīng)用程序,可以使用各個(gè)應(yīng)用的幫助功能---help,獲得幫助。獲得幫助方法:應(yīng)用程序名
--help如:gcc
--helpLinux命令大全/3.2 Windows下的Linux環(huán)境
---Cygwin主要內(nèi)容1、Cygwin2、Cygwin3、Cygwin功能安裝3.2.1
Cygwin
功能Cygwin是一個(gè)在Windows平臺(tái)上運(yùn)行的、模擬Linux環(huán)境
的
,并且該
也將GNU工具移植到了Win32系統(tǒng)上??梢詫ygwin理解成一個(gè)DLL.安裝了Cygwin后,啟動(dòng)Cygwin,Windows系統(tǒng)就模擬出一部Linux主機(jī),用戶(hù)便可像在純Linux下一樣使用Linux及其各種工具 、應(yīng)用 等。工具包括Bash
s
等常用工具.該 對(duì)于剛開(kāi)始使用Linux的人來(lái)說(shuō),是極好的選擇,結(jié)構(gòu),也刪除文件、用戶(hù)可以方便地回到Windows下查看文件和可以在Windows下進(jìn)行各種文件操作,如
移動(dòng)文件、解壓文件、查找文件等。3.2.2
CygwinCygwin是Cygwin
solutions公司開(kāi)發(fā)的 ,可以到公司
上免費(fèi)
,包括Cygwin和各種開(kāi)發(fā)工具的源代碼程序。Cygwin
solutions公司的 是:http://
。
在網(wǎng)頁(yè)上單擊“Install
Cygwin
Now”,會(huì)先 一個(gè)叫做setup.exe的安裝程序,運(yùn)行Cygwin
下的“setup.exe”,會(huì)出現(xiàn)一個(gè) 安裝的界面.有三項(xiàng):“Intall
from
Internet”、“Download
withoutIntalling”、“Intall
fromLocalDirectory”,一般應(yīng)選擇第二項(xiàng),先 ,再安裝,不進(jìn)行直接安裝。有三項(xiàng):“Intall
from
Internet”、“DownloadwithoutIntalling”、“Intall
from
Local
Directory”,一般應(yīng)選擇第二項(xiàng),先 ,再安裝,不進(jìn)行直接安裝。1、啟動(dòng)安裝再次運(yùn)行Cygwin
下的“setup.exe”,選擇第三項(xiàng)“Intall
from
LocalDirectory”,進(jìn)行本地安裝。P613.2.3
Cygwin
安裝2、選擇安裝、使用范圍當(dāng)出現(xiàn)如下界面時(shí),(1)需要選擇安裝
,一般不安裝在C盤(pán),注意磁盤(pán)空間應(yīng)不少于2GB;(2)選擇使用范圍
和文本文件類(lèi)型,選擇默認(rèn)項(xiàng):“All
Users”、“Unix”
即可。3、選擇安裝
包每種 包有“Default”、“Install”、“Reinstall”、“Uninstall”4種安裝選擇,可以根據(jù)需要逐一選擇。一般可以做如下選擇:選擇All為“Default”對(duì)如下 包選擇“Install”:基本服務(wù)工具
Archive:
壓縮、解壓工具Admin:Base:Net:Shall:基本的Linux工具網(wǎng)絡(luò)工具
外殼工具集Libs:
系統(tǒng)庫(kù)文件Untils:
實(shí)用工具Editor: 編輯器集3.4交叉編譯預(yù)備知識(shí)1)交叉編譯器概述交叉編譯就是在一個(gè)平臺(tái)上生成可以在另一個(gè)平臺(tái)上執(zhí)行的代碼。注意這里的平臺(tái),實(shí)際上包含兩個(gè)概念:體系結(jié)構(gòu)(Architecture)、操作系統(tǒng)(Operating
System)。同一
系結(jié)構(gòu)可以運(yùn)行不同的操作系統(tǒng);同樣,同一個(gè)操作系統(tǒng)也可以在不同的體系結(jié)構(gòu)上運(yùn)行。舉例來(lái)說(shuō), 常說(shuō)的x86
Linux平臺(tái)實(shí)際上是In
x86體系結(jié)構(gòu)和Linux
for
x86操作系統(tǒng)的統(tǒng)稱(chēng);而x86
WinNT平臺(tái)實(shí)際上是In x86
體系結(jié)構(gòu)和Windows
NT
for
x86
操作系統(tǒng)的簡(jiǎn)稱(chēng)。1、采用交叉編譯的主要原因:多數(shù)
目標(biāo)機(jī)不能提供足夠的資源供編譯過(guò)程使用,因而只好將編譯工作轉(zhuǎn)移到高性能的宿主機(jī)中進(jìn)行。2、編譯環(huán)境:即創(chuàng)建交叉編譯工具的編譯環(huán)境是一個(gè)由編譯器、連接器和解釋器組成的綜合開(kāi)發(fā)環(huán)境。3、交叉編譯工具(鏈):交叉編譯工具(鏈)主要包括針對(duì)目標(biāo)系統(tǒng)的編譯器gcc、目標(biāo)系統(tǒng)的二進(jìn)制工具binutils、目標(biāo)系統(tǒng)的標(biāo)準(zhǔn)c庫(kù)glibc和目標(biāo)系統(tǒng)的Linux
內(nèi)核頭文件。3.4交叉編譯預(yù)備知識(shí)3.4交叉編譯預(yù)備知識(shí)
接下來(lái)所要使用的是ARM-Linux2.6平臺(tái),說(shuō)明
的體系結(jié)構(gòu)是ARM,而操作系統(tǒng)為L(zhǎng)inux2.6而對(duì)應(yīng)的目標(biāo) 有MIPS,SuperH、POWERPC等而所涉及到的目標(biāo)硬件S3C2410而言,之所以使用交叉編譯是因?yàn)樵谠撚布蠠o(wú)法安裝 所需的編譯器,只好借助于宿主機(jī)(PC機(jī)),在宿主機(jī)(PC機(jī))上對(duì)即將運(yùn)行在目標(biāo)機(jī)上的應(yīng)用程序進(jìn)行編譯,生成可在目標(biāo)機(jī)上運(yùn)行的代碼格式。宿主機(jī)一般是一個(gè)基于X86架構(gòu)的計(jì)算機(jī), 統(tǒng)稱(chēng)為i386平臺(tái)。GNU
工具簡(jiǎn)介下面介紹在
系統(tǒng)開(kāi)發(fā)中用得最多的GNU
開(kāi)發(fā)工具。GNU
開(kāi)發(fā)工具包括C
編譯器GCC,C++編譯器G++,匯編器AS,
器LD,二進(jìn)制轉(zhuǎn)換工具(OBJCOPY,OBJDUMP),調(diào)試工具(GDB,GDBSERVER,KGDB)和基于不同硬件平臺(tái)的開(kāi)發(fā)庫(kù)。在GNUGCC支持下用戶(hù)可以使用流行的C/C++語(yǔ)言開(kāi)發(fā)應(yīng)用程序,滿足生成高效率運(yùn)行代碼、易掌握的編程語(yǔ)言的用戶(hù)需求。這些工具都是按GPL
發(fā)布,任何人可以從網(wǎng)上獲取全部的源代碼,無(wú)需使用任何費(fèi)用。關(guān)于GNU
和公的介共 證協(xié)議的詳細(xì)資料,
讀者可以參看GNU紹,。運(yùn)行于Linux
操作系統(tǒng)下的
GNU
gcc
編譯器,不僅可以編譯Linux
操作系統(tǒng)下運(yùn)行的應(yīng)用程序,還可以編譯Linux
內(nèi)核本身。甚至可以作交叉編譯,編譯運(yùn)行于其它CPU上的程序。在這里 用的是arm-linux-工具鏈。如arm-linux-gcc和arm-linux-g++主要內(nèi)容1、vim概述2、vim的啟動(dòng)3、vim的工作模式Linux文本編輯器vimvim概述p69vim是Linux的全屏幕編輯器,是vi
(Visual
interface)的增強(qiáng)型版本,用它可以進(jìn)行文本文件的編輯、數(shù)據(jù)文件(1)vim
回車(chē)啟動(dòng)vim,并且打開(kāi)一個(gè)新文件。編輯,也用它做源程序的編輯。類(lèi)似于Windows/DOS下的EDIT編輯器。Vim可以執(zhí)行輸出、刪除、查找、替換、塊操作等眾多文本操作。Vim的啟動(dòng)有兩種方法:(2)vim
file
回車(chē)啟動(dòng)vim,并且打開(kāi)file文件,如果file不存在,則創(chuàng)建file文件。vim的工作模式vim有三種工作模式:命令行模式、文本輸入模式、末行模式。一、命令行模式1、命令行模式的功能就是vim認(rèn)為從鍵盤(pán)輸入的是命令,完成各種編輯操作。注意:(1)在該模式下,從鍵盤(pán)所有輸入令,都不在屏幕上顯示出來(lái);(2)如果輸入的不是合法命令則響鈴。二、文本輸入模式輸入
命令’I’后,進(jìn)入文本輸入模式,在該模式下從鍵盤(pán)輸入的均作為編輯的內(nèi)容。按ESC返回。三、末行命令模式按下
“:”符號(hào)后進(jìn)入,輸入 令在末行顯示,按回車(chē)執(zhí)行命令。二、文本輸入模式在該模式下從鍵盤(pán)輸入的均作為編輯的內(nèi)容。文本輸入模式進(jìn)入方法使用所有的“增加文本命令”和“改變和替換命令”后,均切換到文本輸入模式。最常用的是“a命令”和“i命令”:a
:在光標(biāo)位置后增加文本i
:在光標(biāo)位置前增加文本三、末行命令模式令在末行顯示,在屏幕的末行有“:”符號(hào),輸入按回車(chē)執(zhí)行命令。1、進(jìn)入末行命令模式的方法在命令模式下按“:”鍵,便進(jìn)入末行命令模式。2、退出末行模式的方法一個(gè)末行命令執(zhí)行完后,便自動(dòng)回到命令行模式。3、末行模式的功能與命令功能有二:保存文件、退出編輯器。末行模式 令如下:保存和寫(xiě)文件命令:w
將緩沖區(qū)的內(nèi)容寫(xiě)到文件:w
文件名 將緩沖區(qū)的內(nèi)容寫(xiě)到指定文件:w!文件名強(qiáng)制覆蓋寫(xiě)已經(jīng)存在的文件退出編輯器命令:q:q!:x未修改則退出,做過(guò)修改則提示保存不保存退出保存后退出(總做保存)對(duì):q有提示時(shí),若不保存退出,再進(jìn)入末行模式,:q!;若保存退出,可輸入Z、Z,或再進(jìn)入末行模式,:x2、進(jìn)入命令行的方法啟動(dòng)Vim時(shí)自動(dòng)進(jìn)入;在其它模式時(shí)按“ESC”鍵進(jìn)入。3、命令行命令(1)退出編輯器Z、Z
:保存所編輯的內(nèi)容,退出vim,返回到s
。(2)增加文本命令ashift+aishift+ioshift+o:在光標(biāo)位置后增加文本:在當(dāng)前行末增加文本:在光標(biāo)位置前增加文本:在當(dāng)前行前面增加文本:在當(dāng)前行下打開(kāi)一行增加文本:在當(dāng)前行上打開(kāi)一行增加文本塊
命令V/v
:塊開(kāi)始Y/y
:塊結(jié)束并P/p
:塊粘貼刪除文本:刪除光標(biāo)位置的字符:從當(dāng)前光標(biāo)位置刪除到行尾:刪除當(dāng)前行:刪除當(dāng)前行的剩余部分xd、$d、dshift+d(5)搜索/pattern?pattern:從光標(biāo)開(kāi)始處向文件尾搜索pattern字符:從光標(biāo)開(kāi)始處向文件首搜索pattern字符(5)改變和替換命令:s/p1/p2/g:
當(dāng)前行中所有的p1均用p2替代:n1,n2
s/p1/p2/g:
將第n1至n2中所有的p1均用p2替代:g/p1/p2/g:
當(dāng)文件中所有的p1均用p2替代資料《LinuxC》資源
:ftp://ligLinux編程概述GCCMakefile課程實(shí)踐Linux編程概述GCCMakefile課程實(shí)踐Linux編程概述Linux的編程語(yǔ)言開(kāi)發(fā)過(guò)程Linux開(kāi)發(fā)工具Linux的編程語(yǔ)言基本語(yǔ)言C、C++、Java……語(yǔ)言Perl、PHP、Bash……開(kāi)發(fā)過(guò)程編輯編譯運(yùn)行調(diào)試對(duì)源代碼進(jìn)行編輯,VI對(duì)源代碼編譯,生成目標(biāo)程序,GCC將分散的模塊組成一個(gè)可執(zhí)行的整體運(yùn)行編譯好的程序./+目標(biāo)文件名調(diào)試運(yùn)行時(shí)的錯(cuò)誤GDB---
continue函數(shù)庫(kù)分為靜態(tài)庫(kù)和動(dòng)態(tài)庫(kù)。靜態(tài)庫(kù):時(shí),靜態(tài)庫(kù)的文件代碼會(huì)被拷貝到可執(zhí)行文件中。動(dòng)態(tài)庫(kù):時(shí),動(dòng)態(tài)庫(kù)的代碼不會(huì)被加入可執(zhí)行文件中,而是在程序被執(zhí)行的時(shí)候加載。Linux開(kāi)發(fā)工具編輯工具VI編譯工具GCCLinux編程概述GCCMakefile課程實(shí)踐GCC簡(jiǎn)介基本規(guī)則常用參數(shù)實(shí)例分析簡(jiǎn)介1/3GCC概述gcc是一個(gè)強(qiáng)大的工具集合,它包含了預(yù)處理器,編譯器,匯編器, 器等組件。它會(huì)在需要的時(shí)候調(diào)用其他組件。輸入文件的類(lèi)型和傳遞給gcc的參數(shù)決定了gcc調(diào)用具體的哪些組件。對(duì)于開(kāi)發(fā)者,它提供的足夠多的參數(shù),可以讓開(kāi)發(fā)者全面控制代碼的生成,這對(duì)系統(tǒng)級(jí)的 開(kāi)發(fā)非常重要他可以處理C、C++、Fortan、Pascal、Objective-C、Java、Ada等。簡(jiǎn)介2/4簡(jiǎn)介3/4GCC的歷史1984,FSF建立,GNU
Project:開(kāi)放系統(tǒng)支撐1985,GCC項(xiàng)目啟動(dòng)1987,GCC
1.0
release,C
compiler1991,Linux項(xiàng)目開(kāi)始發(fā)布1992,GCC2.0
release,C/C++1994,Linux1.0
release1997,EGCS。Architecture
Related
Optimizationand
C++support2001,
GCC3.0
release,EGCS
Merged,MultiLanguages/
s2005,
GCC4.0
release,IR
Enhanced2007,
GCC4.2
release,OpenMP
support簡(jiǎn)介4/4系統(tǒng)GCC的特點(diǎn)支持多種編程語(yǔ)言-C/C++/Fortan/JAVA……可移植性強(qiáng):主要采用C語(yǔ)言編寫(xiě)交叉支持能力強(qiáng)Build,
host
and處理器支持多X86/ia/MIPS/ARM/SPARC/……應(yīng)用范圍廣
高性能計(jì)算、
服務(wù)器、PC、模塊化設(shè)計(jì)前端+中間表示|后端,松耦合基本規(guī)則GCC
令格式gcc
[options]
infile…..c為后綴的文件,C語(yǔ)言源代碼文件;.o為后綴的文件,是編譯后的目標(biāo)文件.s為后綴的文件,是匯編語(yǔ)言源代碼文件;gcc所包含的工具cc
:C編譯器cpp
:C預(yù)處理器。編譯器用它來(lái)將#include和#define
這類(lèi) 在源文件中展開(kāi)。g++:C++編譯器gcc
:C編譯器gccbug
:一個(gè)s,幫助創(chuàng)建有價(jià)值的bug報(bào)告。gcov
:覆蓋測(cè)試工具,用來(lái)分析在程序的哪里做優(yōu)化的效果最好。libgcc
gcc:的運(yùn)行時(shí)庫(kù)libstdc++:準(zhǔn)C++庫(kù),包含許多常用的函數(shù)。libsupc++:為C++語(yǔ)言提供支持的庫(kù)函數(shù)。1、命令gcc首先調(diào)用cpp進(jìn)行預(yù)處理,在預(yù)處理過(guò)程中,對(duì)源代碼文件中的文件包含(include)、預(yù)編譯語(yǔ)句(如宏定義define等)進(jìn)行分析。2、接著調(diào)用cc進(jìn)行編譯,這個(gè)階段根據(jù)輸入文件生成以.o為后綴的目標(biāo)文件。3、匯編過(guò)程是針對(duì)匯編語(yǔ)言的步驟,調(diào)用as進(jìn)行工作,一般來(lái)講,以.s和.S的匯編語(yǔ)言源代碼文件經(jīng)過(guò)預(yù)編譯的匯編語(yǔ)言源代碼文件都生成以.o為后綴的目標(biāo)文件。4、當(dāng)所有的目標(biāo)文件都生成之后,gcc就調(diào)用ld來(lái)完成最后的關(guān)鍵性工作,這個(gè)階段就是連接。在連接階段,所有的目標(biāo)文件被安排在可執(zhí)行程序中的恰當(dāng)?shù)奈恢?,同時(shí),該程序所調(diào)用到的庫(kù)函數(shù)也從各自所在的庫(kù)中連到合適的地方。輸入文件的類(lèi)型gcc是通過(guò)后綴名來(lái)區(qū)別輸入文件的類(lèi)型,下面是gcc所遵循的部分約定規(guī)則。c為后綴的文件,C語(yǔ)言源代碼文件;.a為后綴的文件,是由目標(biāo)文件構(gòu)成的 庫(kù)文件;.C,.cc或.cxx
為后綴的文件,是C++源代碼文件;.h為后綴的文件,是程序所包含的頭文件;.i
為后綴的文件,是已經(jīng)預(yù)處理過(guò)的C源代碼文件;.ii為后綴的文件,是已經(jīng)預(yù)處理過(guò)的C++源代碼文件;.m為后綴的文件,是Objective-C源代碼文件;.o為后綴的文件,是編譯后的目標(biāo)文件;.s為后綴的文件,是匯編語(yǔ)言源代碼文件;.S為后綴的文件,是經(jīng)過(guò)預(yù)編譯的匯編語(yǔ)言源代碼文件。二、gcc應(yīng)用格式gcc的格式為:gcc
[option]file……gcc編譯器有許多選項(xiàng),但對(duì)于普通用戶(hù)來(lái)說(shuō)只要知道其中常用的幾個(gè)就夠了。下面為幾個(gè)最常用的選項(xiàng):
-o表示要求編譯器生成所指定名字的可執(zhí)行文件(必須指定名字);
-c表示只要求編譯器進(jìn)行編譯和匯編,而不要求,生成后綴為.o的同名的目標(biāo)文件(不需要指定名字);編輯源程序,文件名為
o.cvoid
main(){
printf(“ o
theworld!\n”);}1)
gcc
–o
o
o.c對(duì)
o.c進(jìn)行編譯 ,生成可執(zhí)行文件o.exe。需要輸入目標(biāo)文件名。。產(chǎn)生的2)
gcc
–c只對(duì)目標(biāo)文件為o.co.c進(jìn)行編譯、匯編,不o.o。三、gcc應(yīng)用舉例一起來(lái)看一個(gè)例子p32File:main.c#include
<stdio.h>#include
"sub.h"int
main(int
argc,
char
*argv[]){int
i;printf("Main
fun!\n");sub_fun();return
0;}File:sub.hvoid
sub_fun(void);File:sub.cvoid
sub_fun(void){printf("Sub
fun!\n");}在s
里輸入如下命令:#
gcc
–c
–o
main.o
main.c#
gcc
–c
–o
sub.o
sub.c#
gcc
–o
test
main.osub.o-E
表示編譯器對(duì)源文件只進(jìn)行預(yù)處理就停止,而不做編譯、匯編和
;-S
表示編譯器只進(jìn)行編譯,而不做匯編和
;(不需要輸入目標(biāo)文件名)例如:
gcc
–S
o.c只對(duì)
o.c編譯,產(chǎn)生了匯編語(yǔ)言文件
o.s。不需要輸入目標(biāo)文件名。2.警告選項(xiàng)-Wall
指定產(chǎn)生全部的警告信息。例如
:
#gcc
–Wall
-c
main.c產(chǎn)生全部警告信息,比如沒(méi)有制定類(lèi)型的
、在聲就沒(méi)有再使明之前就使用的函數(shù)、局部變量除了用等。3.調(diào)試選項(xiàng)-g要求編譯器在編譯的時(shí)候,產(chǎn)生對(duì)程序進(jìn)行調(diào)試的信息;例如: gcc
–g
–o
o
o.c4.優(yōu)化選項(xiàng)-O
或-O1
是編譯器對(duì)程序提供的編譯優(yōu)化選項(xiàng),可以提高執(zhí)行文件的運(yùn)行效率;例如
:
#gcc
–Wall -O
-cmain.c-O0、-O1
、-O2
、-O3
是編譯器的優(yōu)化選項(xiàng)的4個(gè)級(jí)別。-O0表示沒(méi)有優(yōu)化,-O1為缺省值,-O3優(yōu)化級(jí)別高5.添加包含文件及庫(kù)文件路徑-Idir...把dir加到頭文件的搜索路徑中,而且gcc會(huì)在搜索標(biāo)準(zhǔn)頭文件之前先搜索dir.-L
dir...把dir加到庫(kù)文件的搜索路徑中,而且gcc會(huì)在搜索標(biāo)準(zhǔn)庫(kù)文件之前先搜索dir.優(yōu)化選項(xiàng)-O或-O1是編譯器對(duì)程序提供的編譯優(yōu)化選項(xiàng),可以提高執(zhí)行文件的運(yùn)行效率;例如
:
#gcc
–Wall -O
-cmain.c-O0、-O1
、-O2、-O3
是編譯器的優(yōu)化選項(xiàng)的4個(gè)級(jí)別。-O0
表示沒(méi)有優(yōu)化,-O1為缺省值,-O3優(yōu)化級(jí)別高-O
或-O1
是編譯器對(duì)程序提供的編譯優(yōu)化選項(xiàng),可以提高執(zhí)行文件的運(yùn)行效率;例如
:
#gcc
–Wall -O
-cmain.c-O0、-O1
、-O2、-O3是編譯器的優(yōu)化選項(xiàng)的4個(gè)級(jí)別。-O0
表示沒(méi)有優(yōu)化,-O1為缺省值,-O3優(yōu)化級(jí)別高gcc所生成的目標(biāo)文件格式所生成的為可執(zhí)行文件,Linux有兩種可執(zhí)行文件:ELF(a.exe)和a.out。ELF(Executive
linked
file)為可執(zhí)行文件,是一種新標(biāo)準(zhǔn),功能更強(qiáng)大。文件的擴(kuò)展名為.exe。ELF為L(zhǎng)inux的默認(rèn)格式gcc編譯器命令詳解httpea76e58fa0417.html/view/9ce92efa941Linux編程概述GCCMakefile課程實(shí)踐Makefile簡(jiǎn)介Make的語(yǔ)法及常用參數(shù)Makefile的基本結(jié)構(gòu)實(shí)例分析簡(jiǎn)介1/2What
is
Make?Make
是用于自動(dòng)編譯、 程序的實(shí)用工具。Make的優(yōu)點(diǎn)“自動(dòng)化編譯”,一旦寫(xiě)好,只需要一個(gè)make命令,整個(gè)工程完全自動(dòng)編譯,極大的提高了 開(kāi)發(fā)的效率。What
is
Makefile?在大型的開(kāi)發(fā)項(xiàng)目中,通常有幾十個(gè)到上百個(gè)的源文件,如果每次均手工鍵入gcc命令進(jìn)行編譯,會(huì)非常不方便。Linux專(zhuān)門(mén)為
開(kāi)發(fā)提供了一個(gè)自動(dòng)化的管理工具GNU
Make。Make的主要工作是Makefile文件的內(nèi)容。該文件描述了目標(biāo)文件之間的依賴(lài)關(guān)系,以及制定編譯過(guò)程中使用的工具。同時(shí),Make檢查目的文件的時(shí)間戳,如果目的文件的時(shí)間戳至少比他的一個(gè)依靠文件舊,Make可以自動(dòng)地更新和編譯程序。簡(jiǎn)介2/2Make的工作原理當(dāng)輸入make命令之后,會(huì)默認(rèn)的在當(dāng)前下尋找名為“Makefile”或“makefile”的文件。尋找到文件之后,make會(huì)一層又一層地去找文件的依賴(lài)關(guān)系,直到最終編譯出第一個(gè)目標(biāo)文件。在找尋的過(guò)程中,如果出現(xiàn)錯(cuò)誤,比如最后被依賴(lài)的文件找不到,那么make就會(huì)直接退出,并報(bào)錯(cuò),而對(duì)于所定義 令的錯(cuò)誤,或是編譯不成功,make根本不理。make
文件的依賴(lài)性,即,如果在我找了依賴(lài)關(guān)系之后,冒號(hào)后面的文件還是不在,那么對(duì)不起,我就不工作啦。Make的語(yǔ)法及常用參數(shù)]…make的使用make
[options]
[常見(jiàn)的選項(xiàng):-f
FILE
以指定的FILE
文件作為makefile。令,但不執(zhí)行這些-n
只打印要執(zhí)行命令。-s
在執(zhí)行命令時(shí)不顯示命令。-d
顯示調(diào)試信息make概述make依靠Makefile文件完成。默認(rèn)情況下,GNU
make工具在當(dāng)前工作 中按如下順序搜索makefile:”GNU
makefile”→”makefile”→”Makefile”。在Linux系統(tǒng)中,使用Makefile作為makefile文件。如果要使用其他文件作為makefile,則可利用下面make命令指明makefile文件:”#make
–f
Makefile.debug”。比如:“Make.Linux”,“Make.Solaris”,“Make.AIX”等,如果要指定特定的Makefile,你可以使用make的“-f”和“--file”參數(shù),如:make-f
Make.Linux或make--file
Make.AIX。Makefile是一個(gè)文本格式的數(shù)據(jù)庫(kù)文件,包含一些規(guī)則,告訴make編譯哪些文件,在什么條件下編譯。Makefile的基本結(jié)構(gòu)
1/2一個(gè)簡(jiǎn)單的Makefile文件包含一系列的“規(guī)則”,其樣式如下:目標(biāo)( )
:
依賴(lài)(prerequiries)…<tab>命令(command)Makefile的基本結(jié)構(gòu)
2/2目標(biāo)(
)通常是要產(chǎn)生的文件的名稱(chēng),目標(biāo)的例子是可執(zhí)行文件或OBJ文件。目標(biāo)也一個(gè)執(zhí)行的動(dòng)作名稱(chēng),這樣的目標(biāo)通常稱(chēng)為偽目標(biāo)(PHONY)諸如‘clean’。依賴(lài)是用來(lái)輸入從而產(chǎn)生目標(biāo)的文件,一個(gè)目標(biāo)經(jīng)常有幾個(gè)依賴(lài)。命令是Make執(zhí)行的動(dòng)作,一個(gè)規(guī)則可以含有幾個(gè)命令,每個(gè)命令占一行。每個(gè)命令行前面必須是一個(gè)Tab字符,即命令行第一個(gè)字符是Tab。這是不
容易出錯(cuò)的地方。先舉一個(gè)實(shí)例來(lái)認(rèn)識(shí)Make和Makefile文件的用法一起來(lái)看一個(gè)例子p45File:
o.c#include
<stdio.h>int
main(int
argc,
char
*argv[]){printf(" oWorld!\n");return
0;}File:makefileo:
o.c(Tab)gcc
-oo
o.cclean:(Tab)rm
–f
o如果一個(gè)工程有3個(gè)頭文件,和8個(gè)C文件,為了完成前面所述的那三個(gè)規(guī)則,的Makefile應(yīng)該是下面的這個(gè)樣子的。edit
:
main.o
kbd.o
command.odisplay.o
\insert.o
search.o
files.o
utils.ogcc
-o
edit
main.o
kbd.o
command.o
display.o
\insert.o
search.o
files.o
utils.omain.o
:
main.c
defs.hgcc
-c
main.ckbd.o
:
kbd.c
defs.h
command.hgcc
-c
kbd.ccommand.o:
command.c
defs.h
command.hgcc
-c
command.cdisplay.o
:
display.c
defs.h
buffer.hgcc
-c
display.c反斜杠(\)是換行符的意思以TAB鍵開(kāi)頭insert.o
:
insert.c
defs.h
buffer.hgcc
-cinsert.csearch.o
:
search.c
defs.h
buffer.hgcc
-csearch.cfiles.o
:
files.c
defs.h
buffer.h
command.hgcc
-cfiles.cutils.o
:utils.c
defs.hgcc
-cutils.cclean
:rm
edit
main.o
kbd.o
command.o
display.o
\insert.o
search.o
files.o
utils.omakefile中使用變量在上面的例子中,先讓
看看edit的規(guī)則:edit
:
main.o
kbd.o
command.o
display.o
\insert.o
search.o
files.o
utils.ogcc
-o
edit
main.o
kbd.o
command.o
display.o
\insert.o
search.o
files.o
utils.o可以看到[.o]文件的字符串被重復(fù)了兩次,如果的工程需要加入一個(gè)新的[.o]文件,那么 需要在兩個(gè)地方加。當(dāng)然, 的makefile并不復(fù)雜,所以在兩個(gè)地方加也不累,但如果makefile變得復(fù)雜,那么
就有可能會(huì)忘掉一個(gè)需要加入的地方,而導(dǎo)致編譯失敗。所以,為了makefile的易 ,在makefile中 可以使用變量。makefile的變量也就是一個(gè)字符串,理解成C語(yǔ)言中的宏可能會(huì)更好。的makefile中以“$(objects)”的方式來(lái)使用比如,
一個(gè)變量,叫objects.
在makefile一開(kāi)始就這樣定義:objects
=
main.o
kbd.o
command.o
display.o
\insert.o
search.o
files.o
utils.o很方便地在這個(gè)變量了程序如下:objects
=
main.o
kbd.o
command.o
display.o
\insert.o
search.o
files.o
utils.oedit
:
$(objects)gcc-o
edit
$(objects)……clean
:rm
edit
$
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026年有限空間作業(yè)安全生產(chǎn)管理制度考核辦法含答案
- 2026年人工智能體育分析認(rèn)證考試題含答案
- 機(jī)械前沿技術(shù)
- 2026年劇本殺運(yùn)營(yíng)公司劇本道具采購(gòu)管理制度
- 河南省南陽(yáng)市2025-2026學(xué)年高三上學(xué)期1月期末考試政治試題(含答案)
- 中醫(yī)養(yǎng)生與保健方法
- 2025年教育培訓(xùn)行業(yè)個(gè)性化學(xué)習(xí)方案創(chuàng)新報(bào)告
- 柏鄉(xiāng)輔警面試題目及答案
- 2025-2026學(xué)年廣東深圳實(shí)驗(yàn)學(xué)校七年級(jí)(上)期中考英語(yǔ)試題含答案
- 傳染病病例登記制度
- 肥胖患者全麻蘇醒期護(hù)理
- 職中開(kāi)設(shè)計(jì)算機(jī)專(zhuān)業(yè)可行性論證報(bào)告
- 國(guó)家中醫(yī)藥管理局《中醫(yī)藥事業(yè)發(fā)展“十五五”規(guī)劃》全文
- 舌咽神經(jīng)痛護(hù)理
- 英語(yǔ)詞根詞綴記憶大全(適合高中及大一英語(yǔ))
- 2025-2030中國(guó)水下安防裝備市場(chǎng)發(fā)展監(jiān)測(cè)與銷(xiāo)售前景戰(zhàn)略規(guī)劃報(bào)告
- 電網(wǎng)工程勞務(wù)分包
- 重慶市地圖矢量動(dòng)態(tài)模板圖文
- 《無(wú)人機(jī)綜合監(jiān)管與航路規(guī)劃》全套教學(xué)課件
- 物資有序存放與監(jiān)控管理方案
- 黑龍江省哈爾濱市2024屆中考數(shù)學(xué)試卷(含答案)
評(píng)論
0/150
提交評(píng)論