LINUX操作系統(tǒng)課件.ppt_第1頁
LINUX操作系統(tǒng)課件.ppt_第2頁
LINUX操作系統(tǒng)課件.ppt_第3頁
LINUX操作系統(tǒng)課件.ppt_第4頁
LINUX操作系統(tǒng)課件.ppt_第5頁
已閱讀5頁,還剩126頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、2020/9/23,1,第二章 Linux常用命令,zhang yuxiang 2004.4.20,2020/9/23,2,零、Linux文件系統(tǒng)的特征,2020/9/23,3,1. 沒有C:D:的東西,只有目錄 2. 不是擴(kuò)展名為.bat .exe .com就是執(zhí)行文件,是看文件本身有無x(執(zhí)行)的屬性 3. 文件名分大小寫,abc.txt和ABC.txt是不同的文件 4. 文件名長度可達(dá)256個(gè)字節(jié),其中不可包含*?|等符號 5. 想把文件或目錄隱藏起來,第一個(gè)字用“.” 6. 沒有“資源回收站”,刪除文件時(shí)請小心,2020/9/23,4,一、Linux目錄樹結(jié)構(gòu),2020/9/23,5,

2、yxzhangtsai yxzhang$ cd / yxzhangtsai /$ ls -l total 153 drwxr-xr-x 2 root root 4096 Feb 10 02:06 bin drwxr-xr-x 3 root root 4096 Feb 10 00:05 boot drwxr-xr-x 17 root root 77824 Feb 11 14:45 dev drwxr-xr-x 41 root root 4096 Feb 16 15:18 etc drwxr-xr-x 8 root root 1024 Feb 9 22:44 home drwxr-xr-x 2 r

3、oot root 4096 Jun 22 2001 initrd drwxr-xr-x 6 root root 4096 Feb 10 02:12 lib drwxr-xr-x 2 root root 16384 Feb 10 05:35 lost+found drwxr-xr-x 2 root root 4096 Aug 30 00:10 misc drwxr-xr-x 3 root root 4096 Feb 9 22:05 mnt drwxr-xr-x 2 root root 4096 Aug 24 1999 opt dr-xr-xr-x 102 root root 0 Feb 11 2

4、2:45 proc drwx- 4 root root 4096 Feb 16 15:25 root drwxr-xr-x 2 root root 4096 Feb 14 21:28 sbin drwxrwxrwt 2 root root 4096 Feb 16 15:40 tmp drwxr-xr-x 16 root root 4096 Feb 10 01:28 usr drwxr-xr-x 20 root root 4096 Feb 14 21:41 var,2020/9/23,6,2020/9/23,7,Linux目錄介紹 (1),2020/9/23,8,Linux目錄介紹 (2),20

5、20/9/23,9,Linux目錄介紹 (3),2020/9/23,10,Linux目錄介紹 (4),2020/9/23,11,Linux目錄介紹 (5),2020/9/23,12,二、VI 編輯器,2020/9/23,13,VI 編輯器,VI是全屏幕編輯器,為LINUX系統(tǒng)的主要編輯器。 本章主要內(nèi)容 Vi 的工作方式 Vi 的啟動與退出 文本輸入 光標(biāo)移動(插入方式、命令方式) 文本修改 編輯文件,2020/9/23,14,Vi 的啟動與退出,(1) vi 的啟動 輸入vi命令后,便進(jìn)入全屏幕編輯環(huán)境,此時(shí)的狀態(tài)為命令方式。 vi 文件名 (2) vi 的退出 建議:首先鍵入“ESC”鍵,

6、以確保當(dāng)前vi的狀態(tài)為命令方式,輸入下列命令,退出vi。 :w 將編輯緩沖區(qū)的內(nèi)容寫入文件 :q 退出vi :wq 將上面兩步操作可以合成一步來完成。 :q 退出vi,此時(shí)的正文沒有被更改過。 :q!強(qiáng)行退出vi,使更新內(nèi)容不寫回文件。,2020/9/23,15,vi的名字取自于visual。 有兩種操作方式:命令方式和輸入方式 命令方式下輸入的大、小寫是敏感的。,Vi 的工作方式,命令方式,輸入方式,編輯文本,輸入文本,a, A, i, I, o, O,ESC,vi,2020/9/23,16,文本輸入,命令 結(jié)果 - - a 將輸入文本插入在光標(biāo)之后 A 將輸入文本插入在當(dāng)前行的行尾 i 將

