嵌入式系統(tǒng)原理與應(yīng)用-基于Cortex-A53微處理器 課件 第2章 Linux基本操作_第1頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用-基于Cortex-A53微處理器 課件 第2章 Linux基本操作_第2頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用-基于Cortex-A53微處理器 課件 第2章 Linux基本操作_第3頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用-基于Cortex-A53微處理器 課件 第2章 Linux基本操作_第4頁(yè)
嵌入式系統(tǒng)原理與應(yīng)用-基于Cortex-A53微處理器 課件 第2章 Linux基本操作_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

嵌入式系統(tǒng)原理與應(yīng)用電子與電氣工程學(xué)院第二章Linux基本操作教師:程蔚正大氣象厚德載物MinnanUniversityofScienceandTechnologyLinux基本操作CONTENTS01.Linux常用命令02.vi編輯器、gcc編譯器、gdb調(diào)試器03.make工程管理器04.開(kāi)發(fā)環(huán)境搭建正大氣象厚德載物MinnanUniversityofScienceandTechnology01PARTONELinux常用命令正大氣象厚德載物MinnanUniversityofScienceandTechnology

目錄結(jié)構(gòu)命令詳解作業(yè)總結(jié)Linux基礎(chǔ)命令正大氣象厚德載物MinnanUniversityofScienceandTechnology正大氣象厚德載物MinnanUniversityofScienceandTechnology/bin:存放常用命令的可執(zhí)行文件/boot:存放啟動(dòng)程序/dev:存放設(shè)備文件,字符設(shè)備(鍵盤、lcd,usb)/etc:存放啟動(dòng),關(guān)閉,配置程序與文件/home:用戶工作根目錄/lib:存放共享鏈接庫(kù)/root:超級(jí)用戶的工作目錄/sbin:系統(tǒng)管理員的常用管理程序/tmp:存放臨時(shí)文件/lost+found:系統(tǒng)出現(xiàn)異常時(shí),用于保存部分資料目錄結(jié)構(gòu)/根目錄~主目錄(家目錄)或/home/用戶名正大氣象厚德載物MinnanUniversityofScienceandTechnology/misc:一些實(shí)用工具/mnt:光驅(qū)、硬盤等的掛載點(diǎn)/media:光驅(qū)的自動(dòng)掛載點(diǎn)/proc:操作系統(tǒng)的實(shí)時(shí)信息/sys:系統(tǒng)中的硬件設(shè)備信息/srv:服務(wù)啟動(dòng)后需要提取的信息/var:主要存放系統(tǒng)日志/usr:存放用戶程序/tftpboot:tftp服務(wù)器的服務(wù)目錄/selinux:redhat提供的selinux安全程序目錄結(jié)構(gòu)正大氣象厚德載物MinnanUniversityofScienceandTechnology進(jìn)入Linux系統(tǒng),必須輸入用戶的賬號(hào),在系統(tǒng)安裝過(guò)程中可以創(chuàng)建以下兩種帳號(hào):1.root--超級(jí)用戶帳號(hào)(系統(tǒng)管理員),使用這個(gè)帳號(hào)可以在系統(tǒng)中做任何事情。2.普通用戶--這個(gè)帳號(hào)供普通用戶使用,可以進(jìn)行有限的操作。

一般的Linux使用者均為普通用戶,而系統(tǒng)管理員一般使用超級(jí)用戶帳號(hào)完成一些系統(tǒng)管理的工作。如果只需要完成一些由普通帳號(hào)就能完成的任務(wù),建議不要使用超級(jí)用戶帳號(hào),以免無(wú)意中破壞系統(tǒng),影響系統(tǒng)的正常運(yùn)行。用戶登錄分兩步:第一步,輸入用戶的登錄名,

第二步,輸入用戶的口令;當(dāng)用戶正確地輸入用戶名和口令后,就能合法地進(jìn)入系統(tǒng)。屏幕顯示:[root@loclhost/root]#

這時(shí)就可以對(duì)系統(tǒng)做各種操作了。超級(jí)用戶的提示符是“#”,其他用戶的提示符是“$”。命令詳解cd(changedirectory)1、作用:改變當(dāng)前工作路徑2、用法:

cddir/==>將當(dāng)前工作路徑改為dir/cd-==>將當(dāng)前工作路徑改為剛剛?cè)ミ^(guò)的目錄

