基礎(chǔ)篇講稿一Linux編程環(huán)境_第1頁
基礎(chǔ)篇講稿一Linux編程環(huán)境_第2頁
基礎(chǔ)篇講稿一Linux編程環(huán)境_第3頁
基礎(chǔ)篇講稿一Linux編程環(huán)境_第4頁
基礎(chǔ)篇講稿一Linux編程環(huán)境_第5頁
已閱讀5頁,還剩71頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

會計學1基礎(chǔ)篇講稿一Linux編程環(huán)境一、初識Linux第1頁/共75頁Linux的目錄結(jié)構(gòu)Linux下的文件類型Shell簡介常用Shell命令1.1 Linux的目錄結(jié)構(gòu)第2頁/共75頁/binbin該目錄中存放Linux的常用命令;/bootboot該目錄下存放的都是系統(tǒng)啟動時要用到的程序;/devdev該目錄包含了Linux系統(tǒng)中使用的所有外部設(shè)備,它實際上是訪問這些外部設(shè)備的端口,你可以訪問這些外部設(shè)備,與訪問一個文件或一個目錄沒有區(qū)別。/sbinsbin該目錄用來存放系統(tǒng)管理員的系統(tǒng)管理程序;/etc第3頁/共75頁etc該目錄存放了系統(tǒng)管理時要用到的各種配置文件和子目錄,例如網(wǎng)絡(luò)配置文件、文件系統(tǒng)等;/homehome如果建立一個名為“xx”的用戶,那么在/home目錄下就有一個對應(yīng)的“/home/xx”路徑,用來存放該用戶的主目錄;/lib

lib該目錄用來存放系統(tǒng)動態(tài)連接共享庫,幾乎所有的應(yīng)用程序都會用到該目錄下的共享庫。lost+found該目錄在大多數(shù)情況下都第4頁/共75頁/lost+found是空的。但當突然停電、或者非正常關(guān)機后,有些文件就臨時存放在這里。/mntmnt該目錄在一般情況下也是空的,你可以臨時將別的文件系統(tǒng)掛在該目錄下。proc可以在該目錄下獲取系統(tǒng)信息,/proc這些信息是在內(nèi)存中由系統(tǒng)自己產(chǎn)生的。/root第5頁/共75頁root超級用戶的主目錄;tmp用來存放不同程序執(zhí)行時產(chǎn)生的/tmp臨時文件;/usrusr用戶應(yīng)用程序和文件都存放在該目錄下;與windows的組織結(jié)構(gòu)的區(qū)別?1.2第6頁/共75頁Linux下的文件類型普通文件目錄文件連接文件設(shè)備文件普通文件第7頁/共75頁系統(tǒng)文件:.conf

.lock

.rpm編程和腳本文件:.c

.cpp.h.o

.pl

.py.so.sh.格式文件:.au

.gif

.html

.jpg

.pdf.壓縮以及歸檔文件:.bz2

.gz.tar

.tbz.tgz.zip目錄文件第8頁/共75頁目錄中包含文件以及下級子目錄,但目錄也是文件。這個文件中記錄了包含在它中的文件和子目錄的名稱與它所處的地址。目錄文件中記錄文件的名字,文件本身的記錄不包含文件名,對文件名進行的更改,實際是修改目錄文件中的一條文件記錄。連接文件第9頁/共75頁連接是Linux中比較特殊而非常有用的一種文件,類似于Windows中的快捷方式,它本身不包含任何內(nèi)容,它指向別的文件或目錄設(shè)備文件Linux下所有的設(shè)備都是通過文件來表示的,所有的設(shè)備文件都存放在/dev目錄下,設(shè)備文件的文件名就是設(shè)備名;設(shè)備文件的種類塊設(shè)備文件:/dev/hda1,這些設(shè)備以塊為最小單位。字符設(shè)備:/dev/ttyS0,字符設(shè)備按順序一個一個傳遞字符網(wǎng)絡(luò)接口:訪問網(wǎng)絡(luò)接口的方法是給它們分配一個惟一的名字(比如eth0),但這個名字在文件系統(tǒng)中不存在對應(yīng)的節(jié)點項第10頁/共75頁文件名通常都是尾部帶有設(shè)備編號數(shù)字的縮寫名稱。Linux下的文件詳細信息-rw-r--r-1-root

