版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
UNIX系統(tǒng)中的程序開發(fā)第一節(jié)UNIX的編程常識C語言標(biāo)準(zhǔn)ANSICANSI(美國國家標(biāo)準(zhǔn)局)于1989年制定,后被ISO(國際標(biāo)準(zhǔn)化組織)接受為標(biāo)準(zhǔn),故也稱為ISOC。目標(biāo):為各種操作系統(tǒng)上的C程序提供可移植性保證。該標(biāo)準(zhǔn)不僅定義了C的語法和語義,而且還定義了一個(gè)標(biāo)準(zhǔn)庫。該庫可根據(jù)頭文件劃分為15個(gè)部分:字符類型<ctype.h>、錯(cuò)誤碼<errno.h>、浮點(diǎn)常數(shù)<float.h>、數(shù)學(xué)常數(shù)<math.h>、標(biāo)準(zhǔn)定義<stddef.h>、標(biāo)準(zhǔn)I/O<stdio.h>、工具函數(shù)<stdlib.h>、字符串操作<string.h>、時(shí)間和日期<time.h>、可變參數(shù)表<stdarg.h>、信號<signal.h>等。POSIX、SVID、XPG……函數(shù)庫和系統(tǒng)調(diào)用glibcGNU的C函數(shù)庫,Linux上最重要的函數(shù)庫,定義了ISOC標(biāo)準(zhǔn)指定的所有的庫函數(shù),以及由POSIX或其他UNIX操作系統(tǒng)變種指定的附加特色,還包括與GNU系統(tǒng)相關(guān)的擴(kuò)展。其他重要函數(shù)庫系統(tǒng)調(diào)用庫和頭文件的保存位置函數(shù)庫/lib:系統(tǒng)必備共享庫/usr/lib:標(biāo)準(zhǔn)共享庫和靜態(tài)庫/usr/i486-linux-libc5/lib:libc5兼容性函數(shù)庫/usr/X11R6/lib:X11R6的函數(shù)庫/usr/local/lib:本地函數(shù)庫頭文件/usr/include:系統(tǒng)頭文件/usr/local/include:本地頭文件第二節(jié)UNIX中的編譯器cc命令gcc命令GNU的C和C++編譯器,可同時(shí)編譯并連接兩個(gè)或少數(shù)幾個(gè)C和C++源程序(通過源文件的后綴名來判斷是C程序還是C++程序)。gcc使用示例gcc的常用選項(xiàng)注:gcc命令只能編譯C++源文件,而不能自動(dòng)和C++程序使用的庫連接。因此,通常使用g++命令來完成編譯和連接。例:假設(shè)有兩個(gè)源文件main.c和factorial.c,現(xiàn)要編譯生成一個(gè)計(jì)算階乘的程序。/*factorial.c*/#include<stdio.h>#include<stdlib.h>intfactorial(intn){if(n<=1)return1;
elsereturnfactorial(n-1)*n;}/*main.c*/#include<stdio.h>#include<stdlib.h>intfactorial(intn);main(intargc,char**argv){intn;if(argc<2){
printf("Usage:%sn\n",argv[0]);return-1;}else{
n=atoi(argv[1]);
printf("Factorialof%dis%d.\n",n,factorial(n));}return0;}$gcc-ofactorialmain.cfactorial.cgcc的常用選項(xiàng)選項(xiàng) 解釋-c
只編譯并生成目標(biāo)文件。-DMACRO
以字符串“1”定義MACRO宏。-DMACRO=DEFN以字符串“DEFN”定義MACRO宏。-g
生成調(diào)試信息。-IDIRECTORY指定額外的頭文件搜索路徑DIRECTORY。-LDIRECTORY指定額外的函數(shù)庫搜索路徑DIRECTORY。-lLIBRARY 連接時(shí)搜索指定的函數(shù)庫LIBRARY。-oFILE
生成指定的輸出文件。-shared
生成共享目標(biāo)文件。通常用在建立共享庫時(shí)。-static
禁止使用共享連接。-UMACRO
取消對MACRO宏的定義。第三節(jié)控制軟件編譯過程的
工具—make為什么要使用make?包含多個(gè)源文件的軟件項(xiàng)目在編譯時(shí)都有長而復(fù)雜的命令行,make可以將它們保存在makefile文件中;make可以識別出那些被修改的文件并只編譯這些文件,減少了重編譯的時(shí)間;make在一個(gè)數(shù)據(jù)庫中維護(hù)了當(dāng)前項(xiàng)目中各文件的相互關(guān)系,從而在編譯前檢查是否可以找到所有需要的文件。makefile文件一個(gè)文本形式的數(shù)據(jù)庫,make工具借助于其完成并自動(dòng)維護(hù)編譯工作的文件,該文件按照某種語法進(jìn)行編寫,說明了如何編譯各個(gè)源文件并連接生成可執(zhí)行文件,定義了源文件之間的依賴關(guān)系。makefile文件的命名缺省:makefile或Makefile也可用make命令的-f選項(xiàng)指定makefile文件的基本結(jié)構(gòu)由若干規(guī)則構(gòu)成。規(guī)則的通用形式:taget:dependency1dependency2…… command command ……需要?jiǎng)?chuàng)建的二進(jìn)制文件或目標(biāo)文件創(chuàng)建target時(shí)所需的一個(gè)或多個(gè)文件創(chuàng)建target所需的命令步驟注:命令序列中每個(gè)命令的第一個(gè)字符必須是制表符;除非特別指定,否則make的工作目錄為當(dāng)前目錄。makefile的簡單例析行1
editor:editor.oscreen.okeyboard.o行2
gcc-oeditoreditor.oscreen.okeyboard.o行3
editor.o:editor.ceditor.hkeyboard.hscreen.h行4
gcc-ceditor.c行5
screen.o:screen.cscreen.h行6
gcc-cscreen.c行7
keyboard.o:keyboard.ckeyboard.h行8
gcc-ckeyboard.c行9
clean:
行10
rmeditor*.omakefile編寫的詳細(xì)規(guī)則偽目標(biāo)makefile中并不對應(yīng)于實(shí)際文件的目標(biāo)。執(zhí)行方式:make偽目標(biāo)名特殊的make目標(biāo):.PHONY它將其相關(guān)文件標(biāo)注為“不檢查存在性直接執(zhí)行相關(guān)命令”示例常用的偽目標(biāo):clean、install、all、dist等例:%makeclean行1
editor:editor.oscreen.okeyboard.o行2
gcc-oeditoreditor.oscreen.okeyboard.o行3
editor.o:editor.ceditor.hkeyboard.hscreen.h行4
gcc-ceditor.c行5
screen.o:screen.cscreen.h行6
gcc-cscreen.c行7
keyboard.o:keyboard.ckeyboard.h行8
gcc-ckeyboard.c行9
clean:
行10
rmeditor*.o.PHONY:clean變量定義方法:變量名=文本串引用方法:$(變量名)示例預(yù)定義變量環(huán)境變量行1
OBJS=editor.oscreen.okeyboard.o行2
HDRS=editor.hkeyboard.hscreen.h行3
editor:$(OBJS)行4
gcc-oeditor$(OBJS)行5
editor.o:editor.c$(HDRS)行6
gcc-ceditor.c行7
screen.o:screen.cscreen.h行8
gcc-cscreen.c行9
keyboard.o:keyboard.ckeyboard.h行10
gcc-ckeyboard.c行11.PHONY:clean行12
clean:
行13
rmeditor$(OBJS)make的主要預(yù)定義變量
變量含義$*不包含擴(kuò)展名的目標(biāo)文件名稱。$+所有的依賴文件,以空格分開,并以出現(xiàn)的先后為序,可能包含重復(fù)的依賴文件。$<第一個(gè)依賴文件的名稱。$?所有的依賴文件,以空格分開,這些依賴文件的修改日期比目標(biāo)的創(chuàng)建日期晚。$@目標(biāo)的完整名稱。$^所有的依賴文件,以空格分開,不包含重復(fù)的依賴文件。$%如果目標(biāo)是歸檔成員,則該變量表示目標(biāo)的歸檔成員名稱。例如,如果目標(biāo)名稱為mytarget.so(image.o),則$@為mytarget.so,而$%為image.o。
make的主要預(yù)定義變量(續(xù))
預(yù)定義變量含義AR歸檔維護(hù)程序的名稱,默認(rèn)值為ar。ARFLAGS歸檔維護(hù)程序的選項(xiàng)。AS匯編程序的名稱,默認(rèn)值為as。ASFLAGS匯編程序的選項(xiàng)。CCC編譯器的名稱,默認(rèn)值為cc。CFLAGSC編譯器的選項(xiàng)。CPPC預(yù)編譯器的名稱,默認(rèn)值為$(CC)-E。CPPFLAGSC預(yù)編譯的選項(xiàng)。CXXC++編譯器的名稱,默認(rèn)值為g++。CXXFLAGSC++編譯器的選項(xiàng)。FCFORTRAN編譯器的名稱,默認(rèn)值為f77。FFLAGSFORTRAN編譯器的選項(xiàng)。行1
OBJS=editor.oscreen.okeyboard.o行2
HDRS=editor.hkeyboard.hscreen.h行3
editor:$(OBJS)行4
$(CC)
$^-o$@行5
editor.o:editor.c$(HDRS)行6
$(CC)-c$<行7
screen.o:screen.cscreen.h行8
$(CC)-c$<行9
keyboard.o:keyboard.ckeyboard.h行10
$(CC)-c$<行11.PHONY:clean行12
clean:
行13
rmeditor$(OBJS)隱含規(guī)則行1
OBJS=editor.oscreen.okeyboard.o行2
editor:$(OBJS)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 會(huì)計(jì)數(shù)據(jù)分析 課件 第7章 生成主要績效指標(biāo)
- 2024屆山西省運(yùn)城市永濟(jì)中學(xué)高三第一次聯(lián)考試題數(shù)學(xué)試題試卷
- 陽光課堂課件教學(xué)課件
- 5年中考3年模擬試卷初中生物八年級下冊第一節(jié)傳染病及其預(yù)防
- 高中語文《屈原列傳》隨堂練習(xí)(含答案)
- 蘇少版小學(xué)五年級下冊音樂教案
- 花城版廣東版第一冊音樂教案
- 地質(zhì)調(diào)查備案登記表
- 養(yǎng)老院裝修項(xiàng)目協(xié)議
- 地?zé)崮茉从推愤\(yùn)輸合同
- 教學(xué)計(jì)劃(教學(xué)計(jì)劃)-2024-2025學(xué)年大象版四年級科學(xué)上冊
- 湖北省2025屆高三(9月)起點(diǎn)考試 化學(xué)試卷(含答案)
- 大一統(tǒng)王朝的鞏固(課件) 2024-2025學(xué)年七年級歷史上冊同步教學(xué)課件(統(tǒng)編版2024)
- 幼兒園大班韻律《兔子與農(nóng)夫》課件
- 6《芣苢》《插秧歌》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)統(tǒng)編版高中語文必修上冊
- 國家能源集團(tuán)招聘筆試題庫2024
- 醫(yī)療聯(lián)合體戰(zhàn)略合作協(xié)議(2024年版)
- 2024年秋季人教版七年級上冊歷史全冊大單元整體設(shè)計(jì)教學(xué)課件
- 初中數(shù)學(xué)解題教學(xué)設(shè)計(jì)
- 政法系統(tǒng)領(lǐng)導(dǎo)干部專題讀書班學(xué)習(xí)心得體會(huì)范文(三篇)
- JT∕T 934-2014 城市公共汽電車駕駛員操作規(guī)范
評論
0/150
提交評論