7、輸入文本插入在光標(biāo)之前 I 將輸入文本插入在當(dāng)前行的開始 o 將在當(dāng)前行的下一行處打開一新行 O 將在當(dāng)前行的上一行處打開一新行 注意 ESC:使編輯狀態(tài)從輸入方式切換到命令方式,插入命令,附加命令,打開命令,2020/9/23,17,命令方式下光標(biāo)移動,注釋 字: 是由空格或標(biāo)點(diǎn)符號分開的字母序列。 句子:是以句號(.)、問號(?)或感嘆號(?。┙Y(jié)束的字符序列,句子之間由兩個(gè) 空格或一個(gè)回車分開。 段落:一個(gè)段落前后各有一個(gè)或多個(gè)空白行。,2020/9/23,18,、 字符及行間移動 命 令 結(jié)果 或 k 向上移一行 或 j 向下移一行 或 h 或 退格鍵 左移一個(gè)字符 或 l 或 空格 右

8、移一個(gè)字符 o 移到當(dāng)前行的開始 $ 移到當(dāng)前行的結(jié)尾 + 或 回車符 移到下一行的開始 - 移到上一行的開始,2020/9/23,19,命令方式下光標(biāo)移動(續(xù)),2、 其它單位的移動 命 令 結(jié)果 - w 移到下一個(gè)字或標(biāo)點(diǎn)符號 W 移到下一個(gè)字 e 移到這個(gè)字或標(biāo)點(diǎn)符號的結(jié)束 E 移到字的下一結(jié)尾 b 回到字或標(biāo)點(diǎn)符號的開始 B 移回到字的開始 ) 移到下一個(gè)句子的開始 ( 移到這個(gè)句子的開始 移到下一段落的開始 移到這一段落的上一開始,2020/9/23,20,文本修改(命令方式下),刪除文本 1. x 與 X 命令的使用 命令 結(jié)果 - - x 刪除當(dāng)前字符。 nx 刪除從當(dāng)前字符開始

9、的n個(gè)字符。 X 刪除當(dāng)前字符的前一個(gè)字符。 nX 刪除當(dāng)前字符的前n個(gè)字符。 注意 n 為數(shù)字,為 1 時(shí)可省略。,2020/9/23,21,2. d與D命令的使用 用來將指定范圍內(nèi)文本刪除,并存入緩沖區(qū)。 命令 結(jié)果 - - ndw 刪除以當(dāng)前字開始的n個(gè)字。 nd$ 刪除以當(dāng)前字符開始的n行字符。 ndd 刪除從當(dāng)前行開始的n行。 D 與d$同義。 d) 刪除到下一句的開始。 d 刪除到下一段的開始。 d 回車 刪除兩行。,2020/9/23,22,命令 結(jié)果 - - . 重復(fù)上一次所執(zhí)行的命令。 u 取消最后一次所做的修改或刪除。 U 取消此次到當(dāng)前行來做的所有修改。,重復(fù)和取消操作,

10、2020/9/23,23,三、Linux常用命令,2020/9/23,24,Linux常用命令,Linux進(jìn)入與退出系統(tǒng) 文件操作命令 命令的輸入和輸出 目錄操作命令 有關(guān)口令、權(quán)限和幫助的命令 有關(guān)進(jìn)程管理的命令 有關(guān)軟盤的使用命令 有關(guān)光驅(qū)的使用命令 訪問Windows分區(qū)的命令,2020/9/23,25,Linux命令的一般格式,命令名稱 選擇項(xiàng) 參數(shù) 選擇項(xiàng):用來擴(kuò)展命令的特性或功能。 連字符+字母 $ls -l 參數(shù):表示命令的自變量,如文件名,參數(shù)值等。 如:$ls l /home/zhangyx,2020/9/23,26,啟動telnet服務(wù),zhangyxlocalhost z

11、hangyx$ cd /etc/xinetd.d zhangyxlocalhost xinetd.d$ ls chargen daytime-udp finger rlogin talk time-udp chargen-udp echo ntalk rsh telnet wu-ftpd daytime echo-udp rexec rsync time zhangyxlocalhost xinetd.d$ cat telnet # default: on # description: The telnet server serves telnet sessions; it uses # un

12、encrypted username/password pairs for authentication. service telnet flags = REUSE socket_type = stream wait = no user = root server = /usr/sbin/in.telnetd log_on_failure += USERID disable = no zhangyxlocalhost xinetd.d$,2020/9/23,27,(一)文件操作命令,文件類型 普通文件:標(biāo)志“-” 目錄文件:標(biāo)志“d” “點(diǎn)(.)”當(dāng)前目錄, “點(diǎn)點(diǎn)(.)”當(dāng)前目錄的上一級目錄

13、。 以 “.” 開頭的文件名表示隱含文件,可用ls al顯示。 特別文件:對I/O硬件的存取模仿對普通文件的存取 塊特別文件:標(biāo)志“b”;字符特別文件:標(biāo)志“c”。 文件屬性 用戶身份:擁有者User、同組者Group、其他Other 文件權(quán)限:讀Read、寫Write、執(zhí)行eXecute -rwxr-r- 1 root root 20 Mar 12 14:44 test*,2020/9/23,28,zhangyxlocalhost zhangyx# ls -al total 64 drwxr-x- 4 root root 4096 Feb 14 22:02 . drwxr-xr-x 23 r

14、ootroot 4096 Feb 16 13:35 . -rw-r-r- 1 root root 1210 Feb 10 06:03 anaconda-ks.cfg -rw- 1 root root 12447 Feb 14 23:22 .bash_history -rw-r-r- 1 root root 24 Jun 11 2000 .bash_logout -rw-r-r- 1 root root 234 Jul 6 2001 .bash_profile -rw-r-r- 1 root root 217 Feb 9 22:06 .bashrc -rw-r-r- 1 root root 21