root

15228

2003-01-25a2ps.cfg文件類型文件權(quán)限鏈接個數(shù)文件屬主名用戶分組名文件長度文件上次被修改的時間和日期文件名第11頁/共75頁1.3

Shell簡介第12頁/共75頁什么是shell

?shell是用戶與Linux內(nèi)核之間的接口程序,是一個命令解釋器,擁有內(nèi)建的shell命令可以用來啟動、掛起、停止甚至編寫程序。shell是Linux操作系統(tǒng)的一個整體組成部分,也是Linux操作系統(tǒng)設(shè)計的一部分。如果把Linux操作系統(tǒng)的內(nèi)核想象成一個球體的中心,那么shell就是包圍內(nèi)核的外層。從shell或其他程序向Linux操作系統(tǒng)傳遞命令的時候,內(nèi)核就會做出相應(yīng)的反應(yīng)。shell與內(nèi)核之間的關(guān)系:我們在命令行中輸入的每一個命令都是由shell先解釋然后再傳給內(nèi)核。它們之間的關(guān)系很類似于MS-DOS中用戶與之間的關(guān)系,差別就是遠遠沒有shell強大。shell與用戶進程及其和內(nèi)核之間的關(guān)系第13頁/共75頁有很多種Shell,其中:Bash

(BourneAgainShell):第14頁/共75頁是目前大多數(shù)Linux(RedHat等)系統(tǒng)默認使用的Shell。Linux下打開終端就可以看到Shell提示符,作為Linux默認的

Bash對于普通用戶用$作為Shell提示符而對根用戶(root)用#作為

Shell提示符。1.4 常用Shell命令第15頁/共75頁Shell命令的一般格式:命令名

[選項]

[參數(shù)1]

[參數(shù)2]……對于選項和參數(shù)的說明選項:是包括一個或多個字母的代碼它前面有一個減號(-)

Linux用它來區(qū)別選項和參數(shù);多個選項可以用一個減號(-)連起來,例如:”ls–l-a”與”ls-la”相同。參數(shù):提供命令行運行的信息,或者是命令執(zhí)行過程中所使用的文件名.使用分號(;)可以將兩個命令隔開,便于一行中輸入多個命令。例如:”ls–l/home/zxq”命令會將/home/zxq目錄的內(nèi)容詳細列出。常用Shell命令介紹第16頁/共75頁一、獲取幫助信息命令1.man權(quán)限:所有用戶使用方法:man[查找內(nèi)容]說明:用于快速查詢命令和程序的使用方法等。例如:#man

ls2.

help第17頁/共75頁權(quán)限:所有用戶使用方法:[命令]--h(huán)elp說明:打印出需要查找?guī)椭畹膸椭畔?,根?jù)命令不同可能采用不同的參數(shù)--h(huán)elp或-h(huán)elp例如:

#

ls

-help

#

ls

--h(huán)elp1.

ls權(quán)限:所有用戶使用方法:ls[選項]...[文件]...說明:列出當前工作子目錄(默認)中的文件及子目錄清單。常用參數(shù):-a顯示所有文件及目錄(包括隱藏文件);-l顯示文件的詳細信息;-h以容易理解的方式打印文件大?。?k

32M

2G);-t將文件按建立的先后次序列出;-F在列出的文件名稱后加一個符號(可執(zhí)行文件“*”,目錄“/”);例如:[zxt@BC

home]$

ls-lh第18頁/共75頁二、瀏覽目錄常用命令2.cd命令權(quán)限:所有用戶使用方法:cd[目標路徑]說明:變換工作目錄到目標路徑,其中目標路徑可以是絕對路徑也可以是相對路徑。目標路徑名可以缺省,若缺省則變換至使用者的home

directory常用參(數(shù)用:戶登錄子目錄)。切換到當前目錄下的dir目錄cd

dircd/ 切換到根目錄cd

.. 切換到到上一級目錄cd

../.. 切換到上二級目錄cd

~ 切換到用戶目錄,比如是root用戶,則切換到/root下例如:[zxt@BChome]$

cd

/home/zxt/up-netarm2410[zxt@BChome]$

cd../../第19頁/共75頁3.pwd命令第20頁/共75頁權(quán)限:所有用戶使用方法:pwd說明:顯示用戶當前工作子目錄的完整路徑應(yīng)用示例:[zxt@BC

home]$

