版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、.操作系統(tǒng)實驗課環(huán)境搭建1. Vwmare的使用注:關(guān)于vwmare與vwmare上linux的安裝詳見老師給的操作系統(tǒng)原理課程設(shè)計實驗手冊。本文檔使用的vwmare版本是Workstation 6.5 正式版,linux系統(tǒng)是red hat linux.1.1 了解什么是虛擬機虛擬機是指運行在Windows或Linux計算機上的一個應(yīng)用程序,這個應(yīng)用程序“模擬”了一個基于x86的標準PC的環(huán)境。這個環(huán)境和普通的計算機一樣,都有芯片組、CPU、內(nèi)存、顯卡、聲卡、網(wǎng)卡、軟驅(qū)、硬盤、光驅(qū)、串口、并口、USB控制器、SCSI控制器等設(shè)備,提供這個應(yīng)用程序的“窗口”就是虛擬機的顯示器。在使用上,這臺虛
2、擬機和真正的物理主機沒有太大的區(qū)別,都需要分區(qū)、格式化、安裝操作系統(tǒng)、安裝應(yīng)用程序和軟件,總之,就像一臺真正的計算機一樣。使用虛擬機可以輕松模擬多種系統(tǒng)環(huán)境,低成本實現(xiàn)硬件環(huán)境模擬,還可以模擬實現(xiàn)各種網(wǎng)絡(luò)環(huán)境。 1.2 VMware軟件安裝運行安裝文件,出現(xiàn)以下界面選擇自定義或默認軟件安裝選擇安裝路徑選擇是否安裝桌面快捷方式開始安裝軟件安裝完成同意用戶協(xié)議 VMware界面1.3 創(chuàng)建一個新的虛擬機選擇ISO文件安裝(6.5版新功能)選擇可以安裝的Windows版本選擇可以安裝Linux的版本選擇虛擬機的路徑選擇虛擬機硬盤大小新建虛擬機的信息創(chuàng)建虛擬機完成修改虛擬機設(shè)置修改虛擬機光驅(qū)設(shè)置創(chuàng)建虛
3、擬機還原點輸入還原點名字和信息從還原點還原虛擬機管理虛擬機的還原點2. Linux 的使用2.1 如何開機首先啟動Vmware workstation,進入Vmware workstation主界面。點擊或者工具欄里面的按鈕開機。稍等一會兒出現(xiàn)如下界面,用鼠標點擊界面,輸入用戶名:root(注:用鼠標點擊界面后,你會發(fā)現(xiàn)鼠標進入VMWARE界面出不來了,按CTRL+ALT組合鍵可以實現(xiàn)鼠標在兩個系統(tǒng)間的切換)。按Enter鍵,出現(xiàn)下圖,提示輸入密碼。輸入密碼之后,再按Enter鍵,如果用戶名和密碼正確的話,你就進入系統(tǒng),接下來你就可以做相應(yīng)的操作了。2.2 Linux 的目錄結(jié)構(gòu)在linux中
4、,目錄是一個層次(或樹狀結(jié)構(gòu)),根是所有目錄的起始點,根目錄主要有以下子目錄l /bin:包含二進制文件,即可執(zhí)行程序,這些程序是系統(tǒng)必需的文件l /sbin:也用于存儲二進制文件,只有超級用戶root才可以使用l /etc:存放配置文件,如passwd,inittab等l /boot:系統(tǒng)引導時使用的文件,系統(tǒng)中非常重要的內(nèi)核vmlinux就放于該目錄l /dev:存放設(shè)備文件,用戶可以通過這些文件訪問外部設(shè)備l /lib:存放程序運行時所需要的庫文件l /temp:存放各種臨時文件l /mnt:安裝軟盤,光盤,u盤的掛載點l /root:超級用戶的個人主目錄l /usr:該目錄的空間比較大
5、,用于安裝各種應(yīng)用程序l /proc:是一個虛擬目錄,存放當前內(nèi)存的映像,由內(nèi)核自動產(chǎn)生l /var:存放一些會隨時改變的文件2.3 Linux 的常用命令Linux常用命令有下面幾種:l 文件查看與編輯命令 -cat, more, less, vil 文件和目錄操作命令-pwd, cd, ls, mkdir, rmdir , touch, cp, rm, mv, chmodl 備份與壓縮命令-tar, GZIP, NUZIPl 網(wǎng)絡(luò)命令 -hostname, ping, traceroute, ifconfig, telnet, netstatl 磁盤管理命令 -fdisk, df, dul
6、 其他命令 -man, kill, echo, ps, date, clear, setup, cal下面我們將舉例介紹一下一些經(jīng)常會用到的命令:1) Cat-顯示文件內(nèi)容cat cal1 cal2-連接多個文件cat file1 file2 > file3把文件1和文件2的內(nèi)容寫到文件3中cat file1 file2 >> file3把文件1和文件2的內(nèi)容追加到文件3末尾2) More-逐頁顯示文件內(nèi)容More a.txt用“enter”鍵向后移動一行;用“space”鍵向后移動一頁;按“q”鍵退出3) Less-逐頁顯示文件內(nèi)容less a.txt用“enter”鍵向后
7、移動一行;用“space”鍵向后移動一頁;按“q”鍵退出用“pgup”鍵向前移動一頁;用“pgdown”鍵向后移動一頁,用“向上”光標鍵向前移動一行;用“向下”光標鍵向后移動一行4) Pwd -顯示當前工作目錄的絕對路徑5) cd dirName-變換工作目錄至dirName6) ls -列出目錄下的內(nèi)容藍色表示目錄,綠色表示可執(zhí)行文件,紅色表示壓縮文件,淺藍色表示鏈接文件,灰色表示其它文件7) touch-創(chuàng)建文件 例:touch test.txt8) rm-刪除文件 例:rm test.txt 9) mkdir-創(chuàng)建目錄 例:mkdir test10) rmdir-刪除目錄 例:rmdir
8、 test11) cp-拷貝一個目錄當中所有的文件cp /etc/*.* 目標文件夾-拷貝一個目錄當中所有的文件和文件夾cp R /etc 目標文件夾-覆蓋目標文件并且不提醒-f12) mv-移動命令13) chmod-改變文件或目錄的訪問權(quán)限用戶和組:u-文件擁有者;g-文件所屬組;o-其它用戶權(quán)限:r-讀權(quán)限;w寫權(quán)限;x執(zhí)行權(quán)限(對于目錄來說,表示切換到該目錄)例:chmod o+w a.txtchchmod u=rw,g=rw,o=r a.txtchmod 664 a.txt 等價于chmod u=rw,g=rw,o=r a.txt 14) tar,備份與壓縮命令-主選項 -c 創(chuàng)建
9、-x 釋放-輔助選項 -v 顯示各個文件名稱 -f 后面跟歸檔文件名字 -z 壓縮/解壓縮例如:-把/home下的文件和子目錄(包括隱含文件和目錄)備份到a.tar中-Tar cvf a.tar /home-把/home下的文件和子目錄備份到a.tar中,并且用gzip壓縮-Tar czvf a.tar.gz /home-從a.tar.gz文檔中恢復數(shù)據(jù)-Tar xzf a.tar.gz /home15) 網(wǎng)絡(luò)命令-hostname:顯示和設(shè)置系統(tǒng)的主機名-Ping ,Traceroute:顯示本機到達目標主機的路由路徑例:Traceroute -ifconfig:顯示和設(shè)置網(wǎng)絡(luò)配置信息-te
10、lnet:遠程登陸命令-netstat:顯示網(wǎng)絡(luò)連接、路由器、網(wǎng)絡(luò)接口信息16) 磁盤管理命令-fdisk:觀察硬盤實際使用情況、分割硬盤 -df:檢查文件系統(tǒng)的磁盤空間占用情況 -du:顯示磁盤空間的使用情況 17) 其它-man :查看幫助-ps :顯示瞬間進程 (process) 的動態(tài) -kill :中止一個進程 -clear: 清屏-date:顯示日期-cal:顯示指定年月的月歷-echo:顯示文字2.4 Linux 幾個重要的配置文件-Linux網(wǎng)絡(luò)配置文件/etc/sysconfig/network-scripts/ifcfg-eth0-Grub配置文件 /boot/grub/g
11、rub.conf-Linux 啟動配置文件/etc/rc.local -Linux 啟動時掛載配置文件/etc/fstab2.5 如何在LINUX系統(tǒng)中安裝軟件在Linux系統(tǒng)中,軟件安裝程序比較紛繁復雜,不過最常見的有兩種:1)一種是軟件的源代碼,您需要自己動手編譯它。這種軟件安裝包通常是用gzip壓縮過的tar包(后綴為.tar.gz)。2)另一種是軟件的可執(zhí)行程序,你只要安裝它就可以了。這種軟件安裝包通常是一個RPM包(Redhat Linux Packet Manager,就是Redhat的包管理器),后綴是.rpm。當然,也有用rpm格式打包的源代碼,用gzip壓縮過的可執(zhí)行程序包。
12、只要您理解了以下的思路,這兩種形式的安裝包也不在話下了。下面,我們就分成兩個部分來說明軟件安裝思路:2.5.1 以.tar.gz為后綴的軟件的安裝方法1.首先,使用tar -xzvf來解開這個包,如:#tar -xzvf apache_1_3_6_tar.gz這樣就會在當前目錄中創(chuàng)建了一個新目錄(目錄名與.tat.gz包的文件名類似),用來存放解壓了的內(nèi)容。如本例中就是apache_1.3.62.進入這個目錄,再用ls命令查看一下所包含的文件,如:#cd apache_1.3.6#ls你觀察一下這個目錄中包含了以下哪一個文件:configure、Makefile還是Imake。u 如果是con
13、figure文件,就執(zhí)行:#./configure#make#make installu 如果是Makefile文件,就執(zhí)行:#make#make installu 如果是Imake文件,就執(zhí)行:#xmkmf#make#make install3.如果沒有出現(xiàn)什么錯誤提示的話,就搞定了。至于軟件安裝到什么地方,通常會在安裝時出現(xiàn)。如果遇到錯誤提示,也別急,通常是十分簡單的問題:1)沒有安裝C或C+編譯器;確診方法:執(zhí)行命令gcc(C+則為g+),提示找不到這個命令。解決方法:將Linux安裝光盤mount上來,然后進入RPMS目錄,執(zhí)行命令:#rpm -ivh gcc* (哈哈,我們用到了第二
14、種安裝方式)2)沒有安裝make工具;確診方法:執(zhí)行命令make,提示找不到這個命令。解決方法:將Linux安裝光盤mount上來,然后進入RPMS目錄,執(zhí)行命令:#rpm -ivh make*3)沒有安裝autoconf工具;確診方法:執(zhí)行命令make,提示找不到這個命令。解決方法:將Linux安裝光盤mount上來,然后進入RPMS目錄,執(zhí)行命令:#rpm -ivh autoconf*4)缺少某些鏈接庫;確診方法:在make時,提示需要某些文件。解決方法:安裝包含這個文件的包,這就需要積累了。2.5.2 以.RPM為后綴的軟件的安裝方法RPM是Red Hat公司隨Redhat Linux推
15、出了一個軟件包管理器,通過它能夠更加輕松容易地實現(xiàn)軟件的安裝。1.安裝軟件:執(zhí)行rpm -ivh rpm包名,如:#rpm -ivh apache-1.3.6.i386.rpm2.升級軟件:執(zhí)行rpm -Uvh rpm包名。3.反安裝:執(zhí)行rpm -e rpm包名。4.查詢軟件包的詳細信息:執(zhí)行rpm -qpi rpm包名5.查詢某個文件是屬于那個rpm包的:執(zhí)行rpm -qf rpm包名6.查該軟件包會向系統(tǒng)里面寫入哪些文件:執(zhí)行 rpm -qpl rpm包名2.5.3 LINUX軟件安裝總結(jié)1. RPM包的安裝和卸載rootlocalhost # rpm ivh <指定rpm軟件包.
16、rpm> /安裝rootlocalhost # rpm aq <指定rpm軟件包.rpm> /查詢rootlocalhost # rpm e <指定rpm軟件包.rpm> /卸載2. 軟件源程序安裝和卸載rootlocalhost # tar <軟件壓縮包> /解壓縮包rootlocalhost # ./configure -prefix=<path>/配置rootlocalhost # make /編譯rootlocalhost # make install /安裝 修改配置文件(一般為.conf文件)rootlocalhost # ma
17、ke uninstall /卸載3. 如何實現(xiàn)LINUX與主機的交互通常實現(xiàn)LINUX與主機的交互有如下四種方法:l U盤;l Vmware Toolsl SSH遠程登陸工具l samba3.1 利用U盤實現(xiàn)交互用U盤實現(xiàn)LINUX與主機的交互可以說是最簡單的一種方法了,該方法不需要安裝軟件,只需要點幾下,輸入幾行命令就可以了,接下來我們將詳細介紹。首先插入U盤,如下圖紅色圈內(nèi)所示,說明U盤已經(jīng)被Windows主機讀取到了(呵呵,這個估計地球人都知道)其次回到LINUX主界面,在工具欄上點擊VM-> ->à會出現(xiàn)下圖,提示USB設(shè)備(也就是你的U盤)要從Windows主機
18、彈出,并打算連向你的虛擬機了。點OK之后,出現(xiàn)下圖,說明U盤已經(jīng)也虛擬機連接成功。接下來我們就要輸入命令來使U盤里面的東本掛載到LINUX系統(tǒng)里面。進入LINUX主界面,右鍵à新建終端,出現(xiàn)下圖:輸入fdisk l命令查看你的的U盤的盤符,如下圖,U盤盤符為:/dev/sdb1(如果你不確定哪個是新出現(xiàn)的U盤盤符的話,你可以在先把U盤從LINUX中彈出,方法和連接時一樣,即時點擊VM-> ->à,彈出之后再輸入fdisk l命令,記住哪些是系統(tǒng)本身就有的盤,然后再把U盤接入,輸入fdisk l命令,新出現(xiàn)的那個必定就是你的U盤了)看清楚哪個是你的U盤以后,我們就
19、可以掛載U盤了,你可以先新建一個文件夾,將U盤的內(nèi)容掛載到你建的文件夾下,輸入mkdir /mnt/usb,就會在/mnt目錄下新建一個名字為usb的文件夾,接著再輸入mount -t vfat /dev/sdb1 /mnt/usb(如果usb設(shè)備是FAT32 格式的,就輸入此命令,其他格式就將vfat換為msdos就可以了,在這里我的usb設(shè)備是FAT32 格式,所以輸入上述命令。)出現(xiàn)下圖,說明U盤已經(jīng)掛載成功了,去/mnt/usb目錄下看看吧,你U 盤上的所有內(nèi)容都在里面了,你可以把里面的內(nèi)容拷貝到LINUX系統(tǒng)里面。用umount /dev/sdb1即可卸載載U盤。3.2 安裝Vmwa
20、re Tools實現(xiàn)交互VMware-tools能夠增強虛擬顯卡和硬盤性能,可以實現(xiàn)主機和虛擬機之間的文件共享,并且允許你在虛擬機和主機圖形用戶界面之間平滑移動鼠標光標。光標設(shè)置也允許你在虛擬機和主機之間以及從一臺虛擬機到另一臺虛擬機復制和粘貼文本緩存。 利用Vmware Tools 實現(xiàn)交互也是一種比較簡單的方法,但這里就是涉及到在LINUX系統(tǒng)里面安裝軟件了。首先你可能會問,我怎么得到Vmware Tools的安裝軟件?我覺得有三種方法,第一,如果你有red hat linux 的安裝盤的話,直接將其插入你的電腦;第二如果你有的是red hat linux的鏡像文件的話,點擊Vmware工
21、具欄上的VMàsettings,出現(xiàn)下圖,然后browse將鏡像文件載入。接下來,回到主界面,點擊VM->,你會在桌面上發(fā)現(xiàn)一個光盤的圖標,雙擊打開,你會發(fā)現(xiàn)你需要的軟件就在/mnt/cdrom文件夾下。直接可以右鍵->復制文件,將之拷貝到其他目錄安裝,不過這里我們著重介紹用LINUX命令實現(xiàn)這些,以便熟悉LINUX命令。(在這里有些同學可能想我的第三種方法是什么,所謂的第三種方法就是直接在網(wǎng)上下載或者在其他地方拷貝到Vmware Tools的安裝軟件,利用我們上面講到的U盤實現(xiàn)交互的方法,把它拷貝到LINUX系統(tǒng)里面)。接下來我們就講怎么安裝Vmware Tools軟件
22、吧。進入LINUX主界面,右鍵à新建終端cd /mnt/cdrom指向目錄/cdrom下,輸入ls命令就可以看到該目錄下的所有文件。在這個文件夾中有一個VMwareTools-6.5.0-118166.tar.gz文件。linux下的這個虛擬光驅(qū)跟我們平時熟悉的光驅(qū)都是一回事,這里將文件拷貝到別的地方只是為了方便。如下圖:1、 安裝軟件l cp VMwareTools-6.5.0-118166.tar.gz /tmp 將文件拷貝到/tmp目錄下。l cd /tmp進入/tmp目錄。l 用tar命令將壓縮包解壓:tar zxvf VMwareTools-6.5.0-118166.tar
23、.gz,然后:ls,會看到一個vmware-tools-distrib文件夾。接著:cd vmware-tools-distrib。l 再輸入:./vmware-install.pl ,軟件便開始安裝了(注意 /vmware-install.pl 前面有個圓點噢),在執(zhí)行vmware-install.pl時,出現(xiàn)提示讓你選擇文件安裝目錄的時候,可以一路按默認選項。2、 配置軟件,要想正確的運行VmwareTools,必須對其進行配置,l cd /usr/binl ./vmware-config-tools.pl. 其實,在執(zhí)行.
24、/vmware-install.pl時,最后一個選項就是提示你要對vmware tools進行配置,如果你選擇的是“yes”,這一步就可以省略。這一步所要做的就是告訴vmware tools如何在現(xiàn)有的內(nèi)核上正確的運行。3、 .配置完成之后,我們的VmwareTools就安裝成功了,這時你會發(fā)現(xiàn)你的鼠標在LINUX與WINDOS之間不需要切換就可以隨便移動了,不過我們這里主要還是要講安裝了VmwareTools之后怎么實現(xiàn)共享文件。4、 下面進行共享文檔的設(shè)置 Vm->setting:options ->Shared folder 選項,點擊右邊的Add,添加一個共享文檔。添加完畢
25、后確定就可以了。如下圖,我添加的共享文件夾名為share.5、 cd /mnt,然后: ls 出現(xiàn)Cdrom,floppy,hgfs 這三個目錄,我們在上一步設(shè)置的共享文檔(share)就在hgfs目錄中。3.3 利用SSH遠程登陸工具實現(xiàn)交互我用的SSH軟件版本是SSHSecureShellClient-3.2.9,首先在windows下安裝SSHSecureShellClient-3.2.9,安裝成功后桌面上會出現(xiàn)SSH Secure Shell Client和SSH Secure File Transfer Client。接下
26、來就是配置LINUX的網(wǎng)絡(luò),只要將LINUX的IP與主機IP配置在同一網(wǎng)段,網(wǎng)關(guān),子網(wǎng)掩碼一樣,就可以用SSH遠程登陸LINUX了。我們先看一下WINDOWS主機的網(wǎng)絡(luò):點擊開始>運行,輸入cmd進入WINDOWS控制終端,然后輸入ipconfig查看看IP地址等信息,輸入nslookup可以查看看DNS服務(wù)器地址。如下圖所示:我的電腦的IP:192.168.0.129,子網(wǎng)掩碼:255.255.255.0,網(wǎng)關(guān):192.168.0.1,DNS:202.115.32.39下面我們就來配置LINUX的網(wǎng)絡(luò)。右鍵à新建終端,輸入:cd /etc/sysconfig/nework-s
27、cripts進入/nework-scripts目錄,然后:ls,會看到此目錄下的所有文件,其中ifcfg-eth0(注意這里是數(shù)字0,而不是英文字母)就是我們要配置的文件,輸入命令:vi ifcfg-eth0,便可查看此文件的內(nèi)容,要編輯此文件,先按一下鍵盤上的insert的快捷鍵i.配置完之后按:ESCà:wq后,就可以保存并退出,回到命令界面。然手輸入:service network restart重啟,就配置成功了。網(wǎng)絡(luò)配置成功之后,我們就可以用SSH了,回到本機的桌面,打開SSH Secure File Transfer Client,單擊左上角的,在出現(xiàn)的對話框中輸入你的L
28、INUX的IP地址與主機名,然后點擊按鈕,輸入密碼。然后點擊,便出現(xiàn)下圖,左邊為WINDOWS,右邊為LINUX,現(xiàn)在可以實現(xiàn)文件的傳輸了。用同樣的方法或者直接點擊上圖的就可以登陸,SSH Secure Shell Client3.4 利用samba實現(xiàn)交互Samba使用基于TCP/IP的SMB協(xié)議模塊,能夠使得Linux主機在“網(wǎng)絡(luò)鄰居”中看起來和一天windows主機相同,windows用戶可以登陸到Linux主機中,實現(xiàn)同Linux主機的數(shù)據(jù)交換.Samba是一個工具套件,在Linux上實現(xiàn)SMB (Session Message Block)協(xié)議,或者稱之為NETBIOS /Lan M
29、anager協(xié)議。SMB協(xié)議通常是Windows系列用來實現(xiàn)磁盤和打印機共享。安裝上Samba 以后,在Windows和Linux 的局域網(wǎng)內(nèi)可以共享文件,Linux 就像一臺網(wǎng)絡(luò)PC 或者LAN內(nèi)其它的Windows PC一樣。3.4.1 Samba的安裝rootlocalhost # tar fvxz samba-2.2.12.tar.gz rootlocalhost # cd samba-2.2.12 rootlocalhost # ./configure rootlocalhost # make rootlocalhost # make install 3.4.2 Samba的配置ro
30、otlocalhost # vi /usr/local/samba/lib/smb.conf 修改smb.conf文件,添加如下內(nèi)容:all path = / browseable = yeswritable = yes 3.4.3 啟動Sambarootlocalhost # /usr/local/samba/bin/nmbd -D rootlocalhost # /usr/local/samba/bin/smbd -D 3.4.4 使用Samba進入網(wǎng)絡(luò)上其它Windows系統(tǒng)計算機 開始菜單->運行,然后輸入 <Samba服務(wù)器計算機IP> ,回車即可訪問剛才設(shè)置的共享
31、目錄 / .4. nachos的搭建4.1 nachos的搭建1. 把nachos4.1下載到/usr/local目錄2. rootlocalhost root#cd /usr/local rootlocalhost local# / tar -zvxf nachos-4.1.tgz-將之解壓。3. 解壓之后目錄名為nachos-4.1,把目錄改成nachos4. 進入解壓后的目錄,其中有code子目錄,再進入其中的build.linux子目錄rootlocalhost local# cd ./nachos(注意前面的.)rootlocalhost nachos# cd ./code/buil
32、d.linux5. 輸入 make dependrootlocalhost build.linux# make depend6. 輸入 make 看看結(jié)束有沒有錯誤,如果沒有,那么就成功了。rootlocalhost build.linux# make 7. 編譯好的nachos系統(tǒng)鏡像就在build.linux目錄下,運行時直接 ./nachos 就可以了。8. 如果要到其他目錄下運行的話,還要export才行。nachos詳細運行參數(shù)可以用./nachos -u 得到。4.2 交叉編譯工具的搭建在一種計算機環(huán)境中運行的編譯程序,能編譯出在另外一種環(huán)境下運行的代碼,我們就稱這種編譯器支持交叉
33、編譯。這個編譯過程就叫交叉編譯。簡單地說,就是在一個平臺上生成另一個平臺上的可執(zhí)行代碼。1. 把下載的交叉編譯工具(mips-decstation.linux-xgcc.tar.gz)放到 / 目錄下,即根目錄下然后用tar -zvxf 命令解壓即可。必須放到根目錄下,因為壓縮包里面包含了/usr/local的目錄層次。(也可以將之放到其他目錄下解壓,然后把解壓之后的/usr/local目錄下的所有東西拷貝到/usr/local下)2. 另外還需要編譯測試程序轉(zhuǎn)換工具,進入 nachos/coff2noff3. 運行 ./configure4. make 即可。5. 現(xiàn)在進入/usr/loca
34、l/nachos/code/test目錄編譯測試用例,檢查交叉編譯器是否安裝正確6. 執(zhí)行make7. 如果出現(xiàn)錯誤信息則vi Makefile.dep,按以下方式修改CPP = /usr/local/nachos/lib/gcc-lib/decstation-ultrix/2.95.2/cpp#CPP = /usr/local/nachos/current/lib/gcc-lib/decstation-ultrix/2.7.2.1/cppGCCDIR = /usr/local/nachos/bin/decstation-ultrix-#GCCDIR = /usr/local/nachos/c
35、urrent/bin/decstation-ultrix-8. 保存后執(zhí)行make再次測試5. Linux環(huán)境的C編程5.1 Linux平臺下程序的開發(fā)流程Ø Linux中的主要文本編輯工具有:Vi、Vim、Emacs等。在C代碼錄入的過程中常用的是Vim,它提供了很好的縮進、關(guān)鍵詞高亮等功能,加快代碼的輸入速度、能有效地避免輸入錯誤。 Ø 在編譯階段,Linux的C編譯器主要使用GNU gcc,它會自動完成預(yù)編譯、編譯、匯編、鏈接等過程,可以使用參數(shù)來控制gcc的行為。Ø 調(diào)試是發(fā)現(xiàn)問題的主要手段,切忌人為的一行一行代碼去檢查來發(fā)現(xiàn)問題,一定要跟蹤代碼的執(zhí)行,在
36、執(zhí)行過程中發(fā)現(xiàn)問題。 程序的開發(fā)流程圖如下:5.2 編譯工具Gcc的使用5.2.1 Gcc使用概述Ø Linux平臺通用的C編譯器是GNU的Gcc??梢酝ㄟ^以下命令查看系統(tǒng)中Gcc的版本:#gcc -versionØ Gcc的使用方法很直觀,直接以待編譯的源代碼文件作為Gcc的輸入?yún)?shù),Gcc將自動完成代碼的預(yù)編譯、編譯、匯編、鏈接等過程,例如現(xiàn)有一個C的源文件helloword.c使用如下命令編譯該文件:#gcc helloword.c Ø gcc將從helloword.c中讀取源代碼,完成預(yù)編譯、編譯、匯編、鏈接等過程,最后生成一個名為a.out的可執(zhí)行文件。
37、此過程會生成一系列的臨時文件,一般存放在/tmp/目錄下。 Ø gcc通過-o參數(shù)來控制輸出的可執(zhí)行程序的名稱。(命令“gcc c helloword.c”可以直接生成helloword.o)5.2.2 怎樣編譯多個源文件示例中將多個源文件作為gcc的輸入即可編譯多個文件,同時展示了-c參數(shù)的用處。 5.2.3 怎樣將程序編譯為動態(tài)鏈接庫使用shared參數(shù)告訴gcc將代碼編譯成動態(tài)庫,但是庫的名字一定要起為libxxx.so,當動態(tài)庫編譯好后就可以在其他程序中使用動態(tài)庫的功能,如helloword中就使用了libshow.so中的功能。為了將庫鏈接到本地程序,首先需要使用-L指定庫
38、的目錄位置,然后-l參數(shù)指定庫的名稱。注意示例中庫名稱的指定 5.2.4 gcc的一些其他重要命令行參數(shù)Ø -g 在生成的可執(zhí)行文件中保存符號表,在使用調(diào)試工具gdb時將用到這些信息;Ø -D 在gcc的命令行中定義作用于所有源程序的宏;Ø -O 指定編譯器在編譯代碼時使用的優(yōu)化級別;Ø -w 取消編譯過程中產(chǎn)生的警告信息的顯示;Ø -W 在編譯過程中將顯示更詳細的警告信息;Ø -ansi or std=c89 指定按照c標準的哪個版本對源代碼進行編譯 使用一條gcc語句,編譯工程中所有的源代碼。該方法存在以下缺點:1. 很難構(gòu)造一條
39、gcc命令來編譯工程中所有的源文件,特別是在工程包含大量源文件、庫的時候,寫出一條完備的gcc命令將是一個噩夢;2. 每次執(zhí)行g(shù)cc命令將對所有的源文件從新編譯一次,這是一個耗時的過程,對大型的工程尤其如此。呼喚一種簡單方便,高效的工程文件管理、編譯方法!5.3 Makefile的編寫規(guī)則Makefile是linux下的工程控制文件。Ø 什么是make?有什么作用? make用來管理多模塊程序的編譯和鏈接,直到生成可執(zhí)行代碼。為建立支持穩(wěn)定而高效的可升級的大型軟件產(chǎn)品,提供了一種強大而靈活的機制,簡言之,make就是一個軟件工程的管理工具。make 可自動決定一個大程序中哪些文件需要
40、重新編譯,并發(fā)布重新編譯它們的命令。 Ø 怎樣控制make的行為?makefile是什么?makefile是用來控制make怎樣編譯和鏈接一個程序的配置文件,這主要通過定義目標與源文件的依賴關(guān)系以及生成目標使用的命令來完成。 make根據(jù)makefile中的內(nèi)容控制工程的編譯。5.3.1 構(gòu)成makefile的(最)基本元素一個makefile由下面這樣的基本元素構(gòu)成:target :dependency <Tab>commandstarget一般為程序所生成的文件名。例如可執(zhí)行文件名或者目標文件名;一個目標也可以是一個將要執(zhí)行的動作的名稱,見后續(xù)示例。dependenc
41、y是作為輸入文件,被用來生成目標文件,一個目標文件可以由好幾個輸入文件編譯而成。command是make所執(zhí)行的動作,可以由好幾個命令組成,每個命令獨占一行注意:每個命令行開頭必須有一個<Tab>鍵,切記。5.3.2 makefile示例在本例中,首先定義了一個target-helloword 它依賴helloword.c和show.o文件,為了生成helloword,使用的命令是:gcc o helloword show.o helloword.c 如上可解釋show.o的依賴關(guān)系和生成命令。最后定義了一個名為c-lean的目標,它完成清除環(huán)境的任務(wù)。 make一般從第一個規(guī)則塊
42、(rule)開始(以.開頭的目標名不能算作一個rule),被稱作默認目標(default goal),也就是make命令要生成的最終文件。如上例,helloword是最終的目標文件,被作為第一個rule。當你發(fā)出make命令后,make命令查找當前目錄中的makefile文件,然后開始執(zhí)行第一個rule。如上例,第一個rule就是生成helloword可執(zhí)行文件。在完全執(zhí)行該rule之前,它先要處理該rule中所有的依賴(dependencies)。而這些依賴(dependencies)又必須根據(jù)它們自己的rule來生成。如果一個目標文件的依賴文件比它本身更新,或者目標文件根本就不存在,那么將
43、根據(jù)對應(yīng)的rule重新編譯生成新目標文件。除了第一個rule外,其它的rule也能執(zhí)行,是因為第一個rule的依賴(dependencies)與其他的rule有關(guān),否則只有第一個rule被執(zhí)行;如果你想執(zhí)行出第一個rule以外的其他獨立rule,那么就必須通過make命令行參數(shù)來指明,例如上面的make clean。可以在makefile中 定義變量,并對變量賦值,在命令中使用變量名來代替輸入全部的參數(shù)。這種方法讓makefile具有更好的靈活性。objects = main.o kbd.o command.o display.o insert.o search.o files.o utils
44、.o CC = gcc edit : $(objects)$(CC) -o edit $(objects) 5.3.3 makefile默認定義的變量Ø $* 不包含擴展名的目標文件名稱。Ø $+ 所有的依賴文件,以空格分開,并以出現(xiàn)的先后為序,可能包含重復的Ø 依賴文件。Ø $< 第一個依賴文件的名稱。Ø $? 所有依賴文件,以空格分開,這些依賴文件的修改日期比目標文件的創(chuàng)建日期晚。Ø $ 目標的完整名稱。Ø $ 所有的依賴文件,以空格分開,不包含重復的依賴文件。5.3.4 命名一個makefile文件默認情況下,make命令會尋找下列文件:GNUmakefile, makefile和Makefile。如果你不指定makefile文件,那么你必須指定一個最終的目標文件,make命令會自動使用內(nèi)部隱含的rule來編譯。如果你不想用默認的makefile文件名,你也可以通過 -f filename 或 -file=filename,來告訴make應(yīng)該讀取的文件。如果你用 -f或 -file指定了多個文件,那么它們將按順序被聯(lián)接在一起。如果你用-f或 -file指定,那么將不自動查找默認的makefile等文件。5.4 Gdb調(diào)試工具的使用Ø gdb <program>其
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 感恩節(jié)幼兒講話稿15篇
- 微觀世界紀錄片觀后感
- 解決方案企業(yè)突發(fā)環(huán)境事件應(yīng)急預(yù)案管理d
- 2016河北道法試卷+答案+解析
- 初級會計實務(wù)-2021年5月16日下午初級會計職稱考試《初級會計實務(wù)》真題
- 初級會計經(jīng)濟法基礎(chǔ)-初級會計《經(jīng)濟法基礎(chǔ)》模擬試卷33
- 2024年中國智慧工廠行業(yè)市場集中度、競爭格局及投融資動態(tài)分析報告(智研咨詢)
- 二零二五年度企業(yè)應(yīng)收賬款債權(quán)轉(zhuǎn)讓及資金周轉(zhuǎn)協(xié)議4篇
- 二零二五年度高端個人咨詢服務(wù)合同2篇
- 基于深度學習的室外火災(zāi)煙霧目標檢測
- 福建省泉州市晉江市2024-2025學年七年級上學期期末生物學試題(含答案)
- 2025年春新人教版物理八年級下冊課件 第十章 浮力 第4節(jié) 跨學科實踐:制作微型密度計
- 2024-2025學年人教版數(shù)學六年級上冊 期末綜合試卷(含答案)
- 收養(yǎng)能力評分表
- 三年級上冊體育課教案
- 山東省桓臺第一中學2024-2025學年高一上學期期中考試物理試卷(拓展部)(無答案)
- 中華人民共和國保守國家秘密法實施條例培訓課件
- 管道坡口技術(shù)培訓
- 2024年全國統(tǒng)一高考英語試卷(新課標Ⅰ卷)含答案
- 2024年認證行業(yè)法律法規(guī)及認證基礎(chǔ)知識 CCAA年度確認 試題與答案
- 皮膚儲存新技術(shù)及臨床應(yīng)用
評論
0/150
提交評論