cd~==>將當(dāng)前工作路徑改為家目錄一些特殊的文件:. 當(dāng)前目錄.. 上一級(jí)目錄../.. 上上級(jí)目錄/ 根目錄~ 家目錄、主目錄/home/用戶名正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解ls(list)1、作用:列出指定目錄下的文件信息2、用法:

ls ==>列出當(dāng)前目錄中的文件名

lsdir/ ==>列出指定目錄dir/中的文件名

ls-l ==>列出當(dāng)前目錄中的文件的詳細(xì)信息

ls-a ==>列出當(dāng)前目錄中的文件名(包括以.開(kāi)頭的隱藏文件)pwd1、作用:顯示當(dāng)前所在路徑正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解mkdir(mkdir)1、作用:創(chuàng)建新的目錄2、用法:

mkdirdir/ ==>在當(dāng)前目錄中創(chuàng)建dir目錄

mkdir-ptest2/test22==>在當(dāng)前目錄中創(chuàng)建test22目錄(不存在也創(chuàng)建)

mkdir–m777test3 ==>在當(dāng)前目錄中創(chuàng)建權(quán)限為test3目錄touch1、作用:創(chuàng)建新的文件2、用法:

touchmain.c ==>在當(dāng)前目錄中創(chuàng)建main.c正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解cp(copy)1、作用:復(fù)制指定的文件/目錄2、用法:

cpfile1file2 ==>將file1復(fù)制一份,并命名為file2cpdir1/dir2/-r ==>將dir1/遞歸地復(fù)制一份,并命名為dir2/正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解rm(remove)1、作用:刪除指定的文件/目錄2、用法:

rmfile ==>刪除文件filermdir/-r ==>遞歸地刪除目錄dir/正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解

mv(move)1、作用:將一個(gè)指定的文件/目錄移動(dòng)到另一個(gè)地方給一個(gè)文件/目錄重命名2、用法:

mvfiledir/ ==>將文件file移動(dòng)到dir/中

mvfile1file2 ==>將文件file1,重命名為file2mvdir1/dir2/ ==>將目錄dir1/,重命名為dir2/(dir2/當(dāng)前不存在)

mvdir1/dir2/ ==>將目錄dir1/移動(dòng)到dir2/中(dir2/當(dāng)前已存在)注:當(dāng)mv的第二個(gè)參數(shù)是一個(gè)合法的已存在的目錄時(shí),那么就是移動(dòng),否則就是重命名。正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解cat/more/less1、作用:顯示文本文件內(nèi)容/分屏顯示文件內(nèi)容2、用法:catfilemorefilelessfilehead/tail1、作用:查看一個(gè)文件的開(kāi)頭/結(jié)尾的若干行2、用法:

headfile-n10==>查看文件file的頭10行

tailfile-n20==>查看文件file的末20行正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解find1、作用:查找文件2、用法:

finddir/-name"xxx"==>在dir/查找名字為xxx的文件

finddir/-name"*.c"==>在dir/查找后綴名是.c的文件grep1、作用:查找字符串2、用法:

grep"apple"dir/-Hrnw==>在dir/中,遞歸地(r)按照全字匹配(w)查找"apple"這個(gè)字符串,并且找到之后打印出其所在文件名字(H)以及行號(hào)(n)正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解tar1、作用:解壓、壓縮2、用法:

tarczvfexample.tar.gzfile1file2dir1/dir2/ ==>將file1file2dir1/dir2/統(tǒng)統(tǒng)按照gzip格式壓縮成example.tar.gztar-tfexample.tar.gz ==>查看壓縮包example.tar.gz中有哪些文件

tarxzvfexample.tar.gz ==>將example.tar.gz中的文件解壓到當(dāng)前目錄

tarxzvfexample.tar.gz-Cdir/ ==>將example.tar.gz中的文件解壓到dir/注:將以上命令中的'z'改成'j',那就是針對(duì)bzip2格式的命令,bzip2格式的壓縮包的后綴是:

example.tar.bz2tarcjvfexample.tar.bz2file1file2dir1/dir2/正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解man(manual)1、作用:對(duì)相應(yīng)的條目查找?guī)椭?、用法:

manls ==>查找關(guān)于ls的默認(rèn)的幫助條目

man-fread ==>列出所有關(guān)于read的幫助手冊(cè)

man3posixread ==>查找在第三冊(cè)手冊(cè)中的關(guān)于read的幫助信息注:下載完整的man幫助文檔