pwd,則出現(xiàn)/home4.dir命令權(quán)限:所有用戶使用方法:dir[路徑][文件名]說明:功能于ls命令類似(列出當前工作子目錄(默認)中的文件及子目錄清單)。三、閱讀常用命令第21頁/共75頁1.cat命令權(quán)限:所有用戶使用方法:cat[參數(shù)]

[文件名]說明:可以顯示文件內(nèi)容,或者把文件串接后輸出到基本輸出(或另一個文件)。常用參數(shù):-n:由1開始對所有輸出行數(shù)編號-b:與-n類似,只是不對空白行編號應(yīng)用示例:[zxt@BC

home]$

cat

–n

textfile1

>

textfile2[zxt@BC

home]$

cat

text1

text2

>

text32.more命令第22頁/共75頁權(quán)限:所有用戶使用方法:more[參數(shù)][文件名]說明:類似cat,但它可以分頁顯示,適合顯示長文件清單或文本內(nèi)容,最基本的指令就是按空格換頁,按回車下一行,按b鍵返回上一頁。常用參數(shù):-num:一次顯示的行數(shù)-d: 在屏幕最下方顯示提示信息+num:從第num行開始顯示應(yīng)用示例:[zxt@BChome]$

more

textfile3.less命令第23頁/共75頁權(quán)限:所有用戶使用方法:less[參數(shù)][文件名]說明:與more命令功能類似,可以用來瀏覽文字文件的內(nèi)容,less允許往回卷動已瀏覽過的部分。Less不會一開始就讀入整個文件,所以在打開文件時,會比一般的文本編輯器(vi)快。應(yīng)用示例:[zxt@BC

home]$

less

textfile四、查找常用命令第24頁/共75頁4.find命令權(quán)限:所有用戶使用方法:find[路徑][參數(shù)][查找相關(guān)內(nèi)容]說明:對某個特定文件、某些特定文件和某種類型的文件進行檢索,可以根據(jù)名字、類型、文件屬主以及上次修改時間來檢索常用參數(shù):-name:檢索文件名中包含查找內(nèi)容字符串的文件-type:檢索相應(yīng)類型的文件(d、c、等)-user:檢索創(chuàng)建用戶為查找內(nèi)容的文件應(yīng)用示例:[zxt@BC

home]$

find

/etc/[zxt@BC

home]$

find

/etc/-type

c–name

ex四、目錄操作常用命令第25頁/共75頁mkdir命令權(quán)限:所有用戶使用方法:mkdir[子目錄或子目錄完整路徑]說明:建立一個新的子目錄,使用子目錄的路徑作為參數(shù)應(yīng)用示例:[zxt@BC

home]$

mkdir/home/zxt/temprmdir命令權(quán)限:當前目錄有適當權(quán)限的所有者使用方法:rmdir[參數(shù)][子目錄或子目錄完整路徑]說明:刪除空的目錄應(yīng)用示例:[zxt@BC

home]$

rmdir

/home/zxt/temp五、文件操作常用命令1.rm命令第26頁/共75頁權(quán)限:當前文件有適當權(quán)限的所有者

使用方法:rm[參數(shù)][文件名或目錄]說明:刪除文件以及目錄常用參數(shù):-i:刪除前逐一詢問確定-f:即使原文件為只讀也強制刪除,并不詢問確定-r:同時刪除該目錄層下的所有目錄以及文件應(yīng)用示例:[zxt@BC

home]$

rm

-itextfile[zxt@BC

home]$

rm

–rf

/home/zxt/temp第一個會詢問是否刪除,按“y”將會刪除,按“n”將不會刪除。第二個將不會提示,直接刪除。2.mv命令第27頁/共75頁權(quán)限:當前文件有適當權(quán)限的所有者使用方法:mv[參數(shù)][原文件或目錄][目標文件或目錄]說明:將一個文件移至另一個文件,或?qū)⒍鄠€文件移動至另一個目錄,也可以將一個目錄移動至另一個目錄常用參數(shù):-i:若目的位置已有同名文件,則詢問是否覆蓋舊文件。應(yīng)用示例:[zxt@BC

home]$

mv

text1

text2[zxt@BC

home]$

mv

–i

*.c