15、0 Jun 11 2000 .cshrc drwx- 2 root root 4096 Feb 14 21:54 .gnupg -rw- 1 root root 8 Feb 14 22:05 .mysql_history drwx- 2 root root 4096 Feb 10 00:44 .ssh -rw-r-r- 1 root root 196 Jul 11 2000 .tcshrc -rw-r-r- 1 root root 1126 Aug 24 1995 .Xresources,2020/9/23,29,文件顯示命令(P35) cat:連接并顯示文件 例如:$cat file1 fi

16、le2 file3 顯示文本文件 more:h, q, 空格,回車,b, p, /, ! less:可以用光標(biāo)鍵逐行滾動 pr: 顯示文件內(nèi)容 顯示二進(jìn)制文件 mn命令,2020/9/23,30,確定文件類型命令 file命令: 例如:$file m1.c m1.c: ascii text 例如:$file dir1 dir1: directory,2020/9/23,31,匹配、排序及顯示指定內(nèi)容的命令 在文件中查找給定模式的行:gerp, egrep, fgrep,zhangyxlocalhost zhangyx$ cat m1.c main() printf(man); zhangyxl

17、ocalhost zhangyx$ grep p m1.c printf(man); zhangyxlocalhost zhangyx$,2020/9/23,32,zhangyxlocalhost zhangyx$ cd / zhangyxlocalhost /$ cd etc zhangyxlocalhost /etc$ ls ftphosts lpd.conf pwdb.conf X11 ftpusers lpd.perms rc xinetd.conf gnome ltrace.conf rc0.d xinetd.d gpm-root.conf lynx.cfg rc1.d yp.con

18、f group mail rc2.d ypserv.conf zhangyxlocalhost /etc$ cat passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin: user:x:501:501:/home/user:/bin/bash yxzhang:x:502:502:/home/yxzhang:/bin/bash zhangyxlocalhost /etc$ grep zhangyx passwd zhangyx:x:500:500:/home/zhangyx:/bin/bash zhangyxlocalhost /et

19、c$,2020/9/23,33,在目錄結(jié)構(gòu)中查找滿足查詢條件的文件:find,zhangyxlocalhost zhangyx$ ls Desktop dir1 dir2 m1.c m2.c test1 zhangyxlocalhost zhangyx$ find m1.c m1.c zhangyxlocalhost zhangyx$,zhangyxlocalhost zhangyx$ ls Desktop dir1 dir2 m1.c m2.c test1 zhangyxlocalhost zhangyx$ find m1.c m1.c zhangyxlocalhost zhangyx$ c