sudoapt-getinstallmanpages-posixmanpages-posix-devmanpages-dev正大氣象厚德載物MinnanUniversityofScienceandTechnology命令詳解1、在家目錄中新建一個(gè)目錄,名為學(xué)號(hào)_姓名2、切換到新建的目錄(學(xué)號(hào)_姓名)中3、新建文件名為姓名.c(touch姓名.c)4、將姓名.c拷貝到/usr中5、切換到/usr中6、更改名字為:學(xué)號(hào).c7、將學(xué)號(hào).c拷貝到新建的目錄(學(xué)號(hào)_姓名)8、將目錄(學(xué)號(hào)_姓名)中的姓名.c和學(xué)號(hào).c壓縮為學(xué)號(hào).tar.gz9、將學(xué)號(hào).tar.gz拷貝到共享文件夾/mnt/hgfs/share中,進(jìn)行解壓。10、配置IP為192.168.班級(jí).xx,xx為學(xué)號(hào)最好兩位,192033101為,192033201為。作業(yè)正大氣象厚德載物MinnanUniversityofScienceandTechnology1、目錄結(jié)構(gòu)2、常用命令cd,ls,mkdir,touch,cp,rm,mv,cat/more/less,head/tail,find,grep,echo,tar,man3、思政:《道德經(jīng)》“天下難事必做于易,天下大事必做于細(xì)”。再難的事,也要從容易開(kāi)始;再大的事,也要從細(xì)處著手。Linux系統(tǒng)是個(gè)大的工程,包含很多功能,它為了實(shí)現(xiàn)整個(gè)系統(tǒng)功能,首先按需求分類,然后在各個(gè)分類下再細(xì)化具體實(shí)現(xiàn),采用分而治之、模塊化的思想設(shè)計(jì)了滿足需求的各種命令。螞蟻精神。螞蟻具有永不放棄、竭盡所能、團(tuán)結(jié)協(xié)作的精神。

Linux命令通常只實(shí)現(xiàn)單一功能,但絕大多數(shù)命令會(huì)提供設(shè)置選項(xiàng),以此盡可能滿足用戶各種需求。首先從容易的事情做起,理解Linux命令,當(dāng)需要實(shí)現(xiàn)復(fù)雜功能時(shí),對(duì)不同命令進(jìn)行組合,合力實(shí)現(xiàn)所需功能。

總結(jié)正大氣象厚德載物MinnanUniversityofScienceandTechnologyTHANKYOU!1、mkdir

101_cw2、cd

101_cw3、touch

cw.c4、cp

cw.c

/usr5、cd

/usr6、mv

cw.c

192033100.c7、cp

192033100.c

~/101_cw8、tar

czvf

192033100.tar.gz

cw.c

192033100.c9、cp192033100.tar.gz/mnt/hgfs

tarxzvf192033100.tar.gz正大氣象厚德載物MinnanUniversityofScienceandTechnology編輯器vi編譯鏈接器gcc調(diào)試器gdb項(xiàng)目管理器makeLinux下C語(yǔ)言編程基礎(chǔ)重點(diǎn)內(nèi)容正大氣象厚德載物MinnanUniversityofScienceandTechnology02PARTTWOvi、gcc、gdb正大氣象厚德載物MinnanUniversityofScienceandTechnology

文本編輯器vi使用

gcc編譯器gdb調(diào)試器作業(yè)正大氣象厚德載物MinnanUniversityofScienceandTechnologyvi是Linux系統(tǒng)的第一個(gè)全屏幕交互式編輯器。vi有3種工作模式,分別是命令行模式、插入模式、底行模式。命令行模式:最初進(jìn)入的一般模式,該模式下可以移動(dòng)光標(biāo)進(jìn)行瀏覽,整行刪除,但無(wú)法編輯文字。插入模式:只有在該模式下,用戶才能進(jìn)行文字的編輯輸入,用戶可以使用[ESC]鍵回到命令行模式。底行模式:該模式下,光標(biāo)位于屏幕底行,用戶可以進(jìn)行文件保存或退出操作,也可以設(shè)置編輯環(huán)境,如尋找字符串、列出行號(hào)。文本編輯器vi使用1.vihello.c2.鍵入i進(jìn)入插入模式3.編輯自己的程序4.鍵入[Esc]退回到命令行模式5.鍵入:wq保存退出文本編輯器vi使用命令行模式插入模式底行模式輸入i/a/o按下Esc輸入:wq回車:q!