/home/zxt/temp3.cp命令權(quán)限:所有用戶使用方法:cp[參數(shù)][原文件或目錄][目標文件或目錄]說明:將一個文件復制到另一個文件,或?qū)?shù)個文件復制到常用參另數(shù)一:個目錄中,也可以將一個目錄復制到另一個目錄-a:盡可能將文件的狀態(tài)、權(quán)限等信息全部復制-f:若目的地址有同名文件,則將已有的文件刪除再進行復制-r:若原目錄中包含子目錄,則原目錄中的文件及子目錄也依次復制到目的地址中應(yīng)用示例:[zxt@BC

home]$

cp

text1

text2[zxt@BC

home]$

cp

–arf

up-tech/

/temp第28頁/共75頁LINUX的軟件一般是以.gz或.tar或者.tar.gz結(jié)尾的。.gz是由gzip程序壓縮的,.tar.gz是先用tar程序歸檔(打包),再用gzip程序壓縮而成的。注意:打包和壓縮是不同的概念1、以.gz結(jié)尾的為壓縮文件,用命令:gzip-d

filename來解壓,得到的文件在當前目錄中,但已沒有了.gz。2、以.tar結(jié)尾的為歸檔(打包)文件,用命令:tar-xvffilename來展開,生成的文件與源文件在同一目錄中,只是少了.tar。3、以.tar.gz結(jié)尾的文件最常見,可直接用命令:gzip-cdfilename或tar

xfv

filename來解開。第29頁/共75頁六、壓縮及解壓縮命令1.tar命令第30頁/共75頁權(quán)限:所有用戶使用方法:tar[參數(shù)]f[歸檔文件名][原文件或目錄]說明:廣泛用于建立歸檔文檔,這個命令將文件及目錄復制到歸檔文件中,原文件并不會有被刪除的危險。同時還可通過參數(shù)調(diào)用相應(yīng)的壓縮工具進行壓縮及解壓縮。常用參數(shù):-f:此參數(shù)是必須的,通常用來指定包的文件名;-c:創(chuàng)建新的檔案文件如果用戶想備份一個目錄或一些文件,就要選擇這個選項例如:#

tar

–cf

test.tar

/home/tmp-r 增加文件到已經(jīng)有的包(文檔)例如:#

tar

–rf

test.tar

*.jpg常用參數(shù):-t:列出包的文件所有內(nèi)容,查看已經(jīng)備份了哪些文件。例如:#

tar

–tf

test.tar-x:解壓縮,從文件中恢復所有文件,事實上是一個解包的過程例如:#

tar

–xf

test.tar-z:使用gzip或ungzip;-j:使用bzip;應(yīng)用示例:[zxt@BC

home]$

tar

cjf

temp.tar.bz2

/temp[zxt@BC

home]$

tar

xjf

temp.tar.bz2第31頁/共75頁如果對linux-2.4.x.tgz這個文件解壓,可以用tar

xzf

linux-2.4.x.tgz;如果把一個目錄linux-2.4.x壓縮成一個文件linux-2.4.x.tgz,可以用下面命令:tar

czf

linux-2.4.x.tgz linux-2.4.x解壓縮bz2

格式壓縮包 tar-xjflinux.bz2建立bz2

格式壓縮包tar

-cjf

linux-2.4.x.tar.bz2/develop/linux-2.4.x第32頁/共75頁七、掛載文件系統(tǒng)命令第33頁/共75頁mount命令權(quán)限:所有用戶使用方法:mount[參數(shù)][設(shè)備][掛載目錄(掛載點)]說明:在命令行中使用mount命令掛載文件系統(tǒng)umount命令權(quán)限:所有用戶使用方法:umount[參數(shù)][設(shè)備][掛載目錄(掛載點)]說明:在命令行中使用umount命令卸載文件系統(tǒng)例如:umount/dev/hda1

將/dev/hda1設(shè)備卸載,設(shè)備必須處于空閑狀態(tài)常用參數(shù):-t:指定掛載文件系統(tǒng)類型應(yīng)用示例:adfs,

affs,

autofs,

coda,

coherent,

cramfs,

devpts,efs,

ext,

ext2,

ext3,

hfs,

hpfs,

iso9660,

jfs,minix,

msdos,

ncpfs,nfs,

ntfs,

proc,

qnx4,