20、d dir1 zhangyxlocalhost dir1$ ls ab.c a.c b dir2 zhangyxlocalhost dir1$ find a.c a.c,2020/9/23,34,對文本文件中的各行進(jìn)行排序:sort,zhangyxlocalhost zhangyx$ cat test1 for i in $1/*.c do cp $i $2 done cd $2 wc -c *|sort -n zhangyxlocalhost zhangyx$ sort test1 cd $2 cp $i $2 do done for i in $1/*.c wc -c *|sort -n

21、zhangyxlocalhost zhangyx$,2020/9/23,35,顯示文件中所有不重復(fù)的行:uniq,zhangyxlocalhost zhangyx$ uniq test2 man bike aple zhangyxlocalhost zhangyx$ cat test man bike man aple zhangyxlocalhost zhangyx$ uniq test man bike man aple zhangyxlocalhost zhangyx$,2020/9/23,36,zhangyxlocalhost zhangyx$ cat test2 man man bi

22、ke aple zhangyxlocalhost zhangyx$ uniq test2 man bike aple zhangyxlocalhost zhangyx$,2020/9/23,37,比較文件內(nèi)容:(P47) 比較兩個(gè)文本文件,并顯示它們的不同:diff 例:diff lilo.conf lilo.conf 比較兩個(gè)文件,若有差異,則顯示不同點(diǎn)是第幾個(gè)字節(jié)和第幾行:cmp,2020/9/23,38,復(fù)制文件(P49) 將源文件或目錄拷貝到目標(biāo)文件或目錄中:cp -i: Interactive -r: Recursive -u: Update -f: Force dd命令:將指定的輸

23、入文件復(fù)制到指定的輸出文件上,并進(jìn)行可能的轉(zhuǎn)換 dd if=/vmlinuz of=/dev/fd0,2020/9/23,39,對文件名或目錄名重新命名,或移動文件 mv -fi source_file target_ file 刪除文件/刪除目錄 rm -r filename 或 rmdir dirname 文件內(nèi)容統(tǒng)計(jì)命令 統(tǒng)計(jì)指定文件的字節(jié)數(shù)(-c)、字?jǐn)?shù)(-w)、行數(shù)(-l),并輸出結(jié)果:wc,2020/9/23,40,命令的輸入和輸出,文件重定向 輸出重定向 輸入重定向 附加重定向 管道線,2020/9/23,41,(二)目錄操作命令,目錄樹結(jié)構(gòu) /bin:公用命令 /boot:啟動

24、內(nèi)核所需文件 /dev:設(shè)備文件 /etc:配置文件 /home:用戶目錄 /lib:運(yùn)行庫 /mnt:臨時(shí)安裝的文件系統(tǒng) /proc:存放存儲進(jìn)程和系統(tǒng)信息 /root:超級用戶的根目錄 /sbin:存放系統(tǒng)管理程序,超級用戶才可使用 /tmp:臨時(shí)文件 /usr:存放應(yīng)用程序包的主目錄 /var:存放系統(tǒng)產(chǎn)生的文件,2020/9/23,42,常用的目錄,zhangyxlocalhost xinetd.d$ cd zhangyxlocalhost zhangyx$ ls Desktop dir1 dir2 m1.c m2.c test test1 test2 zhangyxlocalhost

25、 zhangyx$ cd ./dir1 zhangyxlocalhost dir1$ cd . zhangyxlocalhost zhangyx$,常用的目錄操作命令,cd 改變當(dāng)前目錄 pwd 顯示目前目錄 mkdir 建立一個(gè)新目錄 rmdir 刪除一個(gè)里面是空的空目錄,. 代表當(dāng)前目錄 . 代表上層目錄 代表當(dāng)前用戶自己的主目錄,2020/9/23,43,路徑名,絕對路徑 每個(gè)文件有唯一的絕對路徑,它是沿著層次樹,從根目錄開始、到達(dá)相應(yīng)文件的所有目錄名連接而成,各目錄名之間以“/”分開。 如:/etc/xinetd.d 相對路徑 在當(dāng)前工作目錄里指定一個(gè)目錄。 如:(/home/zhan

26、gyx) dir1,2020/9/23,44,改變和顯示工作目錄 cd(特殊參數(shù):空和-)和pwd 建立目錄 mkdir(可嵌套和同時(shí)創(chuàng)建多個(gè)子目錄) -p 一次建立多個(gè)目錄; -m 對新建目錄設(shè)置權(quán)限。 刪除目錄 rmdir 刪除空的目錄(它里面不能有其他的目錄或文件) rm(參數(shù):-f -r -i ),2020/9/23,45,顯示目錄信息 ls:參數(shù)-l -a -F -R -color -s -t -X du: 顯示文件或目錄所占的空間(包括隱藏文件或目錄),2020/9/23,46,鏈接文件的命令:一個(gè)文件在多個(gè)目錄中登記 硬鏈接:好象文件有了兩個(gè)文件名 ln file1 file2

27、例如:ln abc.c xyz.c 注意: 不能對目錄文件做硬鏈接; 不能在不同的文件系統(tǒng)之間做硬鏈接。,2020/9/23,47,userzhangyx dir1$cat m1.c aaaaaaaa bbbbbbbb ccccccccc userzhangyx dir1$cd userzhangyx user$ ln ./dir1/m1.c ./dir2/a.c userzhangyx user$cd dir2 userzhangyx dir2$ cat a.c aaaaaaaa bbbbbbbb ccccccccc userzhangyx dir2$cd userzhangyx user$

28、vi a.c userzhangyx user$cat a.c bbbbbbbb ccccccccc userzhangyx user$cd dir1 userzhangyx dir1$cat m1.c,2020/9/23,48,符號鏈接 ln -s sourcefile targetfile ln -s /usr/lib /home/wuhp/lib /在用戶wuhp目錄下建立一個(gè)lib連接,連上/usr/lib,用戶訪問/home/wuhp/lib,就是訪問/usr/lib。 一般用于創(chuàng)建目錄間的鏈接,2020/9/23,49,userzhangyx user$ ln -s ./dir1

29、./dir userzhangyx user$ ls dir dir1 dir2 userzhangyx user$ ls -; ls: -: 沒有那個(gè)文件或目錄 userzhangyx user$ ls -l 總用量 8 lrwxrwxrwx 1 user user 6 5月 10 20:50 dir - ./dir1 drwxrwxr-x 2 user user 4096 5月 10 20:32 dir1 drwxrwxr-x 2 user user 4096 5月 10 20:48 dir2 userzhangyx user$ cd dir userzhangyx dir$ ls m1.

30、c userzhangyx dir$,2020/9/23,50,改變存取權(quán)限命令 功能:改變文件或目錄的存取權(quán)限 符號方式:chmod -R who + | - | =mod file 數(shù)字方式:chmod -R mod file 操作對象who可是下述字母中的任一個(gè)或它們的組合 a 表示所有的用戶(all) g 表示組用戶(group) o 表示其他用戶(other) u 表示用戶(user),及文件主,2020/9/23,51,在一個(gè)命令行中可給出多個(gè)符號方式,用逗號隔開。 例:$ chmod g + r, o + r fl /使組和其他用戶對文件fl有讀的權(quán)限 使用數(shù)字來代表各個(gè)屬性,各

31、屬性的對照表如下: r: 4 w: 2 x: 1 由于同一組的數(shù)字是相加的!例如文件屬性為 -rwxrwx- 則是: owner = rwx = 4+2+1 = 7 group = rwx = 4+2+1 = 7 others = - = 0+0+0 = 0 所以,該屬性對應(yīng)的數(shù)值就是 770 !,2020/9/23,52,改變文件或目錄所屬的組: chgrp chgrp -R groupname filename 例子: chgrp -R staff /home/wuhp 改變文件或目錄的屬主: chown chown -R username filename 例子:chown -r wuh

32、p /home/wuhp,2020/9/23,53,文件壓縮命令: gzip (P69) 說明: 網(wǎng)絡(luò)上的.gz文件是用gzip命令壓縮的。 需要安裝自由軟件gzip和gunzip gzip -v file,將文件壓縮成.gz的文件格式 gzip -d file.gz,將.gz文件解壓 讀去壓縮文件的內(nèi)容:zcat 文件名,2020/9/23,54,文件解壓縮命令: unzip 對WinZip格式的壓縮文件進(jìn)行解壓縮 unzip chapter1.zip,2020/9/23,55,文件或者目錄打包命令:tar(P78) tar option tarfile filename c 創(chuàng)建新包 x

33、從包中extract文件 t 僅僅列出包中的文件名 f 指定其后的參數(shù)為包文件名 o 以當(dāng)前用戶作為extract的文件的uid和gid v 報(bào)告tar命令執(zhí)行的詳細(xì)信息,2020/9/23,56,網(wǎng)絡(luò)上有一些.tar.gz文件 先用gzip解壓縮,然后用tar拆包 tar cvf mytar.tar file.dat tar xvf file.dat,2020/9/23,57,(三)有關(guān)進(jìn)程管理的命令,顯示進(jìn)程狀態(tài):ps ps -efl namelist -e顯示當(dāng)前運(yùn)行的每一進(jìn)程的信息 -f產(chǎn)生一個(gè)完整的清單 殺死某個(gè)進(jìn)程:kill kill -signal pid kill -9 378

34、 kill -HUP 378,2020/9/23,58,(四)有關(guān)軟盤的使用命令,有關(guān)軟盤的使用命令 mount t msdos /dev/fd0 /mnt/floppy umout /mnt 格式化軟盤:format 例:format v /dev/rfd0135ds18 在第一個(gè)驅(qū)動器(3.5英寸高密度軟盤)中格式化軟盤 tar命令,2020/9/23,59,(五)有關(guān)光驅(qū)的使用命令,有關(guān)光驅(qū)的使用命令 mount t iso9660 /dev/hdb /mnt/cdrom umount /mnt/cdrom,2020/9/23,60,(六)有關(guān)U盤的使用命令,有關(guān)U盤的使用命令 通常/d

35、ev/sda1就是優(yōu)盤的設(shè)備 mount -t vfat /dev/sda1 /mnt/usb umount /mnt/usb,2020/9/23,61,(七)訪問Windows分區(qū)的命令,假設(shè)Windows分區(qū)位于第一個(gè)IDE硬盤驅(qū)動器,為第一個(gè)分區(qū)(/dev/hdal)。 首先,創(chuàng)建一個(gè)裝配點(diǎn)用以保存Windows分區(qū)的數(shù)據(jù),鍵入: # mkdir /mnt/vfat 要以Xterm的根用戶訪問分區(qū),鍵入如下內(nèi)容: # mount -t vfat /dev/hdal /mnt/vfat,2020/9/23,62,四、安裝軟件,2020/9/23,63,(一)安裝軟件的命令,很多Linux應(yīng)

36、用軟件都是以源代碼的形式發(fā)布的,這就要求用戶根據(jù)自己系統(tǒng)的實(shí)際情況和自身的需要來配置、編譯源程序后,才能使用這些軟件。 在Linux系統(tǒng)中,軟件安裝程序比較紛繁復(fù)雜,不過最常見的有兩種: (1)一種是軟件的源代碼,您需要自己動手編譯它。這種軟件安裝包通常是用gzip壓縮過的tar包(后綴為.tar.gz)。 (2)另一種是軟件的可執(zhí)行程序,你只要安裝它就可以了。這種軟件安裝包通常被是一個(gè)RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后綴是.rpm。,2020/9/23,64,源代碼安裝 應(yīng)用軟件的源代碼一般是file.tar.gz或者file.

37、tgz格式,也就是說是以tar來打包,然后用gzip來壓縮。 以應(yīng)用軟件apache_1_3_6_tar.gz為例,先進(jìn)入軟件的當(dāng)前目錄,然后使用gzip解壓: #gzip -d apache_1_3_6_tar.gz (注:-d 代表解壓)。 然后用tar解包: #tar -xvf apache_1_3_6_tar。 由于tar和gzip經(jīng)常一起使用,所以tar還提供了一個(gè)參數(shù),它可以自動調(diào)用gzip來解壓,即: # tar -xzvf apache_1_3_6_tar.gz。,2020/9/23,65,執(zhí)行解壓縮后產(chǎn)生的一個(gè)名為configure的可執(zhí)行腳本程序。它是用于檢查系統(tǒng)是否有編譯

38、時(shí)所需的庫,以及庫的版本是否滿足編譯的需要等安裝所需要的系統(tǒng)信息。為隨后的編譯工作做準(zhǔn)備。命令為:#./configure。 檢查通過后,將生成用于編譯的MakeFile文件。此時(shí),可以開始進(jìn)行編譯了。編譯的過程視軟件的規(guī)模和計(jì)算機(jī)性能的不同,所耗費(fèi)的時(shí)間也不同。命令為:#make。 成功編譯后,鍵入如下的命令開始安裝:#make install。 安裝完畢,應(yīng)清除編譯過程中產(chǎn)生的臨時(shí)文件和配置過程中產(chǎn)生的文件。鍵入如下命令:#make clean;#make distclean,2020/9/23,66,進(jìn)入這個(gè)目錄,再用ls命令查看一下所包含的文件,如:#cd apache_1.3.6,#

39、ls。查看這個(gè)目錄中包含了以下哪一個(gè)文件: (1)如果是configure文件,就執(zhí)行: #./configure #make #make install (2)如果是Makefile文件,就執(zhí)行: #make #make install (3)如果是Imake文件,就執(zhí)行: #xmkmf #make #make install,2020/9/23,67,如果遇到錯(cuò)誤提示,通常是十分簡單的問題: 1)沒有安裝C或C+編譯器; 確診方法:執(zhí)行命令gcc(C+則為g+),提示找不到這個(gè)命令。 解決方法:將Linux安裝光盤mount上來,然后進(jìn)入RPMS目錄,執(zhí)行命令:#rpm -ivh gcc*

40、 (用到了第二種安裝方式) 2)沒有安裝make工具; 確診方法:執(zhí)行命令make,提示找不到這個(gè)命令。 解決方法:將Linux安裝光盤mount上來,然后進(jìn)入RPMS目錄,執(zhí)行命令:#rpm -ivh make* 3)沒有安裝autoconf工具; 確診方法:執(zhí)行命令make,提示找不到這個(gè)命令。 解決方法:將Linux安裝光盤mount上來,然后進(jìn)入RPMS目錄,執(zhí)行命令:#rpm -ivh autoconf*,2020/9/23,68,智能包安裝 RPM是RedHat Package Manager的縮寫,它只能使用在安裝了RPM軟件的系統(tǒng)中,不過好像目前大多數(shù)中文Linux發(fā)行版本都支

41、持RPM軟件包。 (1)用命令管理 #rpm options abc.rpm 例如,安裝python-1.5.2-35.i386.rpm軟件時(shí),可以使用如下命令:#rpm ivh python-1.5.2-35.i386.rpm。 如果它提示該軟件包已經(jīng)被安裝了,但或許已經(jīng)不完整或其它原因你想強(qiáng)制安裝該軟件包,那么你就鍵入以下命令:rpm -ivh -replacepkgs file.rpm。,2020/9/23,69,如果你想知道RPM軟件包中的相關(guān)信息,可以使用命令:#rpm ivh python-1.5.2-35.i386.rpm。 升級軟件:執(zhí)行rpm -Uvh rpm包名。 查該軟件

42、包會向系統(tǒng)里面寫入哪些文件:執(zhí)行 rpm -qpl rpm包名,如rpm -qpl python-1.5.2-35.i386.rpm。 圖形界面工具管理 GNOME中的GnoRPM和KDE中的Kpackage就是功能強(qiáng)大的RPM 包管理工具。下面以KDE中Kpackage為例,介紹如何使用RPM包管理工具。,2020/9/23,70,點(diǎn)擊Start(開始)System tools(系統(tǒng)工具)Kpackage,出現(xiàn)Kpackage界面,同時(shí)分析Linux系統(tǒng)中的 RPM數(shù)據(jù)庫。它將安裝好的RPM包形式的軟件按照功能分在Amusements、Application、Development、Docu

43、ment、 Extension、Extentions、Networking、System Environment、User Interface以及X11等幾個(gè)樹形目錄中,每個(gè)目錄中有相應(yīng)的文件圖標(biāo)和名稱。要安裝或升級軟件,只要點(diǎn)擊工具欄的相應(yīng)按鈕就會彈出打開文件的對話框,選中要安裝的RPM文件,單擊OK按鈕,如果不缺必要的運(yùn)行庫,就開始安裝軟件了。卸載軟件時(shí),用鼠標(biāo)選擇相應(yīng)的軟件,單擊右邊的Uninstall按鈕就可以了。,2020/9/23,71,(二)卸載軟件的命令,(1)軟件的卸載主要是使用rpm來進(jìn)行的。卸載軟件首先要知道軟件包在系統(tǒng)中注冊的名稱。鍵入命令: #rpm -q -a,即可

44、查詢到當(dāng)前系統(tǒng)中安裝的所有的軟件包。 (2)確定了要卸載的軟件的名稱,就可以開始實(shí)際卸載該軟件了。鍵入如下命令即可卸載軟件: #rpm -e package name,參數(shù)e的作用是使rpm進(jìn)入卸載模式。對名為package name的軟件包進(jìn)行卸載。由于系統(tǒng)中各個(gè)軟件包之間相互有依賴關(guān)系。如果因存在依賴關(guān)系而不能卸載,rpm將給予提示并停止卸載。你可以使用如下的命令來忽略依賴關(guān)系,直接開始卸載: #rpm -e package name -nodeps 忽略依賴關(guān)系的卸載可能會導(dǎo)致系統(tǒng)中其它的一些軟件無法使用。,2020/9/23,72,五、Linux下的程序開發(fā)環(huán)境,2020/9/23,7

45、3,Linux下的程序開發(fā)環(huán)境,1、編輯器vi、emacs 2、編譯器gcc(c/c+) -o -c -g 3、調(diào)試器gdb 4、make,2020/9/23,74,X-Windows,窗口管理器 Gnome , KDE 窗口切換命令: # switchdesk KDE # startx X-Windows下的可視化編程工具: Qt Qt是一個(gè)多平臺的C+圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立藝術(shù)級的圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮暮苋菀讛U(kuò)展,并且允許真正地組件編程。(,2020/9/23,75,編譯器gcc,GCC編譯器簡介 GCC 是C和C+編譯器。gcc 命

46、令的基本用法如下: gcc options filenames 選項(xiàng)指定編譯器怎樣進(jìn)行編譯。 一些常用的選項(xiàng) -o 生成指定的輸出文件,用在生成可執(zhí)行文件時(shí)。 $ gcc - o count count.c -c 只編譯并生成目標(biāo)文件。 -g 生成調(diào)試信息。GNU 調(diào)試器可利用該信息。,2020/9/23,76,例,設(shè)有兩個(gè)源文件 main.c 和 factorial.c 兩個(gè)源文件,要編譯生成一個(gè)計(jì)算階乘的程序。,/清單 factorial.c #include #include int factorial (int n) if (n = 1) return 1; else return f

47、actorial (n - 1) * n; ,2020/9/23,77,/清單 main.c #include #include int factorial (int n); int main (int argc, char *argv) int n; if (argc 2) printf (Usage: %s nn, argv 0); return -1; else n = atoi (argv1); printf (Factorial of %d is %d.n, n, factorial (n); return 0; ,2020/9/23,78,利用如下的命令可編譯生成可執(zhí)行文件,并執(zhí)行

48、程序: $ gcc -o factorial main.c factorial.c $ ./factorial 5 Factorial of 5 is 120.,2020/9/23,79,GCC 可同時(shí)用來編譯 C 程序和 C+ 程序。一般來說,C 編譯器通過源文件的后綴名來判斷是 C 程序還是 C+ 程序。在 Linux 中,C 源文件的后綴名為 .c,而 C+ 源文件的后綴名為 .C 或 .cpp。 但是,gcc 命令只能編譯 C+ 源文件,而不能自動和 C+ 程序使用的庫連接。因此,通常使用 g+ 命令來完成 C+ 程序的編譯和連接,該程序會自動調(diào)用 gcc 實(shí)現(xiàn)編譯。,2020/9/2

49、3,80,假設(shè)有一個(gè)如下的 C+ 源文件(hello.C):,#include void main (void) cout Hello, world! endl; ,則,可以如下調(diào)用 g+ 命令編譯、連接并生成可執(zhí)行文件: $ g+ -o hello hello.C $ ./hello Hello, world!,2020/9/23,81,GNU gdb ,GNU 的調(diào)試器稱為 gdb,該程序是一個(gè)交互式工具,在字符模式下工作。 gdb 是功能強(qiáng)大的調(diào)試程序,可完成如下的調(diào)試任務(wù): (1) 設(shè)置斷點(diǎn); (2) 監(jiān)視程序變量的值; (3) 程序的單步執(zhí)行; (4) 修改變量的值。 在使用 gdb

50、 調(diào)試程序之前,必須使用 -g 選項(xiàng)編譯源文件??稍?makefile 中如下定義 CFLAGS 變量: CFLAGS = -g 運(yùn)行 gdb 調(diào)試程序時(shí)通常使用如下的命令: gdb progname,2020/9/23,82,gdb 的常用命令,命令 解釋 break NUM 在指定的行上設(shè)置斷點(diǎn)。 bt 顯示所有的調(diào)用棧幀。該命令可用來顯示函數(shù) 的調(diào)用順序。 clear 刪除設(shè)置在特定源文件、特定行上的斷點(diǎn)。其 用法為:clear FILENAME:NUM。 continue 繼續(xù)執(zhí)行正在調(diào)試的程序。該命令用在程序由 于處理信號或斷點(diǎn)而導(dǎo)致停止運(yùn)行時(shí)。 display EXPR 每次程序停

51、止后顯示表達(dá)式的值。表達(dá)式由程 序定義的變量組成。,2020/9/23,83,file FILE 裝載指定的可執(zhí)行文件進(jìn)行調(diào)試。 help NAME 顯示指定命令的幫助信息。 info break 顯示當(dāng)前斷點(diǎn)清單,包括到達(dá)斷點(diǎn)處的次數(shù)。 info files 顯示被調(diào)試文件的詳細(xì)信息。 info func 顯示所有的函數(shù)名稱。 info local 顯示當(dāng)函數(shù)中的局部變量信息。 info prog 顯示被調(diào)試程序的執(zhí)行狀態(tài)。 info var 顯示所有的全局和靜態(tài)變量名稱。 kill 終止正被調(diào)試的程序。 list 顯示源代碼段。 make 在不退出 gdb 的情況下運(yùn)行 make 工具。

52、next 在不單步執(zhí)行進(jìn)入其他函數(shù)的情況下,向前 執(zhí)行一行源代碼。 print EXPR 顯示表達(dá)式 EXPR 的值。,2020/9/23,84,例子:如下簡單的c+程序,包含person.h person.cpp main.cpp Main.cpp 文件。,注意1:編譯源文件,使用-g 來包含調(diào)試信息($ g+ -g c filename),2020/9/23,85,注意2:調(diào)試信息在編譯的時(shí)產(chǎn)生,而不是在連接時(shí)。 用 $ g+ -c file*.cpp 編譯源文件; 然后用 $ g+ -g -o out.e file1.o file2.o file*.o 生成可執(zhí)行程序; 而out.e 不

53、帶有調(diào)試信息。,2020/9/23,86,gdb具體使用 gdb programname list:用來顯示程序源代碼,2020/9/23,87,run:運(yùn)行程序;break:設(shè)置斷點(diǎn); next:運(yùn)行至下一行,不進(jìn)入被調(diào)用的函數(shù); step:則進(jìn)入被調(diào)用的函數(shù); print:輸出變量的值。,2020/9/23,88,info break:顯示斷點(diǎn)信息;info func:顯示函數(shù)信息。 gdb中執(zhí)行shell命令。,2020/9/23,89,kill:結(jié)束當(dāng)前調(diào)試進(jìn)程; quit:退出gdb。,2020/9/23,90,GNU make ,自動編譯工具make(什么是make?) 在大型的開

54、發(fā)項(xiàng)目中,通常有幾十到上百個(gè)的源文件,如果每次均手工鍵入 gcc 命令進(jìn)行編譯的話,則會非常不方便。因此,通常利用 make 工具來自動完成編譯工作。 make簡介 :(考點(diǎn)) make 是一個(gè)程序,通過一個(gè)稱為 makefile 的文件來完成并自動維護(hù)編譯工作(即makefile文件是make的執(zhí)行腳本)。在一般情況下,make 會根據(jù) Makefile 的規(guī)則來決定如何編譯 (compile) 和連結(jié) (link) 程序。,2020/9/23,91,Make編譯優(yōu)點(diǎn): 編譯工作:如果僅修改了某幾個(gè)源文件,則只重新編譯這幾個(gè)源文件;如果某個(gè)頭文件被修改了,則重新編譯所有包含該頭文件的源文件。

55、 優(yōu)點(diǎn):利用這種自動編譯可大大簡化開發(fā)工作,避免不必要的重新編譯。,2020/9/23,92,makefile 文件 makefile 需要按照某種語法進(jìn)行編寫,其中說明了 (1) 如何編譯各個(gè)源文件并連接生成可執(zhí)行文件, (2) 并定義了源文件之間的依賴關(guān)系。 (3) 當(dāng)修改了其中某個(gè)源文件時(shí),如果其他源文件依賴于該文件,則也要重新編譯所有依賴該文件的源文件。 Makefile命名規(guī)則 缺省情況下,當(dāng)make尋找makefile文件時(shí),它試圖搜尋具有如下的名字的文件,按順序:GNUmakefile、makefile和Makefile。 通常情況下應(yīng)把makefile文件命名為makefile

56、或Makefile。 除非makefile文件是特為GNU make編寫的,在其它make版本上不能執(zhí)行,才應(yīng)該使用GNUmakefile作為makefile的文件名。 ,2020/9/23,93,Makefile文件生成及運(yùn)行 Makefile 基本結(jié)構(gòu) Makefile 變量 Makefile 自動變量 Makefile 模式規(guī)則 自動依賴 和 Automake 運(yùn)行 make,2020/9/23,94,Makefile 基本結(jié)構(gòu)(考點(diǎn)) Makefile 基本上就是目標(biāo)(target), 關(guān)連(dependencies) 和動作三者所組成的一連串規(guī)則。 目標(biāo):make最終要創(chuàng)建的對象,對

57、象通常是目標(biāo)文件(.o)和可執(zhí)行文件(.exe)。 關(guān)連:通常是一個(gè)列表,指明編譯目標(biāo)時(shí)需要用到的其它文件。 動作:創(chuàng)建每個(gè)項(xiàng)目時(shí)需要運(yùn)行的命令(可以生成目標(biāo),或者是刪除文件等)。,2020/9/23,95,Makefile文件一般格式(考點(diǎn)) target: components TAB action 例如,有 C+ 源文件 test.C,該源文件包含有自定義的頭文件 test.h,則目標(biāo)文件 test.o 明確依賴于兩個(gè)源文件:test.C 和 test.h。希望用 g+ 命令來生成 test.o 目標(biāo)文件。 # This makefile just is a example. # The following lines indicate how test.o depends # test.C and test.h, and how to create test.o test.o: test.C test.h g+ -c -g test.C,2020/9/23,96,利用 make target 命令可指定要編譯的目

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論