命令行模式功能鍵:yy:復(fù)制當(dāng)前光標(biāo)所在行[n]yy:n為數(shù)字,復(fù)制當(dāng)前光標(biāo)開(kāi)始的n行p:粘貼復(fù)制的內(nèi)容到光標(biāo)所在行dd:刪除當(dāng)前光標(biāo)所在行[n]dd:刪除當(dāng)前光標(biāo)所在行開(kāi)始的n行/name:查找光標(biāo)之后的名為“name”的字符串G:

光標(biāo)移動(dòng)到文件尾(注意是大寫)u: 取消前一個(gè)動(dòng)作(注意是小寫)文本編輯器vi使用底行模式功能鍵::w 保存:q 退出vi(系統(tǒng)會(huì)提示保存修改):q! 強(qiáng)行退出(對(duì)修改不做保存):wq 保存后退出:w[filename]另存為filename的文件:setnu 顯示行號(hào):setnonu 取消行號(hào)文本編輯器vi使用Linux系統(tǒng)下的gcc(GNUCCompiler)是GNU推出的功能強(qiáng)大、性能優(yōu)越的多平臺(tái)編譯器,是GNU的代表作之一。gcc可以在多種硬體平臺(tái)上編譯出可執(zhí)行程序,其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30%。GCC編譯器能將C、C++語(yǔ)言源程序、匯編程序編譯、鏈接成可執(zhí)行文件。在Linux系統(tǒng)中,可執(zhí)行文件沒(méi)有統(tǒng)一的后綴,系統(tǒng)從文件的屬性來(lái)區(qū)分可執(zhí)行文件和不可執(zhí)行文件。使用GCC編譯程序時(shí),編譯過(guò)程可以被細(xì)分為四個(gè)階段:(1)預(yù)處理(Pre-Processing):對(duì)頭文件、宏定義展開(kāi).i(2)編譯(Compiling):檢查代碼規(guī)范性、語(yǔ)法,無(wú)誤后翻譯成匯編語(yǔ)句.s(3)匯編(Assembling):將匯編文件(.S)轉(zhuǎn)化為目標(biāo)文件(.o).o(4)鏈接(Linking):動(dòng)態(tài)鏈接、靜態(tài)鏈接成二進(jìn)制可執(zhí)行文件gcc編譯器hello.c(二進(jìn)制)可執(zhí)行文件gcc通過(guò)后綴來(lái)區(qū)別輸入文件的類別:gcc編譯器.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++源代碼文件.o為后綴的文件編譯后的目標(biāo)文件.s為后綴的文件匯編語(yǔ)言源代碼文件.S為后綴的文件經(jīng)過(guò)預(yù)編譯的匯編語(yǔ)言源代碼文件。gcc編譯器操作1:a.c內(nèi)容如下#include<stdio.h>intmain(void){ printf(Helloworld!\n); return0;}編譯和運(yùn)行這段程序:gcca.c-ohello./a輸出:Helloworld!gcc編譯器gcc最基本的用法是∶

gcc[options]filenameoptions:編譯器所需要的編譯選項(xiàng),編譯選項(xiàng)約有100多個(gè),只介紹常用的參數(shù)filenames:要編譯的文件名。(1)-ooutput_filename:確定可執(zhí)行文件的名稱output_filename。如果不給出這個(gè)選項(xiàng),gcc就給出預(yù)設(shè)的可執(zhí)行文件a.out。(演示)(2)-c:只編譯,不連接成為可執(zhí)行文件,編譯器只是由輸入的.c等源代碼文件生成.o為后綴的目標(biāo)文件。(3)-g:產(chǎn)生調(diào)試工具(GNU的gdb)所必要的符號(hào)信息,要想對(duì)編譯出的程序進(jìn)行調(diào)試,就必須加入這個(gè)選項(xiàng)。gcc編譯器的基本用法#include<stdio.h>intmain(void){