ramfs,reiserfs,

romfs,

smbfs,

sysv,tmpfs,

udf,

ufs,umsdos,

vfat,

xenix,

xfs,

xiafs.例如1:[root@localhost

root]#

mount

-t

nfs3:/home/mxl/mnt/nfs/例如將2:nfs服務(wù)的共享目錄/home/mxl加載到/mnt/nfs目錄mount

-t

iso9660

/dev/cdrom

/mnt/cdrom將光驅(qū)加載到/mnt/cdrom目錄,iso9660是標準的CDROM文件系統(tǒng)。第34頁/共75頁八、網(wǎng)絡(luò)常用命令第35頁/共75頁1.ifconfig命令權(quán)限:所有用戶使用方法:ifconfig[接口];ifconfig[接口][參數(shù)]或[地址]說明:用來配置網(wǎng)絡(luò)接口應(yīng)用示例:#ifconfig

eth0

02九、快捷鍵1.TAB文件目錄匹配搜索的使用例如/arm2410,假設(shè)/目錄下沒有其它以a字符開頭的其它目錄和文件,則要進入這個目錄,只需敲入:cd/a然后按下TAB鍵,則SHELL會自動匹配找到/arm2410目錄,這樣就不必完全鍵入剩余的字符,這個功能在訪問名字很長的文件和目錄時非常有效,可以大大提供鍵盤輸入的速度,極為方便。二、“”光標鍵:如果在以前輸入某個命令,下次想要再次輸入此命令,則只要按上光標鍵就可以找到。第36頁/共75頁clear命令: 清屏命令,清除屏幕上的內(nèi)容。init0命令:關(guān)閉虛擬機命令,可以防止直接關(guān)閉虛擬機電源導致數(shù)據(jù)崩潰。reboot命令:重新啟動虛擬機。insmod命令:向內(nèi)核添加模塊,如驅(qū)動模塊。rmmod

rtl8139:刪除名為rtl8139的驅(qū)動模塊。6.startx:進入linux虛擬機圖形界面7.中斷Shell命令:Ctrl+C8.添加用戶命令:adduser9.刪除用戶命令:userdel第37頁/共75頁十、其他常用命令關(guān)于Shell的編程可參看參考書第38頁/共75頁《精通Shell

編程》 人民郵電出版社《精通Linux&Unix/shell程序設(shè)計》中國青年出版社二、

Linux編程環(huán)境第39頁/共75頁程序編輯器

vi程序編譯器

gcc程序調(diào)試器

gdb二進制代碼工具介紹make和Makefile熟悉Linux編程庫2.1程序編輯器

vi第40頁/共75頁2.1.1

Vi簡介Vi編輯器最初是由Sun

Microsystems公司的Bill

Joy在1976年開發(fā)的,一開始Bill

Joy了Ex編輯器(行編輯器),后來開發(fā)了

Vi作為Ex的visualinterface,也就是允許一次能看到一屏的文本而非一行,Vi因此而得名。初步接觸vi,可能會覺得它的界面不太友好,不容易掌握,可一旦掌握了vi的命令,就會感覺到它強大的功能與高效。而且vi相對來說較小,無論使用任何Linux系統(tǒng),總是可以使用vi。第41頁/共75頁[root@localhost

root]#vi(進入Vi界面)[root@localhost

root]#vi

file(編輯文件file)vi有三種狀態(tài):命令行模式文本輸入模式最后行模式第42頁/共75頁2.1.1

vi用法三種模式的相互切換當你進入vi時,會首先進入命令行模式。按下i或a等就進入文本輸入模式,用戶輸入的可視字符都添加到文件中,顯示在屏幕上;按下ESC就可以回到命令行模式。在命令行模式輸入:就進入最后行模式第43頁/共75頁在命令行模式下都是要輸入命令,但它的命令不要以:開始,它直接接受鍵盤輸入的單字符或組合字符命令,例如直接按下u就表示取消上一次對文件的修改,相當于WINDOWS下的Undo操作。命令行模式下有一些命令是要以/開始的,例如查找字符串就是:/string則在文件中匹配查找string字符串。在編輯模式下按下:就進入命令方式。第44頁/共75頁命令行模式下怎樣使用Vi?0 光標移至行首h 光標左移一格l 光標右移一格光標向上移一格光標向下移一格$+A 光標移至該行最后PageDn 向上滾動一頁PageUp 向下滾動一頁d+方向鍵刪除文字第45頁/共75頁ddppr刪除整行整行復制修改光標所在字符命令行模式下常用命令及其含義ndw

-第46頁/共75頁d$或D-u

-x

- 刪除光標處字符(Character)nx

-

刪除光標處後n

個字符nX

- 刪除光標處前n個字符刪除光標處下n

個單詞(word)dd

- 刪除整行刪除由光標至該行最末恢復前一次所做的刪除要檢索文件,必需在命令行模式下進行。第47頁/共75頁向后搜尋str直至文件結(jié)尾處往前搜尋str直至文件開首處/str?strnN同一方向上重復檢索相反方向上重復檢索vi纏繞整個文件,不斷檢索,直至找到與模式相匹配的下一個出現(xiàn)。其它命令行模式下的命令可參看相關(guān)書籍第48頁/共75頁最后行模式下常用命令及其含義第49頁/共75頁在最后行模式下,所有命令都要以:開始,所鍵入的字符系統(tǒng)均作命令來處理。如:q代表退出,:w表示存盤。:q! 放棄任何改動而退出vi,也就是強行退出:w 文件存盤:x 存盤并退出vi:w! 對于只讀文件強行存檔:wq 存檔并退出vi:set

nu在文件中的每行前面會列出行號:set

nonu取消列出的行號第50頁/共75頁在整個文件中替換全程替換命令::s/string1/string2/g“string1”成“string2”。文本輸入模式常用命令及其含義第51頁/共75頁在插入方式下,不能打入指令,必需先按〈Esc〉鍵,返回命令方式。假若戶不知身處何態(tài),也可以按〈Esc〉鍵,不管處于何態(tài),都會返回命令方式。i—在光標處插入正文I—在一行開始處插入正文a—在光標后追加正文A—在行尾追加正文o—在光標下面新開一行O—在光標上面新開一行Esc—返回命令行模式第52頁/共75頁2.2程序編譯器

gcc第53頁/共75頁2.2.1

gcc簡介gcc是GNU的編譯器組件之一,它是Linux中最重要的軟件開發(fā)工具。現(xiàn)在的gcc能夠編譯很多種語言,如:CC++Object

C(C語言的一種面向?qū)ο髷U展)JavaPascal等gcc編譯器可被成功的移植到不同的處理器平臺上。第54頁/共75頁標準PC

LINUX上的gcc是FOR

INTELCPU

的,而ARM系列開發(fā)套件使用的是FORarm系列處理器的gcc編譯器arm-elf-gcc等。簡單的回顧一下,編譯器編譯程序生成可執(zhí)行文件的需要經(jīng)過哪幾個過程:第55頁/共75頁預(yù)處理->編譯->匯編->鏈接預(yù)處理:將源代碼中指定的頭文件包含進來等;編譯:將源代碼翻譯成匯編代碼;匯編:生成擴展名為.o的目標文件;鏈接:將所有擴展名為.o的目標文件鏈接生在可執(zhí)行文件;-ansi

只支持ANSI標準的C語法。這一選項將禁止GNU

C的某些特色,支持符合ANSI標準的C程序.這樣就會關(guān)閉GNU

C中某些不兼容ANSI

C的特性,例如inline和typeof關(guān)鍵字等-c只編譯并生成目標文件。

例如: gcc

–c

test.c

=>test.o-S-E只編譯并生成匯編語言文件(.s)例如: gcc

–S

test.c

=>test.s只運行C預(yù)編譯器,只對文件進行預(yù)處理查詢正在使用的gcc版本及與gcc版本相-v關(guān)2.2.2 gcc的常用命令選項的信息第56頁/共75頁-g生成調(diào)試信息。GNU調(diào)試器可利用該信息。-oFILE生成指定的輸出文件。用在生成可執(zhí)行文件時。例如:gcc

–otest

test.c第57頁/共75頁-I

DIRECTORY指定額外的頭文件搜索路徑DIRECTORY。例如: gcc

–I

/home/include

–o

test

test.c-L