doublecounter; doubleresult; doubletemp; for(counter=0;counter<2000.0*2000.0*2000.0/20.0+2020; counter+=(5-1)/4){ temp=counter/1979; result=counter; } printf(“Resultis%lf\n”,result); return0;}(4)-O,對(duì)程序進(jìn)行優(yōu)化編譯、鏈接,采用這個(gè)選項(xiàng),整個(gè)源代碼會(huì)在編譯、連接過(guò)程中進(jìn)行優(yōu)化處理,這樣產(chǎn)生的可執(zhí)行文件的執(zhí)行效率可以提高,但是,編譯、連接的速度就相應(yīng)地要慢一些。(5)-O2,比-O更好的優(yōu)化編譯、連接,當(dāng)然整個(gè)編譯、連接過(guò)程會(huì)更慢。操作2(optimize.c)gccoptimize.c-ooptimizetime./optimizegcc–Ooptimize.c-ooptimizetime./optimize對(duì)比兩次執(zhí)行的輸出結(jié)果不難看出,程序的性能的確得到了很大幅度的改善gcc編譯器的基本用法(6)-Idirname:將dirname所指出的目錄加入到程序頭文件目錄列表中。#include<A.h>#include“B.h”

對(duì)于<>,預(yù)處理程序cpp在系統(tǒng)預(yù)設(shè)的頭文件目錄(如/usr/include)中搜尋相應(yīng)的文件;而對(duì)于””,cpp在當(dāng)前目錄中搜尋頭文件。此選項(xiàng)的作用是告訴cpp,如果在當(dāng)前目錄中沒(méi)有找到需要的文件,就到指定dirname目錄中去尋找。例:gccfoo.c–I/home/include-ofoogcc編譯器的基本用法(7)-Ldirname:將dirname所指出的目錄加入到庫(kù)文件的目錄列表中。在默認(rèn)狀態(tài)下,連接程序ld在系統(tǒng)的預(yù)設(shè)路徑中(如/usr/lib)尋找所需要的庫(kù)文件,這個(gè)選項(xiàng)告訴連接程序,首先到-L指定的目錄中去尋找,然后再到系統(tǒng)預(yù)設(shè)路徑中尋找。(8)-lname:在連接時(shí),裝載名字為“l(fā)ibname.a”的函數(shù)庫(kù),該函數(shù)庫(kù)位于系統(tǒng)預(yù)設(shè)的目錄或者由-L選項(xiàng)確定的目錄下。例如,-lm表示連接名為libm.a”的數(shù)學(xué)函數(shù)庫(kù)。例:gcctest.c-L/home/lib–lfoo-otestgcc編譯器的基本用法操作3,演示-Idirname,-Ldirname,-lname。

gcc編譯器的基本用法main.ca.cgcc-ca.carrcsvlibmylib.aa.ogccmain.c–omain–I./include–L./lib-lmylib(9)-static:靜態(tài)鏈接庫(kù)文件例:gcc–statichello.c-ohello

庫(kù)有動(dòng)態(tài)與靜態(tài)兩種,動(dòng)態(tài)通常用.so為后綴,靜態(tài)用.a為后綴。 例如:libhello.solibhello.a。當(dāng)使用靜態(tài)庫(kù)時(shí),連接器找出程序所需的函數(shù),然后將它們拷貝到可執(zhí)行文件,一旦連接成功,靜態(tài)程序庫(kù)也就不再需要了。然而,對(duì)動(dòng)態(tài)庫(kù)而言,就不是這樣,動(dòng)態(tài)庫(kù)會(huì)在執(zhí)行程序內(nèi)留下一個(gè)標(biāo)記‘指明當(dāng)程序執(zhí)行時(shí),首先必須載入這個(gè)庫(kù)。由于動(dòng)態(tài)庫(kù)節(jié)省空間,linux下進(jìn)行連接的缺省操作是首先連接動(dòng)態(tài)庫(kù)。演示:靜態(tài)鏈接與動(dòng)態(tài)鏈接可執(zhí)行文件大小比較。gcca.c–oagcc–statica.c–oals-lllgcc編譯器的基本用法(10)-Wall:生成所有警告信息(11)-w:不生成任何警告信息(12)-DMACRO:定義MACRO宏,等效于在程序中使用#defineMACROgcc編譯器的基本用法簡(jiǎn)介GDB是GNU發(fā)布的一款功能強(qiáng)大的程序調(diào)試工具。GDB主要完成下面三個(gè)方面的功能:1、啟動(dòng)被調(diào)試程序。2、讓被調(diào)試的程序在指定的位置停住。3、當(dāng)程序被停住時(shí),可以檢查程序狀態(tài)(如變量值)。gdb調(diào)試器操作1:vitest.c#include<stdio.h>voidmain(){ inti; longresult=0; for(i=1;i<=100;i++) { result+=i; } printf("result=%d\n",result);}gdb調(diào)試器gcc-gtest.c-otest//編譯生成可執(zhí)行文件gdbtest //啟動(dòng)GDBlist//查看程序breakmain//在main函數(shù)處設(shè)置斷點(diǎn)run//運(yùn)行程序next //單步運(yùn)行continue //繼續(xù)運(yùn)行q//退出gdbGDB命令啟動(dòng)GDB(1)gdb調(diào)試程序名