DIRECTORY 指定額外的函數(shù)庫搜索路徑DIRECTORY。-static 靜態(tài)連接庫,默認都是動態(tài)連接代碼優(yōu)化命令選項:針對大型程序,可提高代碼運行速度-O0 不進行代碼優(yōu)化處理。第58頁/共75頁-O或-O1優(yōu)化生成代碼,告訴GCC同時減小代碼長度和執(zhí)行時間。-O2進一步優(yōu)化,如處理器指令調(diào)度等。-O3比-O2更進一步優(yōu)化,包括inline函數(shù)-w 不生成任何警告信息。-Wall 生成所有警告信息。第59頁/共75頁出錯檢查和警告提示選項:目的是增強程序的穩(wěn)定性和完善程序代碼的設(shè)計#include

<stdio.h>Int

main(void){printf("Hello

world,

Linux

programming!\n");return

0;}然后執(zhí)行下面的命令編譯和運行這段程序:#gcc-o

hello

hello.c#./hello出現(xiàn)Hello

world,Linux

programming!字樣第60頁/共75頁2.3程序調(diào)試器第61頁/共75頁gdb2.3.1

gdb簡介所有的程序在寫好以后,都要經(jīng)過調(diào)試,在調(diào)試過程中發(fā)現(xiàn)并改正程序中的錯誤。gdb是一個用來調(diào)試c或c++程序的功能強大的調(diào)試器,它能在程序運行時觀察程序的內(nèi)部結(jié)構(gòu)和內(nèi)存的使用情況等。如果沒有g(shù)db,程序員為了跟蹤某些錯誤,就要在程序中加入大量的語句,用來產(chǎn)生一些特定的輸出。對于某些程序來說,這樣做會導致更多的錯誤。gdb也是Linux系統(tǒng)上缺省使用的調(diào)試器。gdb已經(jīng)被移植到許多計算機平臺上,能夠用來對嵌入式實時系統(tǒng)進行調(diào)試。如:arm系列處理器的gdb編譯器arm-elf-ggdb

等。Gdb功能非常強大:可監(jiān)視程序中變量的值;第62頁/共75頁可設(shè)置斷點以使程序在指定的代碼行上停止執(zhí)行;支持單步執(zhí)行等;在命令行上鍵入gdb并按回車鍵就可以運行g(shù)db了,如果一切正常的話,gdb將被啟動并且你將在屏幕上看到如下類似的內(nèi)容:#

gdb

filenameGNU

gdb

Red

Hat

Linux

7.x

(5.0rh-15)

(MI_OUT)292Copyright

2001

Free

Software

Foundation,

Inc.GDB

is

free

software,

covered

by

the

GNU

General

PublicLicense,

andyou

arewelcome

to

change

it

and/or

distribute

copies

of

it

undercertainconditions.Type

"show

copying"

to

see

the

conditions.There

is

absolutely

no

warranty

for

GDB.

Type

"showwarranty"

fordetails.This

GDB

was

configured

as

"i386-redhat-linux".(gdb)第63頁/共75頁gdb

命令的語法如下:#gdb[參數(shù)]filename[參數(shù)]舉例:#

gdb

–q

filename如果不想看到gdb系統(tǒng)的信息可用#

gdb

-h得到一個有關(guān)這些選項的說明的簡單列表第64頁/共75頁2.3.2gdb的常用調(diào)試命令第65頁/共75頁1.break

num 在指定的行上設(shè)置斷點。2.

bt3.

clear顯示所有的調(diào)用棧幀。該命令可用來顯示函數(shù)的調(diào)用順序。刪除設(shè)置在特定源文件、特定行上的斷點。其用法為:clear

filename:num。4.

continue繼續(xù)執(zhí)行正在調(diào)試的程序。該命令用在程序由于處理信號或斷點而導致停止運行時。5.display

expess 每次程序停止后顯示表達式的值。表達式由程序定義的變量組成。file

FILEhelp

NAME第66頁/共75頁裝載指定的可執(zhí)行文件進行調(diào)試。顯示指定命令的幫助信息。info

break顯示當前斷點清單,包括到達斷點處的次數(shù)等。info

files顯示被調(diào)試文件的詳細信息。info

func顯示所有的函數(shù)名稱。info

local顯示函數(shù)中的局部變量信息。#include"stdio.h"include"hmath.#"{mtni)diiov(na

oatR;lfloapi=3t.f;6295141

u"n\:spudiRloy

溫馨提示

  • 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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論