例:gdbhelloworld(2)gdb file調(diào)試程序名list(l)查看程序break(b)函數(shù)名

在某函數(shù)入口處添加斷點(diǎn)break(b)行號(hào)

在指定行添加斷點(diǎn)break(b)文件名:行號(hào)

在指定文件的指定行添加斷點(diǎn)break(b)行號(hào)if條件

當(dāng)條件為真時(shí),指定行號(hào)處斷點(diǎn)生效.gdb調(diào)試器例b5ifi=10 當(dāng)i等于10時(shí)第5行斷點(diǎn)生效infobreak 查看所有設(shè)置的斷點(diǎn)delete斷點(diǎn)編號(hào)

刪除斷點(diǎn)run(r) 開(kāi)始運(yùn)行程序next(n) 單步運(yùn)行程序(不進(jìn)入子函數(shù))step(s) 單步運(yùn)行程序(進(jìn)入子函數(shù))continue(c) 繼續(xù)運(yùn)行程序print(p)變量名

查看指定變量值finish 運(yùn)行程序,直到當(dāng)前函數(shù)結(jié)束watch變量名

對(duì)指定變量進(jìn)行監(jiān)控quit(q) 退出gdb操作2gdbfiletestl //bmain //b8 //btest.c:10 //b8ifi=10 //infob //d1 //d2 //d4 //gdb調(diào)試器runprintinextnnprintiprintresultstepb3continueqTHANKYOU!總結(jié)與作業(yè)總結(jié)1、vim的使用(命令行模式、插入模式、底行模式)2、gcc的使用(gccxxx.c–oxxx)3、gdb的使用作業(yè)1、使用vi新建姓名.c,此源程序功能實(shí)現(xiàn)打印輸出姓名和學(xué)號(hào)。2、對(duì)姓名.c進(jìn)行編譯3、執(zhí)行查看結(jié)果正大氣象厚德載物MinnanUniversityofScienceandTechnologyMian.c主程序main函數(shù)調(diào)用其他.c里面的函數(shù)main.cadc.cdiaplay.ciic.csub.cdiv.c…..Gccmax.c–omax.o–cGccmin.c–omin.o–c…Gccmain.omax.o…div.o-omain采用make管理器make正大氣象厚德載物MinnanUniversityofScienceandTechnology03PARTTHERE正大氣象厚德載物MinnanUniversityofScienceandTechnologymake工程管理器系統(tǒng)論哲學(xué)思想,系統(tǒng)論認(rèn)為,系統(tǒng)是一個(gè)由若干要素以一定結(jié)構(gòu)組成并具有某種功能的有機(jī)整體。運(yùn)用系統(tǒng)論,就要從整體出發(fā)分析系統(tǒng)結(jié)構(gòu),理清系統(tǒng)構(gòu)成的要素以及要素與要素、結(jié)構(gòu)與要素之間的相互關(guān)系,以此確定系統(tǒng)在整體上達(dá)到最優(yōu)的方案。

Linux軟件工程通常包含多個(gè)功能文件,在構(gòu)建工程目標(biāo)時(shí),就要理清目標(biāo)文件與源文件之間、目標(biāo)文件與目標(biāo)文件之間的依賴關(guān)系,并將這種相互依賴的關(guān)系集中體現(xiàn)在Makefile文件中,交由工程管理器管理。正大氣象厚德載物MinnanUniversityofScienceandTechnologymake概述Makefile語(yǔ)法及執(zhí)行Makefile變量總結(jié)與作業(yè)make工程管理器正大氣象厚德載物MinnanUniversityofScienceandTechnologyGNUmake是一種代碼維護(hù)工具;make工具會(huì)根據(jù)Makefile文件定義的規(guī)則和步驟完成整個(gè)軟件項(xiàng)目的代碼維護(hù)工作;一般用來(lái)簡(jiǎn)化編譯工作,可以極大地提高軟件開(kāi)發(fā)的效率;Windows下一般由集成環(huán)境自動(dòng)生成;Linux下需要由自己按照語(yǔ)法編寫;make是個(gè)命令,是個(gè)可執(zhí)行程序,用來(lái)解析Makefile文件的命令,此命令存放在/usr/bin中;Makefile是個(gè)文件,此文件中描述了程序的編譯規(guī)則,執(zhí)行make命令時(shí),make命令會(huì)在當(dāng)前目錄中找Makefile文件,根據(jù)Makefile文件里的規(guī)則編譯程序;Makefile的好處

簡(jiǎn)化編譯程序時(shí)輸入的命令,編譯時(shí)只需要輸入make;

節(jié)省編譯時(shí)間,提高編譯效率make概述Makefile語(yǔ)法及執(zhí)行(1)目標(biāo):是要產(chǎn)生的文件名稱,目標(biāo)可以使可執(zhí)行文件、其他obj文件或動(dòng)作的名稱(2)依賴文件:用來(lái)輸入從而產(chǎn)生目標(biāo)的文件,一個(gè)目標(biāo)通常有幾個(gè)依賴文件(可以沒(méi)有)(3)命令:make執(zhí)行的動(dòng)作,一個(gè)規(guī)則可以含有幾個(gè)命令(可以沒(méi)有),多個(gè)命令時(shí),每個(gè)命令占一行。(4)make命令,名字不為Makefile或makefile,使用:make–f文件名目標(biāo):依賴文件列表<tab>命令列表Makefile語(yǔ)法及執(zhí)行例題1:main.cmain.hmain.cmain.hmakefileC語(yǔ)言有很多函數(shù)(scanf/printf/…)/usr/include“”Makefile語(yǔ)法及執(zhí)行操作1:main.chead.hsub.csum.cmain.cmakefilehead.hsum.csub.cMakefile語(yǔ)法及執(zhí)行操作1:main.chead.hsub.csum.c,編寫Makefile文件。Makefile運(yùn)行結(jié)果Makefile變量變量作用:保存文件名列表、文件目錄列表、編譯器名、編譯參數(shù)、編譯輸出??梢允悄繕?biāo)體、依賴文件、命令以及Makefile文件中其他部分。分類: 1、自定義變量 2、預(yù)定義變量和自動(dòng)變量main:main.o

sub.o

sum.o

gcc

main.o

sub.o

sum.o-omain思考1:如果需要添加一個(gè)依賴,例如div.o,該如何修改???Makefile變量自定義變量:大小寫區(qū)分、在Makefile頭部定義,幾乎可在任何地方使用。

(1)定義變量變量名=變量值

CC=gcc

(2)引用變量$(變量名)或${變量名}$(CC)gcc操作2:詳見(jiàn)Makefile2文件Makefile變量預(yù)定義變量和自動(dòng)變量預(yù)定義變量含義預(yù)定義變量含義自動(dòng)變量含義AR庫(kù)文件維護(hù)程序的名稱,默認(rèn)值為arARFLAGS庫(kù)文件維護(hù)程序的選項(xiàng)$@目標(biāo)文件的完整名稱AS匯編程序的名稱,默認(rèn)值為asASFLAGS匯編程序的選項(xiàng)$<依賴文件列表中的第一個(gè)依賴文件名稱CCC編譯器的名稱,默認(rèn)值為ccCFLAGSC編譯器的選項(xiàng)$^所有不重復(fù)的依賴文件,空格分開(kāi)CPPC預(yù)編譯器的名稱,默認(rèn)值為$(CC)–ECPPFLAGSC預(yù)編譯器選項(xiàng)CXXC++編譯器的名稱,默認(rèn)值為g++CXXFLAGSC++編譯器的選項(xiàng)FCFortran編譯器的名稱,默認(rèn)值為f77FFLAGSFortran編譯器的選項(xiàng)RM文件刪除程序的名稱,默認(rèn)值為rm-f操作3:詳見(jiàn)Makefile3和Makefile4(精簡(jiǎn)版)1、Makefile語(yǔ)法結(jié)構(gòu)

目標(biāo):依賴 <tab>命令2、變量:自定義變量,預(yù)定義變量、自動(dòng)變量

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 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ì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論