久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > linux >内容正文

linux

LV.2 Linux C语言高级

發(fā)布時間:2023/12/20 linux 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LV.2 Linux C语言高级 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

D1 軟件包管理及shell命令

環(huán)境安裝

裝虛擬機(jī)需要將宿主機(jī)的虛擬化功能打開。
重啟電腦。

Linux介紹

1969年,由KenThompson在AT&T貝爾實驗室實現(xiàn)的。使用的是用匯編語言。
1970年,KenThompson(肯·湯普遜)和DennisRitchie(丹尼斯·里奇)使用 C語言對整個系統(tǒng)進(jìn)行了再加工和編寫,使得Unix能夠很容易的移植到其他硬件的計算機(jī)上。

Unix家庭樹

什么是Linux?

GNU&GPL 參考1 參考2

Linux確實存在,許多人都在使用它,但它僅僅是所用系統(tǒng)的一部分。Linux是內(nèi)核:它是為你運行的其他程序分配計算機(jī)資源的程序。內(nèi)核是操作系統(tǒng)的基本部分,但是它自己并無用處;它只能在完整的操作系統(tǒng)框架下才能發(fā)揮作用。Linux一般和GNU操作系統(tǒng)一起使用:整個系統(tǒng)基本上就是GNU加上Linux,或叫GNU/Linux。所有被叫做“Linux”的發(fā)行版實際上是GNU/Linux發(fā)行版。

GNU = GNU is Not Unix
由Richard Stallman(理查德·斯托曼)在1984創(chuàng)建
最初的軟件:gcc、make、glibc…
GPL = General Public License (自由軟件保護(hù)條款)

What is Copyleft? - GNU Project - Free Software Foundation(自由軟件基金會)
學(xué)習(xí)用Ubuntu(每年4月份10月份發(fā)行一次)下載Ubuntu桌面系統(tǒng) | Ubuntu
Linux發(fā)行版本


脫穎而出的Ubuntu

Ubuntu發(fā)行版本代號

體系結(jié)構(gòu)

  • 內(nèi)核更新非常快,三天兩頭更新 The Linux Kernel Archives
  • 選擇命令終端窗口
    目前,在桌面環(huán)境下的命令終端仿真器程序有很多,它們各有特色,都擁有各自的用戶群。目前流行的終端窗口有:
    Xterm、
    Gnome-terminal、
    Konsole、
    Rxvt等
    Ubuntu Linux默認(rèn)安裝的命令終端有Gnome-terminal、Xterm,其他的命令終端都需要另行安裝。
  • Gnome-terminal是GNOME默認(rèn)的命令終端。比Xterm具有更多、更強(qiáng)的功能,提供了剪切、粘貼、多標(biāo)簽顯示,以及設(shè)置終端配置文件等功能,中文支持和用戶界面也很友好。用戶可以使用窗口菜單,或快捷鍵完成操作。

    deb軟件包管理機(jī)制

    流行的兩種軟件包管理機(jī)制

    Debian Linux(一種自由操作系統(tǒng))首先提出軟件包”的管理機(jī)制,Deb軟件包;Redhat Linux(紅帽)由此提出了 Rpm 軟件包
    將應(yīng)用程序的二進(jìn)制文件、配置文檔、man/info幫助頁面等文件合并打包在一個文件中,用戶使用軟件包管理器直接操作軟件包,完成獲取、安裝、卸載、查詢等操作。隨著Linux操作系統(tǒng)規(guī)模的不斷擴(kuò)大,系統(tǒng)中軟件包間復(fù)雜的依賴關(guān)系,導(dǎo)致Linux用戶麻煩不斷。
    隨著Linux操作系統(tǒng)規(guī)模的不斷擴(kuò)大,系統(tǒng)中軟件包間復(fù)雜的依賴關(guān)系,導(dǎo)致Linux用戶麻煩不斷。
    Debian Linux開發(fā)出了APT(Advanced Packaging Tool)軟件包管理器。
    檢查和修復(fù)軟件包依賴關(guān)系
    利用Internet網(wǎng)絡(luò)幫助用戶主動獲取軟件包
    APT工具再次促進(jìn)了Deb軟件包更為廣泛地使用,成為Debian Linux的一個無法替代的亮點。

    軟件包的類型

    Ubuntu有兩種類型的軟件包:二進(jìn)制軟件包(deb)和源碼包(deb-src)
    二進(jìn)制軟件包(Binary Packages):它包含可執(zhí)行文件、庫文件、配置文件、man/info頁面、版權(quán)聲明和其它文檔。
    源碼包(Source Packages):包含軟件源代碼、版本修改說明、構(gòu)建指令以及編譯工具等。先由tar工具歸檔為.tar.gz文件,然后再打包成.dsc文件。
    在用戶不確定一個軟件包類型時,可以使用file命令查看文件類型。

    軟件包的命名

    dpkg(Debian Package”的簡寫)命令

    軟件包管理工具分類

    根據(jù)用戶交互方式的不同,可以將常見的軟件包管理工具分為三類。

    命令行軟件包管理工具(dpkg):
    dpkg -i 安裝一個在本地文件系統(tǒng)上存在的Debian軟件包
    dpkg -r 移除一個已經(jīng)安裝的軟件包
    dpkg -P 移除已安裝軟件包及配置文件
    dpkg -L 列出安裝的軟件包清單
    dpkg -s 顯出軟件包的安裝狀態(tài)
    文本窗口軟件包管理工具:

    aptitude為一個高級包管理工具,也是目前首選的字符界面 APT前端。
    一旦開始使用,最好一直使用它。否則將失去其包存放的軟件安裝清單,就不能享受自動刪除多余軟件包的功能

    aptitude工具也可以在命令行操作
    aptitude update 更新可用的包列表
    aptitude upgrade 升級可用的包
    aptitude dist-upgrade 將系統(tǒng)升級到新的發(fā)行版
    aptitude install pkgname 安裝包
    aptitude remove pkgname 刪除包
    aptitude purge pkgname 刪除包及其配置文件
    aptitude search string 搜索包
    aptitude show pkgname 顯示包的詳細(xì)信息
    aptitude clean 刪除下載的包文件
    aptitude autoclean 僅刪除過期的包文件

    圖形界面軟件包管理工具(synaptic ):

    APT 工作原理

    Ubuntu采用集中式的軟件倉庫機(jī)制,將各式各樣的軟件包分門別類地存放在軟件倉庫中,進(jìn)行有效地組織和管理。然后,將軟件倉庫置于許許多多的鏡像服務(wù)器中,并保持基本一致。因此,對于用戶,這些鏡像服務(wù)器就是他們的軟件源(reposity)。

    在Ubuntu系統(tǒng)中,使用軟件源配置文件/etc/apt/sources.list 列出最合適訪問的鏡像站點地址。 軟件源配置文件只是告知Ubuntu系統(tǒng)可以訪問的鏡像站點地址。但那些鏡像站點都擁有什么軟件資源并不清楚。若是每安裝一個軟件包,就在服務(wù)器上尋找一邊,效率是很低的。因而,就有必要為這些軟件資源列個清單(建立索引文件),以便本地主機(jī)查詢。這就是APT軟件包管理器的工作原理。

    軟件源配置文件

    /etc/apt/sources.list。本質(zhì)就是一個普通的文本文件,可以在超級管理員授權(quán)下,使用任何文本編輯器進(jìn)行編輯。在該文件中,添加的軟件源鏡像站點稱為一個配置項,并遵循以下格式:

    軟件源

    根據(jù)軟件包的開發(fā)組織對該軟件的支持程度,以及遵從的開源程度,劃分為如下四類:
    核心(Main):官方維護(hù)的開源軟件,是由Ubuntu官方完全支持的軟件,包括大多數(shù)流行的、穩(wěn)定的開源軟件,是Ubuntu默認(rèn)安裝的基本軟件包;
    公共(Universe):社區(qū)維護(hù)的開源軟件,是由Ubuntu社區(qū)的計算機(jī)愛好者維護(hù)的軟件。這些軟件包沒有安全升級的保障。用戶在使用時,需要考慮這些軟件包存在的不穩(wěn)定性;
    受限(Restricted):官方維護(hù)的非開源軟件,是專供特殊用途,而且沒有自由軟件版權(quán),不能直接修改軟件,但依然被Ubuntu團(tuán)隊支持的軟件;
    多元化(Multiverse):非Ubuntu官方維護(hù)的非開源軟件,用戶使用這些軟件包時,需要特別注意版權(quán)問題。

    刷新軟件源

    修改了配置文件——/etc/apt/sources.list,目的只是告知軟件源鏡像站點的地址。但那些所指向的鏡像站點所具有的軟件資源并不清楚,需要將這些資源列個清單,以便本地主機(jī)知曉可以申請哪些資源。
    使用“apt-get update”命令會掃描每一個軟件源服務(wù)器,并為該服務(wù)器所具有軟件包資源建立索引文件,存放在本地的/var/lib/apt/lists/目錄中。

    dpkg和apt軟件包管理器有什么區(qū)別?

    dpkg 在命令行模式下完成軟件包管理任務(wù)。為完成軟件包的獲取、查詢、軟件包依賴性檢查、安裝、卸載等任務(wù),需要使用各自不同的命令Debian Linux開發(fā)出了APT軟件包管理器。 用于,檢查和修復(fù)軟件包依賴關(guān)系 ,利用Internet網(wǎng)絡(luò)幫助用戶主動獲取軟件包

    管理軟件包

    在Ubuntu Linux中,通常使用apt-get命令管理軟件包,只需告知軟件包名字,就可以自動完成軟件包的獲取、安裝、編譯和卸載,以及檢查軟件包依賴關(guān)系。 apt-get命令提供了一個軟件包管理的命令行平臺。在這個平臺上使用更豐富的子命令,完成具體的管理任務(wù)。apt-get subcommands(子命令) [ -d | -f | -m | -q | --purge | --reinstall | - b | - s | - y | - u | - h | -v ] (選項) pkg


    修復(fù)軟件包依賴關(guān)系

    如果由于故障而中斷軟件安裝過程,可能會造成關(guān)聯(lián)的軟件包只有部分安裝。之后,用戶就會發(fā)現(xiàn)該軟件既不能重裝又不能刪除。
    作為組合命令,下面前者用于檢查軟件包依賴關(guān)系,后者用于修復(fù)依賴關(guān)系。
    “apt-get check”——“apt-get -f install”
    在處理依賴關(guān)系上,apt-get會自動下載并安裝具有依賴關(guān)系(depends)的軟件包,但不會處理與安裝軟件包存在推薦(recommends)和建議(suggests)關(guān)系的軟件包。

    更新軟件包

    在Ubuntu Linux中,只需使用命令“apt-get upgrade”就可以輕松地將系統(tǒng)中的所有軟件包一次性升級到最新版本

    安裝軟件包

    在準(zhǔn)備好軟件源并連通網(wǎng)絡(luò)后,用戶只需告知安裝軟件的名稱,“apt-get install”命令就可以輕松完成整個安裝過程,而無須考慮軟件包的版本、優(yōu)先級、依賴關(guān)系等。使用“apt-get install”下載軟件包大體分為四步:STEP1,掃描本地存放的軟件包更新列表(由apt-get update命令刷新更新列表),找到最新版本的軟件包;STEP2,進(jìn)行軟件包依賴關(guān)系檢查,找到支持該軟件正常運行的所有軟件包;STEP3,從軟件源所指的鏡像站點中,下載相關(guān)軟件包;STEP4 ,解壓軟件包,并自動完成應(yīng)用程序的安裝和配置。

    重新安裝軟件包

    當(dāng)用戶不小心損壞了已安裝的軟件包,而需要修復(fù)。或者,希望重新安裝軟件包中某些文件的最新版本,可以重新安裝軟件包。

    卸載軟件包

    不完全卸載 “apt-get remove”會關(guān)注那些與被刪除的軟件包相關(guān)的其它軟件包,刪除一個軟件包時,將會連帶刪除與該軟件包有依賴關(guān)系的軟件包。完全卸載 “apt-get --purge remove”命令在卸載軟件包文件的同時,還刪除該軟件包所使用的配置文件。

    清理軟件包緩沖區(qū)

    清理軟件包緩沖區(qū).如果用戶認(rèn)為軟件包緩沖區(qū)中的文件沒有任何價值了,有必要刪除全部下載的軟件包。可以使用“apt-get clean”清理整個軟件包緩沖區(qū),除了lock鎖文件和partial目錄。


    按照依賴關(guān)系清理緩沖區(qū)中多余的軟件包 如果用戶希望緩沖區(qū)中只保留最新版本的軟件包,多余版本全部清除,可以使用“apt-get autoclean”命令。

    查詢軟件包描述信息


    使用“apt-cache show”命令獲取指定軟件包的詳細(xì)信息,包括軟件包安裝狀態(tài)、優(yōu)先級、適用架構(gòu)、版本、存在依賴關(guān)系的軟件包,以及功能描述。該命令可以同時顯現(xiàn)多個軟件包的詳細(xì)信息。

    獲取軟件包安裝狀態(tài)

    使用“apt-cache policy”可以獲取軟件包當(dāng)前的安裝狀態(tài)如果用戶僅想了解某個軟件包依賴于哪些軟件包,可以使用“apt-cache depends”命令如果用戶僅想了解某個軟件包被哪些軟件包所依賴,可以使用“apt-cache rdepends”命令。

    總結(jié)與思考

    本節(jié)課主要講解了APT軟件包管理器的工作原理及主要命令。
    下列文件什么作用?
    /etc/apt/sources.list
    /var/lib/apt/lists/*
    /var/cache/apt/archives

    shell基本命令

    shell簡介

    shll 直譯為貝殼 ,Linux內(nèi)核的一個外層保護(hù)工具,完成用戶與內(nèi)核之間的交互。將用戶的命令或按鍵轉(zhuǎn)化程序內(nèi)核所能夠理解的指令,控制操作系統(tǒng)做出響應(yīng),直到控制相關(guān)硬件設(shè)備。然后,將輸出結(jié)果通過shell提交給用戶。
    命令是用戶向系統(tǒng)內(nèi)核發(fā)出控制請求,與之交互的文本流。
    shell是一個命令行解釋器,將用戶命令解析為操作系統(tǒng)所能理解的指令,實現(xiàn)用戶與操作系統(tǒng)的交互。
    當(dāng)需要重復(fù)執(zhí)行若干命令,可以將這些命令集合起來,加入一定的控制語句,編輯成為shell腳本文件,交給shell批量執(zhí)行。
    用戶在命令行提示符下鍵入命令文本,開始與Shell進(jìn)行交互
    接著,shell將用戶的命令或按鍵轉(zhuǎn)化成內(nèi)核所能夠理解的指令
    控制操作系統(tǒng)做出響應(yīng),直到控制相關(guān)硬件設(shè)備
    然后,shell將輸出結(jié)果通過shell提交給用戶

    選擇shell

    最初的UNIX shell經(jīng)過多年的發(fā)展,由不同的機(jī)構(gòu)、針對不同的目的,開發(fā)出許多不同類型的shell程序。目前流行的shell主要有幾種 :

    • Bourne(/b??n/ 小溪) Shell(簡稱sh):它是Unix的第一個shell程序,早已成為工業(yè)標(biāo)準(zhǔn)。目前幾乎所有的Linux系統(tǒng)都支持它。不過Bourne Shell的作業(yè)控制功能薄弱,且不支持別名與歷史記錄等功能。
    • C Shell(簡稱csh)
    • Korn Shell(簡稱ksh)
    • Bourne Again Shell(簡稱bash):能夠提供環(huán)境變量以配置用戶Shell環(huán)境,支持歷史記錄,內(nèi)置算術(shù)功能,支持通配符表達(dá)式,將常用命令內(nèi)置簡化。

    體驗shell命令的樂趣

    立即關(guān)機(jī)與重啟
    使用系統(tǒng)中的圖形界面

    使用shell命令

    在命令行鍵入以上命令,系統(tǒng)立即關(guān)機(jī) :


    在命令行鍵入以上命令,系統(tǒng)立即重新啟動 :
    定時關(guān)機(jī)sudo shutdown -h +45 “this is all,game over.” 時間限定在45分鐘內(nèi),否則計算機(jī)將自動關(guān)機(jī)
    定時重啟sudo shutdown -r +60 計算機(jī)會在60分鐘后自動重啟

    shell命令格式

    shell提示符標(biāo)識了命令行的開始。用戶在提示符后面輸入一條命令并按Enter鍵,完成向系統(tǒng)提交指令。
    通常shell命令提示符采用以下的格式:

    username:用戶名,顯示當(dāng)前登錄用戶的賬戶
    hostname:主機(jī)名,顯示登錄的主機(jī)名,例如若遠(yuǎn) 程登錄后,則顯示登錄的主機(jī)名;
    direction:目錄名,顯示當(dāng)前所處的路徑,當(dāng)在根目錄下顯示為“/”,當(dāng)在用戶主目錄下顯示為“~”;

    通常一條命令包含三個要素:命令名稱、選項、參數(shù)。命令名稱是必須的,選項和參數(shù)都可能是可選項。命令格式如下所示:

    KaTeX parse error: Expected 'EOF', got '#' at position 28: …當(dāng)前用戶為超級用戶,提示符為“#?”,其他用戶的提示符均為“”;
    Command:命令名稱,Shell命令或程序,嚴(yán)格區(qū)分大小寫
    Options:命令選項,用于改變命令執(zhí)行動作的類型,由“-”引導(dǎo),可以同時帶有多個選項;
    Argument:命令參數(shù),指出命令作用的對象或目標(biāo),有的命令允許帶多個參數(shù)。

    通常一條命令包含三個要素:命令名稱、選項、參數(shù)。命令名稱是必須的,選項和參數(shù)都可能是可選項。命令格式如下所示:

    KaTeX parse error: Expected 'EOF', got '#' at position 28: …當(dāng)前用戶為超級用戶,提示符為“#?”,其他用戶的提示符均為“”;
    Command:命令名稱,Shell命令或程序,嚴(yán)格區(qū)分大小寫
    Options:命令選項,用于改變命令執(zhí)行動作的類型,由“-”引導(dǎo),可以同時帶有多個選項;
    Argument:命令參數(shù),指出命令作用的對象或目標(biāo),有的命令允許帶多個參數(shù)。

    一條命令的三要素中間用空格隔開
    多行命令用 ‘;’ 分隔。
    同一行命令換行結(jié)尾加 ‘\’ 聲明未結(jié)束。

    不帶選項和參數(shù)

    ls命令未帶任何參數(shù),列出當(dāng)前目錄中的所有文件,只顯示文件名稱。
    命令不帶選項或參數(shù),通常意為使用默認(rèn)選項或參數(shù)。

    命令行操作

    bash(Bourne Again Shell,簡稱bash)除了在命令編輯功能上比sh有很大改進(jìn)外,還增加了特有功能極大地方便了用戶在Shell命令行上的操作。
    補齊命令與文件名 :按兩下TAB或ESC鍵,用戶命令補全, 按一次TAB用于文件名補全。
    查詢命令歷史 : history

    總結(jié)與思考

    本節(jié)課先對shell做了基本介紹,然后講解了linux命令的基本格式,最后介紹了常見的命令行操作
    思考:
    什么是shell?
    如何更改歷史記錄容量?
    歷史記錄如何刪除?

    shell中的特殊字符

    通配符

    當(dāng)需要用命令處理一組文件,例如file1.txt、file2.txt、file3.txt……,用戶不必一一輸入文件名,可以使用shell通配符。shell命令的通配符含義如下表

    管道

    管道可以把一系列命令連接起來,意味著第一個命令的輸出將作為第二個命令的輸入,通過管道傳遞給第二個命令,第二個命令的輸出又將作為第三個命令的輸入,以此類推。就像通過使用“|”符連成了一個管道。

    以上操作中,借助管道“|”,將ls的輸出直接作為wc命令的輸入。使用管道可以巧妙的將一些命令聯(lián)合使用,得到單個命令所無法實現(xiàn)的效果。例如使用以上的命令組合,得到的是/usr/bin目錄下文件的個數(shù)。

    grep -rn “Linux” /etc/passwd | wc -w 查看文件行數(shù)

    總結(jié)與思考

    本節(jié)課主要介紹了shell中的幾種特殊字符的用法以及管道的使用
    思考
    shell中有哪些特殊字符?
    shell中管道的作用?
    shell中g(shù)rep命令和管道如何結(jié)合?

    輸入/輸出重定向

    輸入/輸出重定向是改變shell命令或程序默認(rèn)的標(biāo)準(zhǔn)輸入/輸出目標(biāo),重新定向到新的目標(biāo)。
    linux中默認(rèn)的標(biāo)準(zhǔn)輸入定義為鍵盤,標(biāo)準(zhǔn)輸出定義為終端窗口。
    用戶可以為當(dāng)前操作改變輸入或輸出,迫使某個特定命令的輸入或輸出來源為外部文件。

    cat命令功能為在標(biāo)準(zhǔn)輸出上顯示文件。下面通過一個實例,可以更好地理解重定向的功能。

    命令置換

    命令替換是將一個命令的輸出作為另一個命令的參數(shù)。命令格式如下所示。
    其中,命令command2的輸出將作為命令command1的參數(shù)。需要注意,命令置換的單引號為ESC鍵下方的“`”鍵
    pwd命令用于顯示當(dāng)前目錄的絕對路徑。在上面的命令行中,使用命令置換符,將pwd的運行結(jié)果作為ls命令的參數(shù)。最終,命令執(zhí)行結(jié)果是顯示當(dāng)前目錄的文件內(nèi)容。

    總結(jié)與思考

    本節(jié)課首先介紹了shell中的輸入輸出重定向的用法,然后介紹了命令置換的 使用
    思考:
    什么叫輸入輸出重定向?
    有哪些輸入輸出重定向符?

    D2 linux shell命令

    2.1shell基本系統(tǒng)維護(hù)命令

    獲取聯(lián)機(jī)幫助

    man 可以找到特定的聯(lián)機(jī)幫助頁,man ls 。聯(lián)機(jī)幫助頁提供了指定命令commandname的相關(guān)信息,包括:名稱、函數(shù)、語法以及可選參數(shù)描述等。無論幫助有多長,都遵循這個格式顯示。在頁面很多的情況下使用PageUp和PageDown鍵翻頁。最后,使用“:q”退出幫助頁面。

    NAME:命令的名稱 SYNOPSIS:命令的語法格式 DESCRIPTION:命令的一般描述以及用途 OPTIONS:描述命令所有的參數(shù)或選項 SEE ALSO:列出聯(lián)機(jī)幫助頁中與該命令直接相關(guān)或功能相近的其他命令 BUGS:解釋命令或其輸出中存在的任何已知的問題或缺陷 EXAMPLES:普通的用法示例 AUTHORS:聯(lián)機(jī)幫助頁以及命令的作者

    基本系統(tǒng)維護(hù)命令

    passwd 修改當(dāng)前用戶的口令,sudo passwd

    出于系統(tǒng)安全考慮,Linux系統(tǒng)中的每一個帳號都必須同時具備用戶名和密碼。 可以使用passwd命令,為已有賬戶重新修改用戶口令。 需要說明的是,超級用戶root可以修改所有其他用戶的口令,而普通用戶只能修改自己的用戶口令,如果確要修改超級用戶或其他用戶口令的話,需要具有超級用戶的權(quán)限 passwd命令的一般語法格式為:


    單獨使用passwd命令,意為修改當(dāng)前用戶自己的口令。下面命令實例用于修改用戶自己的口令。

    su
    單獨使用su命令,默認(rèn)為要轉(zhuǎn)換為超級用戶root。
    su命令用于臨時改變用戶身份,具有其他用戶的權(quán)限。普通用戶可以使用su命令臨時具有超級用戶的權(quán)限;超級用戶也可以使用普通用戶身份完成一些操作。當(dāng)需要放棄當(dāng)前用戶身份,可以使用exit命令切換回來。su命令的一般語法格式為:

    選項“-c”表示執(zhí)行一個命令后就結(jié)束;-m表示仍保留環(huán)境變量不變;-表示轉(zhuǎn)換用戶身份時,同時使用該用戶的環(huán)境。

    echo
    echo命令用于在標(biāo)準(zhǔn)輸出——顯示器上顯示一段文字,一般起到提示作用。echo命令的一般語法格式為:

    選項-n表示輸出文字后不換行。提示信息字符串可以加引號,也可以不加。

    date

    date命令用于顯示和設(shè)置系統(tǒng)日期和時間。date命令的一般語法格式為:

    選項-s表示按照datestr日期顯示格式設(shè)置日期;單獨使用date命令,用于顯示系統(tǒng)時鐘中當(dāng)前日期。時間的格式為:“hh:mm:ss”,日期格式為:“mm/dd/yy”。

    clear 清屏 ctrl + l

    df
    df命令用于查看磁盤空間的使用情況。查看磁盤空間是用戶應(yīng)當(dāng)經(jīng)常做的事情,因為誰也不希望看到根或/var分區(qū)在不經(jīng)意間填滿,以便及時清理。df命令的一般格式為:

    其中,參數(shù)Filesystem表示物理文件系統(tǒng)。各選項的含義如表所示。

    從以下命令的執(zhí)行結(jié)果可以看到,這臺計算機(jī)只有一塊硬盤(/dev/sda1),文件格式類型為Ext3,已經(jīng)使用36%的存儲空間。同時,可以發(fā)現(xiàn)計算機(jī)上還安裝了CD-ROM(/dev/hdc)、USB存儲器(/dev/sdb1)。其他分區(qū)均為專用的虛擬文件系統(tǒng)

    df 命令常用參數(shù):
    -a :列出所有文件系統(tǒng)
    -k :列出磁盤的分配情況(KB)
    -h :同-k, 但大小以G、M,K單位顯示
    -l :僅列出本地文件系統(tǒng)
    例:
    #df -h

    du
    列出目錄和文件使用的磁盤塊。出目錄和文件所使用的磁盤塊數(shù),每塊占512個字節(jié)。
    ???????常用參數(shù):
    -a :僅列出空閑的文件數(shù)
    -h :列出磁盤的使用情況(KB)
    -s :列出總的空閑空間(KB)
    例: #du –h /etc???????

    2.2用戶管理

    / etc :etc是Etcetera的縮寫,是“等等”的意思,用于存放所有系統(tǒng)管理所需要的配置文件和子目錄,基本上硬件和軟件配置文件都在此目

    用戶管理

    用戶的屬性
    用戶名
    口令
    用戶ID(UID)
    用戶主目錄(HOME)
    用戶shell

    /etc/passwd文件

    /etc/passwd文件是系統(tǒng)能夠識別的用戶清單。用戶登陸時,系統(tǒng)查詢這個文件,確定用戶的UID并驗證用戶口令
    登陸名
    經(jīng)過加密的口令
    UID
    默認(rèn)的GID
    個人信息
    主目錄
    登陸shell

    /etc/group文件

    包含了UNIX組的名稱和每個組中成員列表,每一行代表一個組,包括四個字段,組名、加密的口令、GID號、成員列表,彼此用逗號隔開。

    group文件實例

    添加用戶

    adduser
    語法:adduser
    實例:
    # adduser newuser
    添加用戶名為newuser的新用戶

    adduser配置文件

    /etc/adduser.conf
    FIRST_UID=1000
    LAST_UID=29999
    USERS_GID=100
    DHOME=/home
    DSHELL=/bin/bash
    SKEL=/etc/skel

    SKEL模板

    /etc/skel目錄是被 /usr/sbin/useradd使用
    把想要新用戶擁有的配置文件從/etc/skel目錄拷貝,常用的文件:
    .bash_profile
    .bashrc
    .bash_logout
    .dircolors
    .inputrc
    .vimrc

    添加新用戶的過程

    系統(tǒng)
    編輯passwd和shadow文件,定義用戶帳號
    設(shè)置一個初始口令
    創(chuàng)建用戶主目錄,用chown和chmod命令改變主目錄 的屬主和屬性
    為用戶所進(jìn)行的步驟
    將默認(rèn)的啟動文件復(fù)制到用戶主目錄中
    設(shè)置用戶的郵件主目錄并建立郵件別名

    2.2用戶管理相關(guān)命令介紹

    設(shè)置初始口令

    使用passwd命令可以修改用戶口令
    root用戶可以修改任何用戶的口令
    語法:passwd [-k] [-l] [u] [-f] [-d] [-S] username
    使用方法:
    passwd username

    修改用戶屬性

    usermod
    語法:usermod [-u uid [-o]] [-g group] [-G gropup,…]
    [-d home [-m]] [-s shell] [-c comment]
    [-l new_name] [-f inactive][-e expire]
    [-p passwd] [-L|-U] name

    舉例用戶oldname改名為newname,注意要同時更改家目錄:
    usermod –d /home/newname –m –l newname oldname

    刪除用戶

    deluser
    語法: deluser
    使用方法:
    deluser --remove-home user1
    刪除用戶user1的同時刪除用戶的工作目錄

    添加用戶組

    addgroup
    語法: addgroup groupname
    使用方法:
    addgroup groupname

    刪除用戶組

    delgroup
    語法: delgroup groupname
    使用方法:
    delgroup groupname1

    總結(jié)與思考

    本節(jié)課主要介紹了linux系統(tǒng)中用戶管理相關(guān)的重要配置文件以及用戶管理相關(guān)的命令。
    思考
    用戶相關(guān)的文件有哪些?
    簡述添加用戶的過程。

    2.3進(jìn)程管理的相關(guān)命令

    進(jìn)程的概念

    程序的一次執(zhí)行就是一個進(jìn)程

    使用命令查看進(jìn)程

    ps 命令

    顯示進(jìn)程 (process) 的動態(tài)
    語法:
    ps [options]

    ps命令基本選項及參數(shù)釋義

    a:顯示現(xiàn)行終端機(jī)下的所有程序,包括其他用戶的程序。
    c:列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,選項或常駐服務(wù)的標(biāo)示。
    e:列出程序時,顯示每個程序所使用的環(huán)境變量。
    f:用ASCII字符顯示樹狀結(jié)構(gòu),表達(dá)程序間的相互關(guān)系。
    g:顯示現(xiàn)行終端機(jī)下的所有程序,包括群組領(lǐng)導(dǎo)者的程序。
    h:不顯示標(biāo)題列。
    u:以用戶為主的格式來顯示程序狀況。
    x:顯示所有程序,不以終端機(jī)來區(qū)分。
    r:只列出現(xiàn)行終端機(jī)正在執(zhí)行中的程序。
    v:采用虛擬內(nèi)存的格式顯示程序狀況
    -a:顯示所有終端機(jī)下執(zhí)行的程序,除了階段作業(yè)領(lǐng)導(dǎo)者之外。
    -c:顯示CLS和PRI欄位。
    -d:顯示所有程序,但不包括階段作業(yè)領(lǐng)導(dǎo)者的程序。
    -e:顯示所有程序。
    -f:顯示UID,PPIP,C與STIME欄位。
    -H:顯示樹狀結(jié)構(gòu),表示程序間的相互關(guān)系。
    -u<用戶識別碼>:列出屬于該用戶的程序的狀況,也可使用用戶名稱來指定。
    -j:采用工作控制的格式顯示程序狀況
    -l或l:采用詳細(xì)的格式來顯示程序狀況。

    常見的用法:
    ps -elf 普通使用的標(biāo)準(zhǔn)
    ps -aux BSD 使用的標(biāo)準(zhǔn)

    進(jìn)程的狀態(tài)標(biāo)志

    D: 不可中斷的靜止
    R: 正在執(zhí)行中
    S: 阻塞狀態(tài)
    T: 暫停執(zhí)行
    Z: 不存在但暫時無法消除
    <: 高優(yōu)先級的進(jìn)程
    N: 低優(yōu)先級的進(jìn)程
    L: 有內(nèi)存分頁分配并鎖在內(nèi)存中

    top命令

    監(jiān)視進(jìn)程
    通常會全屏顯示,而且會隨著進(jìn)程狀態(tài)的變化不斷更新
    整個系統(tǒng)的信息也會顯示,為查找問題提供了便利
    可以顯示系統(tǒng)總共有多少CPU和內(nèi)存資源以及負(fù)載平衡等信息。
    top 實時檢測進(jìn)程 q退出

    pstree命令

    將所有行程以樹狀圖顯示, 樹狀圖將會以 pid (如果有指定) 或是以init這個基本進(jìn)程為根,如果有指定使用者id, 則樹狀圖會只顯示該使用者所擁有的進(jìn)程。
    參數(shù):
    -a 顯示該進(jìn)程的完整指令及參數(shù), 如果是被記憶體置換出去的進(jìn)程則會加上括號
    -c 如果有重覆的進(jìn)程名, 則分開列出

    cd /proc/ 常用查看進(jìn)程信息命令

    終止進(jìn)程

    使用kill命令終止進(jìn)程
    kill [-signal] PID
    signal是信號,PID是進(jìn)程號
    kill 命令向指定的進(jìn)程發(fā)出一個信號signal,在默認(rèn)情況下,kill 命令向指定進(jìn)程發(fā)出信號15,正常情下,將殺死那些不捕捉或不忽略這個信號的進(jìn)程
    kill -l 查看信號含義

    2.4文件系統(tǒng)的類型和結(jié)構(gòu)

    文件系統(tǒng)的類型

    Linux文件系統(tǒng)

    在任何一個操作系統(tǒng)中,文件系統(tǒng)無疑是其最重要的組件,用于組織和管理計算機(jī)存儲設(shè)備上的大量文件,并提供用戶交互接口。Linux同樣具備完善的文件系統(tǒng)。用戶既可以使用界面友好的Nautilus圖形文件管理器,也可以使用功能強(qiáng)大的shell文件系統(tǒng)管理工具。

    文件系統(tǒng)類型

    linux是一種兼容性很高的操作系統(tǒng),支持的文件系統(tǒng)格式很多,大體可分以下幾類:
    磁盤文件系統(tǒng):指本地主機(jī)中實際可以訪問到的文件系統(tǒng),包括硬盤、CD-ROM、DVD、USB存儲器、磁盤陣列等。常見文件系統(tǒng)格式有:autofs、coda、Ext(Extended File sytem,擴(kuò)展文件系統(tǒng))、Ext3、Ext4、VFAT、ISO9660(通常是CD-ROM)、UFS(Unix File System,Unix文件系統(tǒng))、FAT、FAT16、FAT32、NTFS等;
    網(wǎng)絡(luò)文件系統(tǒng):是可以遠(yuǎn)程訪問的文件系統(tǒng),這種文件系統(tǒng)在服務(wù)器端仍是本地的磁盤文件系統(tǒng),客戶機(jī)通過網(wǎng)絡(luò)遠(yuǎn)程訪問數(shù)據(jù)。常見文件系統(tǒng)格式有:NFS、Samba等;
    專有/虛擬文件系統(tǒng):不駐留在磁盤上的文件系統(tǒng)。常見格式有:TMPFS(臨時文件系統(tǒng))、PROCFS(Process File System,進(jìn)程文件系統(tǒng))和LOOPBACKFS(Loopback File System,回送文件系統(tǒng))。

    目前Ext4是Linux系統(tǒng)廣泛使用的一種文件格式。在Ext3基礎(chǔ)上,對有效性保護(hù)、數(shù)據(jù)完整性、數(shù)據(jù)訪問速度、向下兼容性等方面做了改進(jìn)。
    最大特點是日志文件系統(tǒng):可將整個磁盤的寫入動作完整地記錄在磁盤的某個區(qū)域上,以便在必要時回溯追蹤。

    查看文件系統(tǒng)的命令

    mount\df\file\parted


    SCSI與IDE設(shè)備命名

    sata硬盤的設(shè)備名稱是“/dev/sda”
    /dev/sda1 含義?
    /dev/sdb3 含義?
    IDE硬盤的設(shè)備名稱是“/dev/hda”
    /dev/hdc2 含義?
    如果很在意系統(tǒng)的高性能和穩(wěn)定性,應(yīng)該使用SCSI硬盤
    cat /proc/partitions

    Linux分區(qū)的命名方式

    字母和數(shù)字相結(jié)合
    前兩個字母表示設(shè)備類型
    “hd”代表IDE硬盤
    “sd”表示SCSI或SATA硬盤
    第三個字母說明具體的設(shè)備
    “/dev/hda”表示第一個IDE硬盤
    “/dev/hdb”表示第二個IDE硬盤

    交換分區(qū)

    將內(nèi)存中的內(nèi)容寫入硬盤或從硬盤中讀出,稱為內(nèi)存交換(swapping)
    交換分區(qū)最小必須等于計算機(jī)的內(nèi)存
    可以創(chuàng)建多于一個的交換分區(qū)
    盡量把交換分區(qū)放在硬盤驅(qū)動器的起始位置

    Linux文件系統(tǒng)的結(jié)構(gòu)

    文件系統(tǒng)邏輯結(jié)構(gòu)

    某所大學(xué)的學(xué)生可能在一兩萬人左右,通常將學(xué)生分配在以學(xué)院-系-班為單位的分層組織機(jī)構(gòu)中。若需要查找一名學(xué)生時,最笨的辦法是依次問詢大學(xué)中的每一個學(xué)生,直到找到為止。如果按照從學(xué)院、到系、再到班的層次查詢下去,必然可以找到該學(xué)生,且查詢效率高。這種樹形的分層結(jié)構(gòu)就提供了一種自頂向下的查詢方法。
    如果把學(xué)生看作文件,院-系-班的組織結(jié)構(gòu)看作是Linux文件目錄結(jié)構(gòu),那么就同樣可以有效地管理數(shù)量龐大的文件。
    一直使用微軟Windows操作系統(tǒng)的用戶似乎已經(jīng)習(xí)慣了將硬盤上的幾個分區(qū),并用A:、B:、C:、D:等符號標(biāo)識。存取文件時一定要清楚存放在哪個磁盤的哪個目錄下。
    Linux的文件組織模式猶如一顆倒置的樹,這與Windows文件系統(tǒng)有很大差別。所有存儲設(shè)備作為這顆樹的一個子目錄。存取文件時只需確定目錄就可以了,無需考慮物理存儲位置。

    分區(qū)與目錄的關(guān)系

    在Windows下,目錄結(jié)構(gòu)屬于分區(qū);在Linux下,分區(qū)屬于目錄結(jié)構(gòu)。
    如何知道文件存儲的具體硬件位置呢?
    在Linux中,將所有硬件都視為文件來處理,包括硬盤分區(qū)、CD-ROM、軟驅(qū)以及其他USB移動設(shè)備等。為了能夠按照統(tǒng)一的方式和方法訪問文件資源,Linux中提供了對每種硬件設(shè)備相應(yīng)的設(shè)備文件。一旦Linux系統(tǒng)可以訪問到硬件,就將其上的文件系統(tǒng)掛載到目錄樹中的一個子目錄中。
    例如,用戶插入USB移動存儲器,Ubuntu Linux自動識別后,將其掛載到“/media/disk”目錄下。而不象Windows系統(tǒng)將USB存儲器作為新驅(qū)動器,表示為“F:”盤。

    Linux文件系統(tǒng)就是一個樹形的分層組織結(jié)構(gòu)。將根(/)作為整個文件系統(tǒng)的惟一起點,其他所有目錄都從該點出發(fā)。將Linux的全部文件按照一定的用途歸類,合理地掛載到這顆“大樹”的“樹枝”或“樹葉”上,如圖所示。而這些全不用考慮文件的實際存儲位置,無論是存在硬盤上,還是在CD-ROM或USB存儲器中,甚至是網(wǎng)絡(luò)終端。

    基本目錄

    由于Linux是完全開源的軟件,各Linux發(fā)行機(jī)構(gòu)都可以按照自己的需求對文件系統(tǒng)進(jìn)行裁剪,所以如此眾多的Linux發(fā)行版本的目錄結(jié)構(gòu)也不盡相同。為了規(guī)范文件目錄命名和存放標(biāo)準(zhǔn),頒發(fā)了文件層次結(jié)構(gòu)標(biāo)準(zhǔn)(FHS,File Hierarchy Standard),2004年發(fā)行版本FHS 2.3。Ubuntu Linux系統(tǒng)同樣也遵循這個標(biāo)準(zhǔn)


    絕對路徑和相對路徑
    在認(rèn)識到Linux文件系統(tǒng)是樹形分層的組織結(jié)構(gòu),且只有一個根節(jié)點之后。在Linux文件系統(tǒng)中查找一個文件,只要確定文件名和路徑,就可以惟一確定這個文件。例如
    “/usr/games/gnect”
    絕對路徑:指文件在文件系統(tǒng)中的準(zhǔn)確位置。通常在本地主機(jī)上,以根目錄為起點。例如“/usr/games/gnect”就是絕對路徑。
    相對路徑:指相對于用戶當(dāng)前位置的一個文件或目錄的位置。例如,用戶處在usr目錄中時,只需要“games/gnect”就可確定這個文件。

    Linux文件系統(tǒng)與Windows文件系統(tǒng)比較

    2.5文件系統(tǒng)相關(guān)命令

    file、ln命令

    file命令

    在Linux文件系統(tǒng)中,文件擴(kuò)展名不總是被使用或被一致地使用。如果一個文件沒有擴(kuò)展名,或者文件與其擴(kuò)展名不符時怎么辦呢?file命令功能用于判定一個文件的類型。file命令一般語法格式為:
    file [ filename ]
    其中filename是文件名。命令的輸出將顯示該文件是二進(jìn)制文件、文本文件、目錄文件、設(shè)備文件,還是Linux中其他類型的文件。

    創(chuàng)建鏈接文件

    鏈接文件:在文件之間創(chuàng)建鏈接。這種操作實際上是給系統(tǒng)中已有的某個文件指定另外一個可用于訪問它的名稱。
    Linux中有兩種類型的鏈接:
    硬鏈接是利用Linux中為每個文件分配的物理編號——inode建立鏈接。因此,硬鏈接不能跨越文件系統(tǒng)。
    軟鏈接(符號鏈接)是利用文件的路徑名建立鏈接。通常建立軟鏈接使用絕對路徑而不是相對路徑,以最大限度增加可移植性。
    需要注意的是,如果是修改硬鏈接的目標(biāo)文件名,鏈接依然有效;如果修改軟鏈接的目標(biāo)文件名,則鏈接將斷開;對一個已存在的鏈接文件執(zhí)行移動或刪除操作,有可能導(dǎo)致鏈接的斷開。假如刪除目標(biāo)文件后,重新創(chuàng)建一個同名文件,軟鏈接將恢復(fù),硬鏈接不再有效,因為文件的inode已經(jīng)改變。

    ln命令

    命令可以用于創(chuàng)建文件的鏈接文件。ln命令一般語法格式為:
    ln [ -s ] target link_name
    其中,選項“-s”表示為創(chuàng)建軟鏈接。在缺省情況下,創(chuàng)建硬鏈接。參數(shù)target為目標(biāo)文件,link_name為鏈接文件名。如果鏈接文件名已經(jīng)存在但不是目錄,將不做鏈接。目標(biāo)文件可以是任何一個文件名,也可以是一個目錄。

    以上命令為/proc/cpuinfo文件創(chuàng)建了一個軟鏈接文件。使用“l(fā)s –l”命令可以查看到新創(chuàng)建的鏈接文件所指向的目標(biāo)文件名。

    文件的歸檔和壓縮

    壓縮文件

    用戶在進(jìn)行數(shù)據(jù)備份時,需要把若干文件整合為一個文件以便保存。盡管整合為一個文件進(jìn)行管理,但文件大小仍然沒變。若需要網(wǎng)絡(luò)傳輸文件時,就希望將其壓縮成較小的文件,以節(jié)省在網(wǎng)絡(luò)傳輸?shù)臅r間。因此本節(jié)介紹文件的歸檔與壓縮。

    文件壓縮和歸檔

    歸檔文件是將一組文件或目錄保存在一個文件中。
    壓縮文件也是將一組文件或目錄保存一個文件中,并按照某種存儲格式保存在磁盤上,所占磁盤空間比其中所有文件總和要少。
    歸檔文件仍是沒有經(jīng)過壓縮的,它所使用的磁盤空間仍等于其所有文件的總和。因而,用戶可以將歸檔文件再進(jìn)行壓縮,使其容量更小。
    gzip是Linux中最流行的壓縮工具,具有很好的移植性,可在很多不同架構(gòu)的系統(tǒng)中使用。bzip2在性能上優(yōu)于gzip,提供了最大限度的壓縮比率。如果用戶需要經(jīng)常在Linux和微軟Windows間交換文件,建議使用zip。

    目前,歸檔工具使用最廣泛的tar命令,可以把很多文件(甚至磁帶)合并到一個稱為tarfile的文件中,通常文件擴(kuò)展名為.tar。然后,再使用zip、gzip或bzip2等壓縮工具進(jìn)行壓縮。

    壓縮文件

    shell歸檔和壓縮工具
    使用shell歸檔和壓縮工具可以更直接地完成文檔的打包任務(wù)。由于該類shell命令是成對使用的,因此下面按對介紹相關(guān)命令。

    gzip與gunzip命令

    與zip明顯區(qū)別在于只能壓縮一個文件,無法將多個文件壓縮為一個文件。gzip命令符號模式的一般語法格式為:
    其中,filename表示要壓縮的文件名,gzip會自動在這個文件名后添加擴(kuò)展名為.gz,作為壓縮文件的文件名。


    gunzip命令符號模式的一般語法格式為:

    其中,選項“-f”用于解壓文件時,對覆蓋同名文件不做提示。
    在執(zhí)行g(shù)zip命令后,它將刪除舊的未壓縮的文件并只保留已壓縮的版本。以下命令以最大的壓縮率對文件file_1進(jìn)行壓縮,生成file_1.gz文件。使用“-l”選項可以查看壓縮的相關(guān)信息。最后使用gunzip命令對文件進(jìn)行了解壓。與壓縮時相反,file_1.gz文件會被刪除,繼之生成file_1。

    tar命令

    tar命令主要用于將若干文件或目錄合并為一個文件,以便備份和壓縮。當(dāng)然,之后出現(xiàn)tar程序的改進(jìn)版本,可以實現(xiàn)在合并歸檔的同時進(jìn)行壓縮。tar命令符號模式的一般語法格式為:

    第一,將myExamples/目錄下的所有文件全部歸檔,打包到一個文件中myExamples.tar;
    第二,將myExamples/目錄下的所有文件全部歸檔,并使用bzip2壓縮成一個文件myExamples.tar.bz;
    第三,將myExamples/目錄下的所有文件全部歸檔,并使用gzip壓縮成一個文件myExamples.tar.gz。

    如果想查看一下歸檔文件中的詳細(xì)內(nèi)容,使用類似以下命令:

    使用以下命令完成tar文件的釋放。其中,“tar -xjf”和“tar –xzf”等效與先解壓縮后釋放tar文件。

    Linux 網(wǎng)絡(luò)配置管理

    網(wǎng)絡(luò)配置基礎(chǔ)

    用戶既可以通過命令行的方式,也可以通過友好的圖形界面,輕松完成網(wǎng)絡(luò)配置。
    實現(xiàn)Linux網(wǎng)絡(luò)配置的惟一目標(biāo)就是修改系統(tǒng)中眾多的網(wǎng)絡(luò)配置文件,如/etc/interfaces、/etc/hosts,/etc/resolv.conf 等等。

    通常,用戶可能使用普通以太網(wǎng)卡、無線網(wǎng)卡、調(diào)制解調(diào)器等不同類型的設(shè)備接入網(wǎng)絡(luò)。不同類型的網(wǎng)絡(luò)設(shè)備在主機(jī)中被映射為相應(yīng)的網(wǎng)絡(luò)接口,比如以太網(wǎng)卡映射為eth,無線網(wǎng)卡映射為wlan。有時,用戶還可能同時使用多個網(wǎng)絡(luò)設(shè)備,就會出現(xiàn)eth0、eth1…,或wlan0、wlan1…的情況。
    那么,如何標(biāo)識每個連接到Internet的網(wǎng)絡(luò)接口呢?
    解決辦法是:為每個網(wǎng)絡(luò)接口分配一個全世界范圍內(nèi)惟一的32bit的標(biāo)識符。這個標(biāo)識符就是IP(Internet Protocol)地址。

    配置IP地址

    IP地址

    IP地址包括三部分:Internet網(wǎng)絡(luò)號(Net-ID)、子網(wǎng)號(Subnet-ID)和主機(jī)號(Host-ID)。

    因而可以這樣解釋:一個IP地址惟一標(biāo)識了,處在某個互聯(lián)網(wǎng)中的,某個子網(wǎng)的,某個網(wǎng)絡(luò)接口。

    根據(jù)Internet網(wǎng)絡(luò)號的字段長度(1,2,3字節(jié)長),IP地址區(qū)分為A類、B類、C類。三類IP地址的掩碼如下所示。
    A類地址的默認(rèn)子網(wǎng)掩碼是255.0.0.0,或0xFF000000;
    B類地址的默認(rèn)子網(wǎng)掩碼是255.255.0.0,或0xFFFF0000;
    C類地址的默認(rèn)子網(wǎng)掩碼是255.255.255.0,或0xFFFFFF00;
    IP網(wǎng)絡(luò)中通常用最小的IP地址標(biāo)識網(wǎng)絡(luò)本身,將最大的IP地址作為該網(wǎng)絡(luò)的廣播地址,其余所有IP地址都分配給網(wǎng)絡(luò)中的主機(jī)。然而,局域網(wǎng)中的主機(jī)并不能直接訪問Internet,需要通過一個作為代理的網(wǎng)關(guān)或網(wǎng)絡(luò)地址轉(zhuǎn)換服務(wù)(NAT)才能訪問Internet。通常將IP地址的第一個或最后一個留給該網(wǎng)絡(luò)的Internet網(wǎng)關(guān)。

    配置IP地址

    接入網(wǎng)絡(luò)的計算機(jī)主機(jī)依靠IP地址,惟一地標(biāo)識其在網(wǎng)絡(luò)中的身份,因此為主機(jī)配置IP地址是接入網(wǎng)絡(luò)的關(guān)鍵。配置IP地址的方法有兩種:
    配置靜態(tài)IP:在主機(jī)進(jìn)入網(wǎng)絡(luò)之前,事先為主機(jī)設(shè)置固定 的IP地址;
    配置動態(tài)IP:選擇DHCP(動態(tài)主機(jī)配置協(xié)議(Dynamic host configuration protocol))網(wǎng)絡(luò)服務(wù),在主機(jī)進(jìn)入網(wǎng)絡(luò)之后,動態(tài)隨機(jī)獲取IP地址。

    網(wǎng)絡(luò)相關(guān)命令

    ifconfig命令

    ifconfig是GNU/Linux中配置網(wǎng)卡的基本命令,包含在net-tools軟件包中。它可用于顯示或設(shè)置網(wǎng)卡的配置,如IP地址、子網(wǎng)掩碼、最大分組傳輸數(shù)、IO端口等,還可以啟動或禁用網(wǎng)卡。ifconfig命令有以下兩種格式:

    ifconfig的第一種格式用于查看當(dāng)前系統(tǒng)的網(wǎng)絡(luò)配置情況;第二種格式用于配置網(wǎng)卡,包括添加、刪除網(wǎng)卡,以及綁定多個IP地址等。

    從下面的運行結(jié)果可以看出,主機(jī)有兩個接口eth0、lo。lo代表主機(jī)本身,也稱回送接口(Loopback),其IP地址約定為127.0.0.1。

    如果主機(jī)安裝了第二塊、第三塊網(wǎng)卡,則有eth1,eth2標(biāo)識。常見的接口類型還有以下幾種(N表示接口號):
    pppN表示調(diào)制解調(diào)設(shè)備
    wlanN表示無線網(wǎng)卡
    trN表示令牌環(huán)網(wǎng)卡
    如果只是關(guān)心某個網(wǎng)絡(luò)設(shè)備,可以在ifconfig后面加上接口名稱,則只顯示該設(shè)備的相關(guān)信息,例如:

    假設(shè)主機(jī)現(xiàn)有的IP地址為192.168.182.129,需要為其重新分配IP地址192.168.182.128,即。使用ipconfig命令設(shè)置主機(jī)的第一塊網(wǎng)卡(eth0)的IP地址。

    配置動態(tài)IP地址

    在大型網(wǎng)絡(luò)中,由于存在許多的移動計算機(jī)系統(tǒng),隨時都可能進(jìn)入網(wǎng)絡(luò),在每次更換網(wǎng)絡(luò)時,就不得不重新配置網(wǎng)絡(luò)信息。如果計算機(jī)在網(wǎng)絡(luò)里能夠自動獲取IP地址、子網(wǎng)掩碼、路由表、DNS服務(wù)器地址等網(wǎng)絡(luò)信息,具有動態(tài)配置IP的能力,就可以大大簡化客戶端的網(wǎng)絡(luò)配置難度。動態(tài)主機(jī)配置協(xié)議(DHCP,Dynamic Host Configuration Protocol)可以實現(xiàn)動態(tài)分配IP資源。
    只要在局域網(wǎng)中架設(shè)有DHCP服務(wù)器,在Ubuntu Linux中為主機(jī)配置DHCP客戶端是非常容易的。需要說明的是,通常普通以太網(wǎng)卡和無線網(wǎng)卡可以配置動態(tài)IP,而調(diào)制解調(diào)器等網(wǎng)絡(luò)設(shè)備不能配置動態(tài)IP。

    動態(tài)IP的獲取過程

    可比作一個“租賃”過程。DHCP服務(wù)器好比是IP地址的出租方,用戶主機(jī)(即DHCP客戶端)好比是IP地址的臨時租用者。
    如果將用戶主機(jī)設(shè)置為DHCP客戶端之后,手動啟動網(wǎng)絡(luò)服務(wù),就可以從執(zhí)行結(jié)果中看出獲取動態(tài)IP的過程。

    執(zhí)行過程中包括以下四個階段。
    客戶端尋找DHCP服務(wù)器(DHCPDISCOVER):客戶端廣播申請動態(tài)IP的請求;
    服務(wù)器提供可分配的IP地址(DHCPOFFER):所有接收到請求的DHCP服務(wù)器都將向客戶端提供一個IP地址;
    客戶端接受IP地址租借(DHCPREQUEST):客戶端從多個IP選擇中挑選一個,通知DHCP服務(wù)器,并標(biāo)識出所選中的服務(wù)器;
    服務(wù)器確認(rèn)租借IP(DHCPACK):被選中的DHCP服務(wù)器最后發(fā)出一個確認(rèn)信息,包含IP地址、子網(wǎng)掩碼、默認(rèn)網(wǎng)關(guān)、DNS服務(wù)器和租借期(客戶端使用這個IP的這段時間,稱為租借期)。
    最終客戶端臨時“租借”的IP地址為192.168.182.129。

    IP地址存放在哪里——interfaces配置文件

    無論是配置靜態(tài)IP還是動態(tài)IP,計算機(jī)系統(tǒng)將IP信息保存放在什么地方?答案是配置文件“/etc/network/interfaces”。在Ubuntu Linux啟動時就能獲得IP地址的配置信息。若是配置靜態(tài)IP,就從配置文件中讀取IP地址參數(shù),直接配置網(wǎng)絡(luò)接口設(shè)備;若是配置動態(tài)IP,就通知主機(jī)通過DHCP協(xié)議獲取網(wǎng)絡(luò)配置。

    以下分別為配置靜態(tài)IP和動態(tài)IP時,配置文件“/etc/network/interfaces”的實例。

    DNS客戶端配置文件—resolv.conf

    Ubuntu Linux將DNS服務(wù)器地址保存在配置文件/etc/resolv.conf中。
    依然延續(xù)上面的例子,添加DNS服務(wù)器IP地址后,查看配置文件/etc/hosts,如下所示。

    ping命令

    ping(Packet Internet Groper)命令可能是最有名氣的網(wǎng)絡(luò)連接檢測工具。它使用了Internet控制報文協(xié)議(ICMP)回送請求與回送應(yīng)答報文,測試兩個主機(jī)之間的連通性。該命令的一般格式如下所示。
    ping命令測試的遠(yuǎn)程主機(jī),既可用域名,也可用IP地址標(biāo)識。

    可以使用該命令來判斷主機(jī)與遠(yuǎn)程主機(jī)是否可達(dá),或之間的網(wǎng)絡(luò)是否擁塞。min/avg/max/mdev是ping命令的完成測試后的統(tǒng)計結(jié)果,分別表示最小響應(yīng)時間/平均響應(yīng)時間/最大響應(yīng)時間/響應(yīng)時間方差。這些指標(biāo)用于反應(yīng)網(wǎng)絡(luò)的聯(lián)通程度。

    可以使用該命令來判斷主機(jī)與遠(yuǎn)程主機(jī)是否可達(dá),或之間的網(wǎng)絡(luò)是否擁塞。min/avg/max/mdev是ping命令的完成測試后的統(tǒng)計結(jié)果,分別表示最小響應(yīng)時間/平均響應(yīng)時間/最大響應(yīng)時間/響應(yīng)時間方差。這些指標(biāo)用于反應(yīng)網(wǎng)絡(luò)的聯(lián)通程度。

    ping命令執(zhí)行時,會持續(xù)不斷地向目的主機(jī)發(fā)送ICMP包。在得到對方的應(yīng)答后,顯示每次連接的統(tǒng)計數(shù)據(jù),直到用Ctrl+C組合鍵中斷執(zhí)行。但是,目前很多主機(jī)通過設(shè)置防火墻,對ping命令不予應(yīng)答。在這種情況下,ping命令由于不停地發(fā)送測試數(shù)據(jù)包,又得不到返回任何結(jié)果,而致使ping命令僵死。不過,使用-c參數(shù)設(shè)置發(fā)送測試數(shù)據(jù)包的次數(shù),以便在有限時間內(nèi)完成測試。

    管理DNS服務(wù)器地址

    DNS域名解析可以在更大范圍的計算機(jī)網(wǎng)絡(luò)、Internet,提供域名到IP地址的轉(zhuǎn)換。網(wǎng)絡(luò)中的每臺計算機(jī)都是一個DNS客戶端,向DNS服務(wù)器提交域名解析的請求;DNS服務(wù)器完成域名到IP地址的映射。
    因此DNS客戶端至少有一個DNS服務(wù)器地址,作為命名解析的開端。

    nslookup命令

    使用nslookup命令可以查看當(dāng)前系統(tǒng)所使用的DNS服務(wù)器的IP地址。

    服務(wù)器192.168.182.2完成了域名解析。Server表示提供服務(wù)的DNS服務(wù)器,Address中的#53表示TCP/UDP命名服務(wù)的端口號。若所有的DNS服務(wù)器都訪問失敗,則出現(xiàn)如下的執(zhí)行結(jié)果。

    D3 Linux shell 腳本編程

    3.1 shell 腳本 變量

    shell腳本的基礎(chǔ)知識

    shell腳本的本質(zhì)

    編譯型語言
    解釋型語言
    shell腳本語言是解釋型語言 #!/bin/bash (指定shell 類型 )
    shell腳本的本質(zhì): shell命令的有序集合

    編程過程

    基本過程分為三步:
    step1. 建立 shell 文件
    包含任意多行操作系統(tǒng)命令或shell命令的文本文件;
    step2. 賦予shell文件執(zhí)行權(quán)限
    用chmod命令修改權(quán)限;
    r--read 讀權(quán)限 4 w--write 寫權(quán)限 2 x--execute 執(zhí)行權(quán)限 1
    step3. 執(zhí)行shell文件
    直接在命令行上調(diào)用shell程序.

    編程過程演示

    shell變量

    shell允許用戶建立變量存儲數(shù)據(jù),但不支持?jǐn)?shù)據(jù)類型(整型、字符、浮點型),將任何賦給變量的值都解釋為一串字符
    Variable=value

    count=1
    echo $count
    DATE=date
    echo $DATE

    執(zhí)行 ./filename.sh or bash filename.sh

    Bourne Shell有如下四種變量:
    用戶自定義變量
    位置變量即命令行參數(shù)
    預(yù)定義變量
    環(huán)境變量

    用戶自定義變量

    在shell編程中通常使用全大寫變量,方便識別
    $ COUNT=1
    變量的調(diào)用:在變量前加$
    $ echo $HOME
    Linux Shell/bash從右向左賦值,賦值時 ‘=’ 前后不能加空格
    $Y=y
    $ X=$Y
    $ echo $X
    y
    使用unset命令刪除變量的賦值
    $ Z=hello
    $ echo $Z
    hello
    $ unset Z
    $ echo $Z

    命令置換`` 符號不要搞錯,命令置換使用的命令必須有輸出

    位置變量

    $0 與鍵入的命令行一樣,包含腳本文件名
    $1,$2,……$9 分別包含第一個到第九個命令行參數(shù)
    $# 包含命令行參數(shù)的個數(shù)
    $@ 包含所有命令行參數(shù):“$1,$2,……$9”
    $? 包含前一個命令的退出狀態(tài)
    $* 包含所有命令行參數(shù):“$1,$2,……$9”
    $$ 包含正在執(zhí)行進(jìn)程的ID號

    傳10 個及以上參數(shù),取參 10{10}10{11}${12}…
    特殊符號記得加’'轉(zhuǎn)義

    環(huán)境變量

    HOME: /etc/passwd文件中列出的用戶主目錄
    IFS:Internal Field Separator, 默認(rèn)為空格,tab及換行符
    PATH :shell搜索路徑
    PS1,PS2:默認(rèn)提示符($)及換行提示符(>)
    TERM:終端類型,常用的有vt100,ansi,vt200,xterm等

    shell 腳本-功能語句

    shell 程序由零或多條shell語句構(gòu)成。 shell語句包括三類:說明性語句、功能性語句和結(jié)構(gòu)性語句。
    說明性語句:
    以#號開始到該行結(jié)束,不被解釋執(zhí)行
    功能性語句:
    任意的shell命令、用戶程序或其它shell程序。
    結(jié)構(gòu)性語句:
    條件測試語句、多路分支語句、循環(huán)語句、循環(huán)控制語句等。

    說明性語句

    說明性語句(注釋行)

    注釋行可以出現(xiàn)在程序中的任何位置,既可以單獨占用一行, 也可以接在執(zhí)行語句的后面. 以#號開始到所在行的行尾部分,都不被解釋執(zhí)行. 例如:

    常用功能性語句

    常用功能性語句(命令)

    read從標(biāo)準(zhǔn)輸入讀入一行, 并賦值給后面的變量,其語法為:
    read var
    把讀入的數(shù)據(jù)全部賦給var
    read var1 var2 var3
    把讀入行中的第一個單詞(word)賦給var1, 第二個單詞賦給var2, ……把其余所有的詞賦給最后一個變量.
    如果執(zhí)行read語句時標(biāo)準(zhǔn)輸入無數(shù)據(jù), 則程序在此停留等侯, 直到數(shù)據(jù)的到來或被終止運行。
    read -p “輸入提示”

    echo -n 代表不會在最后自動換行
    echo -e 當(dāng)指定-e選項時,則將解釋反斜杠轉(zhuǎn)義字符

    應(yīng)用實例
    # example1 for read echo "Input your name: \c" read username echo "Your name is $username“#example2 for read echo "Input date with format yyyy mm dd: \c" read year month day echo "Today is $year/$month/$day, right?" echo "Press enter to confirm and continue\c" read answer echo "I know the date, bye!"

    算數(shù)運算 expr 命令


    expr后邊必須加空格 運算符(+-*/?) 前后必須加空格

    test語句

    test語句可測試三種對象:
    字符串 整數(shù) 文件屬性
    每種測試對象都有若干測試操作符
    例如:
    test “$answer” = “yes”
    變量answer的值是否為字符串yes
    test $num –eq 18
    變量num的值是否為整數(shù)18
    test -d tmp
    測試tmp是否為一個目錄名

    字符串測試

    s1 = s2 測試兩個字符串的內(nèi)容是否完全一樣,是返回0
    s1 != s2 測試兩個字符串的內(nèi)容是否有差異,是返回0
    -z s1 測試s1 字符串的長度是否為0,是返回0
    -n s1 測試s1 字符串的長度是否不為0,是返回0

    整數(shù)測試

    舉例子
    1 #!/bin/bash
    2 test 3 -eq 3
    3 echo KaTeX parse error: Expected 'EOF', got '#' at position 4: ? #?`? `包含前一個命令的退出狀態(tài)
    a -eq b 測試a 與b 是否相等
    a -ne b 測試a 與b 是否不相等
    a -gt b 測試a 是否大于b
    a -ge b 測試a 是否大于等于b
    a -lt b 測試a 是否小于b
    a -le b 測試a 是否小于等于b

    文件測試

    舉例子:
    #!/bin/bash
    test -f read.sh
    echo $?
    -d name 測試name 是否為一個目錄
    -e name 測試一個文件是否存在
    -f name 測試name 是否為普通文件
    -L name 測試name 是否為符號鏈接
    -r name 測試name 文件是否存在且為可讀
    -w name 測試name 文件是否存在且為可寫
    -x name 測試name 文件是否存在且為可執(zhí)行
    -s name 測試name 文件是否存在且其長度不為0
    f1-nt f2 測試文件f1 是否比文件f2 更新
    f1-ot f2 測試文件f1 是否比文件f2 更舊
    測試語句記得把test 寫前邊去

    3.2 shell 腳本-結(jié)構(gòu)性語句

    結(jié)構(gòu)性語句主要根據(jù)程序的運行狀態(tài)、輸入數(shù)據(jù)、變量的取值、控制信號以及運行時間等因素來控制程序的運行流程。
    主要包括:條件測試語句(兩路分支)、多路分支語句、循環(huán)語句、循環(huán)控制語句和后臺執(zhí)行語句等。
    if 條件 then 處理邏輯 fi

    條件語句

    條件語句1

    if…then…fi
    語法結(jié)構(gòu):
    if 表達(dá)式
    then 命令表
    fi
    如果表達(dá)式為真, 則執(zhí)行命令表中的命令; 否則退出if語句, 即執(zhí)行fi后面的語句。
    if和fi是條件語句的語句括號, 必須成對使用;
    命令表中的命令可以是一條, 也可以是若干條。

    實例

    shell程序prog2.sh(測試命令行參數(shù)是否為已存在的文件或目錄)。用法為:
    ./prog2.sh file
    代碼如下:

    #The statement of if…then…fi (注釋語句) if [ -f $1 ] (測試參數(shù)是否為文件) thenecho "File $1 exists" (引用變量值) fi if [ -d $HOME/$1 ] (測試參數(shù)是否為目錄) then echo "File $1 is a directory" (引用變量值) fi

    執(zhí)行prog2程序:
    $ ./prog2.sh prog1.sh
    File prog1.sh exists
    $0為prog2.sh; $1為prog1.sh, 是一個已存在的文件.
    $ ./prog2.sh backup
    File backup is a directory
    $0為prog2.sh; $1為backup,是一個已存在的目錄.

    如果不帶參數(shù), 或大于一個參數(shù)運行prog2, 例如:
    $ ./prog2.sh (或 $ ./prog2.sh file1 file2)
    會出現(xiàn)什么結(jié)果?

    條件語句2

    if…then…else…fi
    語法結(jié)構(gòu)為:
    if 表達(dá)式
    then 命令表1
    else 命令表2
    fi
    如果表達(dá)式為真, 則執(zhí)行命令表1中的命令, 再退出if語句; 否則執(zhí)行命令表2中的語句, 再退出if語句.

    注意: 無論表達(dá)式是否為真, 都有語句要執(zhí)行.

    實例

    test命令的使用

    test命令測試的條件成立時, 命令返回值為真(0),否則返回值為假(非0).

    方式一:test $name -eq $1echo $?方式二:if test -f $filenamethen ……fi方式三:if [ -f $filename ]then ……fi用方括號替代test語句,注意方括號前后至少有一個空格

    實例

    例子: shell程序prog3.sh, 用法為:
    ./prog3.sh file
    內(nèi)容如下:

    #The statement of if…then…else…fi if [ -d $1 ] thenecho "$1 is a directory"exit #(退出當(dāng)前的shell程序) else if [ -f $1 ]thenecho "$1 is a common file"elseecho "unknown" fi fi

    運行prog3.sh程序:

    $ ./prog3.sh backup
    backup is a directory

    $ ./prog3.sh prog1
    prog1 is a common file

    $ ./prog3.sh abc
    unknown

    prog3.sh是對prog2.sh的優(yōu)化, 邏輯結(jié)構(gòu)更加清晰合理!

    shell 布爾運算符

    多路分支語句

    case…esac

    實例

    實例. 程序prog4.sh檢查用戶輸入的文件名, 用法為:
    ./prog4.sh string_name

    # The statement of case…esac if [ $# -eq 0 ] thenecho "No argument is declared"exit fi case $1 infile1)echo "User selects file1";;file2)echo "User selects file2";;*)echo "You must select either file1 or file2!";; esac

    循環(huán)語句

    循環(huán)語句for的用法

    當(dāng)循環(huán)次數(shù)已知或確定時,使用for循環(huán)語句來多次執(zhí)行一條或一組命令。 循環(huán)體由語句括號do和done來限定。格式為:

    for 變量名 in 單詞表
    do
    命令表
    done
    變量依次取單詞表中的各個單詞, 每取一次單詞, 就執(zhí)行一次循環(huán)體中的命令. 循環(huán)次數(shù)由單詞表中的單詞數(shù)確定. 命令表中的命令可以是一條, 也可以是由分號或換行符分開的多條。
    如果單詞表是命令行上的所有位置參數(shù)時, 可以在for語句中省略 “in 單詞表” 部分。

    實例

    實例:程序prog5.sh拷貝當(dāng)前目錄下的所有文件到backup子目錄下. 使用語法為: ./prog5.sh [filename]

    #! /bin/bash # for (( i=1; $i <=10 ; i=$i + 1 )) # do # echo "+++ i = $i" # sleep 1; # donefor I in 1 3 5 7 9 doecho "$I" done#for (( ; ; )) #死循環(huán) #do # echo "+++" # echo "---" #done

    while循環(huán)

    語法結(jié)構(gòu)為:
    while 命令或表達(dá)式
    do
    命令表
    done
    while語句首先測試其后的命令或表達(dá)式的值,如果為真,就執(zhí)行一次循環(huán)體中的命令,然后再測試該命令或表達(dá)式的值,執(zhí)行循環(huán)體,直到該命令或表達(dá)式為假時退出循環(huán)。
    while語句的退出狀態(tài)為命令表中被執(zhí)行的最后一條命令的退出狀態(tài)。

    實例

    創(chuàng)建文件程序prog6, 批量生成空白文件,用法為:
    prog6 file [number] ./a.sh file 6

    循環(huán)控制語句

    break 和 continue
    break n 則跳出n層;
    continue語句則馬上轉(zhuǎn)到最近一層循環(huán)語句的下一輪循環(huán)上,
    continue n則轉(zhuǎn)到最近n層循環(huán)語句的下一輪循環(huán)上.
    實例. 程序prog7的用法為:
    prog7 整數(shù) 整數(shù) 整數(shù) …
    參數(shù)個數(shù)不確定, 范圍為1~10個, 每個參數(shù)都是正整數(shù)。

    3.3 shell 腳本-函數(shù)

    shell函數(shù)調(diào)用

    實例

    check_user( ) { #查找已登錄的指定用戶user=`who | grep $1 | wc -l`if [ $user –eq 0 ]thenreturn 0 #未找到指定用戶elsereturn 1 #找到指定用戶fi } while true # MAIN, Main, main: program begin here doecho "Input username: \c"read unamecheck_user $uname # 調(diào)用函數(shù), 并傳遞參數(shù)unameif [ $? –eq 1 ] # $?為函數(shù)返回值then echo "user $uname online"else echo "user $uname offline"fi done

    函數(shù)變量作用域

    全局作用域:在腳本的其他任何地方都能夠訪問該變量。
    局部作用域:只能在聲明變量的作用域內(nèi)訪問。
    聲明局部變量的格式:
    Local variable_name =value

    #!/bin/bash Scope() {local lclvariable=1Gblvariable=2echo "lclavariable in function = $lclvariable"echo "Gblvariable in function = $Gblvariable" }Scopeecho "lclavariable in function = $lclvariable" echo "Gblvariable in function = $Gblvariable"

    結(jié)果

    $(1-9)放函數(shù)內(nèi)部,表示函數(shù)參數(shù),不再是名令行參數(shù)
    注意方法內(nèi)的變量默認(rèn)是全局的,局部變量需要加local 修飾。

    D4 Linux C高級語言編程

    4.1 gcc 編譯器和gdb

    gcc 編譯器

    GNU工具

    編譯工具:把一個源程序編譯為一個可執(zhí)行程序
    調(diào)試工具:能對執(zhí)行程序進(jìn)行源碼或匯編級調(diào)試
    軟件工程工具:用于協(xié)助多人開發(fā)或大型軟件項目的管理,如make、CVS、Subvision
    其他工具:用于把多個目標(biāo)文件鏈接成可執(zhí)行文件的鏈接器,或者用作格式轉(zhuǎn)換的工具。

    部分相關(guān)資源

    http://www.gnu.org/
    http://gcc.gnu.org/
    http://www.kernel.org/
    http://www.linux.org/
    http://www.linuxdevices.com/
    http://sourceforge.net/index.php

    GCC簡介

    全稱為GNU CC ,GNU項目中符合ANSI C標(biāo)準(zhǔn)的編譯系統(tǒng)
    編譯如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多種語言
    GCC是可以在多種硬體平臺上編譯出可執(zhí)行程序的超級編譯器,其執(zhí)行效率與一般的編譯器相比平均效率要高20%~30%
    一個交叉平臺編譯器 ,適合在嵌入式領(lǐng)域的開發(fā)編譯

    GCC編譯器的版本

    GNU Compiler Collection
    C, C++, Objective-C, Fortran, Java, Ada
    http://gcc.gnu.org

    gcc所支持后綴名解釋

    .c C原始程序 .C/.cc/.cxx C++原始程序 .h 預(yù)處理文件(頭文件) .i 已經(jīng)過預(yù)處理的C原始程序 .ii 已經(jīng)過預(yù)處理的C++原始程序 .s/.S 匯編語言原始程序 .o 目標(biāo)文件 .a/.so 編譯后的庫文件

    編譯器的主要組件

    分析器:分析器將源語言程序代碼轉(zhuǎn)換為匯編語言。因為要從一種格式轉(zhuǎn)換為另一種格式(C到匯編),所以分析器需要知道目標(biāo)機(jī)器的匯編語言。
    匯編器:匯編器將匯編語言代碼轉(zhuǎn)換為CPU可以執(zhí)行字節(jié)碼。
    鏈接器:鏈接器將匯編器生成的單獨的目標(biāo)文件組合成可執(zhí)行的應(yīng)用程序。鏈接器需要知道這種目標(biāo)格式以便工作。
    標(biāo)準(zhǔn)C庫:核心的C函數(shù)都有一個主要的C庫來提供。如果在應(yīng)用程序中用到了C庫中的函數(shù),這個庫就會通過鏈接器和源代碼連接來生成最終的可執(zhí)行程序

    GCC的基本用法和選項

    Gcc最基本的用法是∶gcc [options] [filenames]
    -c,只編譯,不連接成為可執(zhí)行文件,編譯器只是由輸入的.c等源代碼文件生成.o為后綴的目標(biāo)文件,通常用于編譯不包含主程序的子程序文件。
    -o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名。如果不給出這個選項,gcc就給出預(yù)設(shè)的可執(zhí)行文件a.out。
    -g,產(chǎn)生符號調(diào)試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進(jìn)行調(diào)試,我們就必須加入這個選項。
    -O,對程序進(jìn)行優(yōu)化編譯、連接,采用這個選項,整個源代碼會在編譯、連接過程中進(jìn)行優(yōu)化處理,這樣產(chǎn)生的可執(zhí)行文件的執(zhí)行效率可以提高,但是,編譯、連接的速度就相應(yīng)地要慢一些。
    -O2,比-O更好的優(yōu)化編譯、連接,當(dāng)然整個編譯、連接過程會更慢。
    -I dirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預(yù)編譯過程中使用的參數(shù)。
    -L dirname,將dirname所指出的目錄加入到程序函數(shù)檔案庫文件的目錄列表中,是在鏈接過程中使用的參數(shù)。
    GCC 全稱為GNU CC ,GNU項目中符合ANSI C標(biāo)準(zhǔn)的編譯系統(tǒng),編譯如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多種語言

    GCC的錯誤類型及對策

    第一類∶C語法錯誤
    錯誤信息∶文件source.c中第n行有語法錯誤(syntex errror)。有些情況下,一個很簡單的語法錯誤,gcc會給出一大堆錯誤,我們最主要的是要保持清醒的頭腦,不要被其嚇倒,必要的時候再參考一下C語言的基本教材。
    第二類∶頭文件錯誤
    錯誤信息∶找不到頭文件head.h(Can not find include file head.h)。這類錯誤是源代碼文件中的包含頭文件有問題,可能的原因有頭文件名錯誤、指定的頭文件所在目錄名錯誤等,也可能是錯誤地使用了雙引號和尖括號。
    第三類∶檔案庫錯誤
    錯誤信息∶鏈接程序找不到所需的函數(shù)庫(ld: -lm: No such file or directory )。這類錯誤是與目標(biāo)文件相連接的函數(shù)庫有錯誤,可能的原因是函數(shù)庫名錯誤、指定的函數(shù)庫所在目錄名稱錯誤等,檢查的方法是使用find命令在可能的目錄中尋找相應(yīng)的函數(shù)庫名,確定檔案庫及目錄的名稱并修改程序中及編譯選項中的名稱。
    第四類∶未定義符號
    錯誤信息∶有未定義的符號(Undefined symbol)。
    這類錯誤是在鏈接過程中出現(xiàn)的,可能有兩種原因∶一是使用者自己定義的函數(shù)或者全局變量所在源代碼文件,沒有被編譯、連接,或者干脆還沒有定義;二是未定義的符號是一個標(biāo)準(zhǔn)的庫函數(shù),在源程序中使用了該庫函數(shù),而連接過程中還沒有給定相應(yīng)的函數(shù)庫的名稱,或者是該檔案庫的目錄名稱有問題,這時需要使用檔案庫維護(hù)命令ar檢查我們需要的庫函數(shù)到底位于哪一個函數(shù)庫中,確定之后,修改gcc連接選項中的-l和-L項。

    GCC使用實例

    #include<stdio.h> int main(void) { int i,j; j=0; i=j+1; printf(“hello,world\n”); printf(“the result is %d\n”,i); } 編譯:gcc -0 test test.c 執(zhí)行: ./test 查看更詳細(xì)的信息:gcc -v -o test.c

    GCC編譯過程

    GCC的編譯流程分為四個步驟:
    預(yù)處理(Pre-Processing)
    編譯(Compiling)
    匯編(Assembling)
    鏈接(Linking)

    “hello”的演變歷程

    生成預(yù)處理代碼
    gcc -E test.c -o tset.i用wc 命令,查看兩個階段代碼大小 wc test.c test


    test.i比test.c增加了很多內(nèi)容,主要是放在系統(tǒng)提供的include文件中的。

    生成匯編代碼

    檢查語法錯誤,并生成匯編文件
    gcc -S test.i -o test.s

    生成目標(biāo)代碼
    方法一,直接從C源代碼中生成目標(biāo)代碼 gcc -c test.c -o test.o方法二,用匯編器從匯編代碼生成目標(biāo)代碼 as test.s -o test.o
    生成可執(zhí)行程序

    將目標(biāo)程序鏈接庫資源,生成可執(zhí)行程序
    gcc test.o -o test
    ./test

    GDB調(diào)試工具

    調(diào)試器–Gdb調(diào)試流程

    首先使用gcc對test.c進(jìn)行編譯,注意一定要加上選項‘-g’

    流程

    查看文件 l
    查看變量值p n
    設(shè)置斷點 b 6
    單步運行 n | s
    查看斷點情況 info b
    恢復(fù)程序運行 c
    運行代碼 r
    幫助 help

    Gdb的使用切記點

    編譯必須加入-g
    只有在代碼處于運行或暫停狀態(tài)時才能查看變量值
    設(shè)置斷點后程序在指定行之前停止
    gdb filename 進(jìn)入調(diào)試模式

    4.2 C語言高級編程-條件編譯和結(jié)構(gòu)體

    條件編譯

    編譯器根據(jù)條件的真假決定是否編譯相關(guān)的代碼

    一、根據(jù)宏是否定義,其語法如下:

    #ifdef <macro>……#else……#endif #define _DEBUG_ #ifdef _DEBUG_ printf(“The macro _DEBUG_ is defined\n”); #else printf(“The macro _DEBUG_ is not defined\n”); #endif

    注意:#ifdef 可以寫成 #ifndef 則功能相反

    二、根據(jù)宏的值,其語法如下

    #if <macro> …… #else …… #endif #define _DEBUG_ 1 #if _DEBUG_ printf(“The macro _DEBUG_ is defined\n”); #else printf(“The macro _DEBUG_ is not defined\n”); #endif

    三、gcc 時宏的定義

    在gcc中, 可在命令行中指定對象宏的定義:
    e.g.
    $ gcc -Wall -DMAX=100 -o tmp tmp.c
    相當(dāng)于在tmp.c中添加" #define MAX 100".

    那么, 如果原先tmp.c中含有MAX宏的定義, 那么再在gcc調(diào)用命令中使用-DMAX, 會出現(xiàn)什么情況呢?
    —若-DMAX=1, 則正確編譯.
    —若-DMAX的值被指定為不為1的值, 那么gcc會給出MAX宏被重定義的警告, MAX的值仍為1.
    注意: 若在調(diào)用gcc的命令行中不顯示地給出對象宏的值, 那么gcc賦予該宏默認(rèn)值(1), 如: -DVAL == -DVAL=1

    D5 Makefile

    5.1 Make介紹

    Make簡介

    工程管理器,顧名思義,是指管理較多的文件
    Make工程管理器也就是個“自動編譯管理器”,這里的“自動”是指它能夠根據(jù)文件時間戳自動發(fā)現(xiàn)更新過的文件而減少編譯的工作量,同時,它通過讀入Makefile文件的內(nèi)容來執(zhí)行大量的編譯工作
    Make將只編譯改動的代碼文件,而不用完全編譯。

    Makefile基本結(jié)構(gòu)

    Makefile是Make讀入的唯一配置文件
    由make工具創(chuàng)建的目標(biāo)體(target),通常是目標(biāo)文件或可執(zhí)行文件
    要創(chuàng)建的目標(biāo)體所依賴的文件(dependency_file)
    創(chuàng)建每個目標(biāo)體時需要運行的命令(command)
    注意:命令行前面必須是一個”TAB鍵”,否則編譯錯誤為:*** missing separator. Stop.

    Makefile格式
    target : dependency_files
    command
    例子

    hello.o : hello.c hello.hgcc –c hello.c –o hello.o

    一個復(fù)雜一些的例子

    sunq:kang.o yul.ogcc kang.o yul.o -o sunq kang.o : kang.c kang.h gcc –Wall –O -g –c kang.c -o kang.o yul.o : yul.c gcc - Wall –O -g –c yul.c -o yul.o

    注釋:-Wall:表示允許發(fā)出gcc所有有用的報警信息.
    -c:只是編譯不鏈接,生成目標(biāo)文件”.o”
    -o file:表示把輸出文件輸出到file里

    Makefile 注釋符

    # 字符是注釋符
    makefile 把 # 字符后面的內(nèi)容作為注釋內(nèi)容處理(shell、perl 腳本也是使用 # 字符作為注釋符)。
    如果某行的第一個非空字符為 #,則此行會被 make 解釋為注釋行(命令行除外,如果 Tab 字符之后使用 # 字符,則會被 make 解釋為命令行。
    注釋行的結(jié)尾如果存在反斜線(\),那么下一行也被作為注釋行。

    Makefile變量

    創(chuàng)建和使用變量

    創(chuàng)建變量的目的:用來代替一個文本字符串:

    1. 系列文件的名字 2. 傳遞給編譯器的參數(shù) 3. 需要運行的程序 4. 需要查找源代碼的目錄 5. 你需要輸出信息的目錄 6. 你想做的其它事情。

    變量定義的兩種方式
    遞歸展開方式VAR=var
    簡單方式 VAR := var

    變量使用 $(VAR)

    用””則用””則用”則用$”來表示
    類似于編程語言中的宏

    剛才的例子

    OBJS = kang.o yul.o CC = gcc CFLAGS = -Wall -O -g sunq : $(OBJS)$(CC) $(OBJS) -o sunq kang.o : kang.c kang.h$(CC) $(CFLAGS) -c kang.c -o kang.o yul.o : yul.c yul.h$(CC) $(CFLAGS) -c yul.c -o yul.o
    遞歸展開方式VAR=var

    例子:
    foo = $(bar)
    bar = $(ugh)
    ugh = Huh?
    $(foo)的值為?
    echo $(foo)來進(jìn)行查看
    優(yōu)點:
    它可以向后引用變量
    缺點:
    不能對該變量進(jìn)行任何擴(kuò)展,例如
    CFLAGS = $(CFLAGS) -O
    會造成死循環(huán)

    簡單方式:VAR:=var
    m := mm x := $(m) y := $(x) bar x := later all:echo $(x) $(y)

    linux@linux:~/file/tmp$ make
    echo later mm bar
    later mm bar

    用這種方式定義的變量,會在變量的定義點,按照被引用的變量的當(dāng)前值進(jìn)行展開
    這種定義變量的方式更適合在大的編程項目中使用,因為它更像我們一般的編程語言

    用?=定義變量
    dir := /foo/bar
    FOO ?= bar

    FOO是?

    含義是,如果FOO沒有被定義過,那么變量FOO的值就是“bar”,如果FOO先前被定義過,那么這條語將什么也不做,其等價于:
    ifeq ($(origin FOO), undefined)
    FOO = bar
    endif

    為變量添加值
    你可以通過+=為已定義的變量添加新的值
    Main=hello.o hello-1.o
    Main+=hello-2.o

    特殊變量

    預(yù)定義變量

    AR 庫文件維護(hù)程序的名稱,默認(rèn)值為ar。AS匯編程序的名稱,默認(rèn)值為as。
    CC C編譯器的名稱,默認(rèn)值為cc。CPP C預(yù)編譯器的名稱,默認(rèn)值為$(CC) –E。
    CXX C++編譯器的名稱,默認(rèn)值為g++。
    FC FORTRAN編譯器的名稱,默認(rèn)值為f77
    RM 文件刪除程序的名稱,默認(rèn)值為rm -f
    例子:
    Hello: main.c main.h
    $(CC) –o hello main.c
    clean:
    $(RM) hello

    其他預(yù)定義變量
    ARFLAGS 庫文件維護(hù)程序的選項,無默認(rèn)值。
    ASFLAGS 匯編程序的選項,無默認(rèn)值。
    CFLAGS C編譯器的選項,無默認(rèn)值。
    CPPFLAGS C預(yù)編譯的選項,無默認(rèn)值。
    CXXFLAGS C++編譯器的選項,無默認(rèn)值。
    FFLAGS FORTRAN編譯器的選項,無默認(rèn)值。

    剛才的例子
    OBJS = kang.o yul.o
    CC = gcc
    CFLAGS = -Wall -O -g
    sunq : $(OBJS)
    $(CC) $(OBJS) -o sunq
    kang.o : kang.c kang.h
    $(CC) $(CFLAGS) -c kang.c -o kang.o
    yul.o : yul.c yul.h
    $(CC) $(CFLAGS) -c yul.c -o yul.o

    自動變量

    $* 不包含擴(kuò)展名的目標(biāo)文件名稱
    $+ 所有的依賴文件,以空格分開,并以出現(xiàn)的先后為序,可能 包含重復(fù)的依賴文件
    $< 第一個依賴文件的名稱
    $? 所有時間戳比目標(biāo)文件晚的的依賴文件,并以空格分開
    $@ 目標(biāo)文件的完整名稱
    $^ 所有不重復(fù)的目標(biāo)依賴文件,以空格分開
    $% 如果目標(biāo)是歸檔成員,則該變量表示目標(biāo)的歸檔成員名稱

    make運行環(huán)境變量

    make在啟動時會自動讀取系統(tǒng)當(dāng)前已經(jīng)定義了的環(huán)境變量,并且會創(chuàng)建與之具有相同名稱和數(shù)值的變量
    如果用戶在Makefile中定義了相同名稱的變量,那么用戶自定義變量將會覆蓋同名的環(huán)境變量

    直接運行make
    選項
    -C dir讀入指定目錄下的Makefile
    -f file讀入當(dāng)前目錄下的file文件作為Makefile
    -I 忽略所有的命令執(zhí)行錯誤
    -I dir指定被包含的Makefile所在目錄
    -n 只打印要執(zhí)行的命令,但不執(zhí)行這些命令
    -p 顯示make變量數(shù)據(jù)庫和隱含規(guī)則
    -s 在執(zhí)行命令時不顯示命令
    -w 如果make在執(zhí)行過程中改變目錄,打印當(dāng)前目錄名

    靜態(tài)模式1

    Makefile 靜態(tài)模式——$(objects): %.o: %.c

    靜態(tài)模式+自動化變量

    舉例

    objects = foo.o bar.o all: $(objects) $(objects): %.o: %.c $(CC) -c $(CFLAGS) $< -o $@

    等價于?

    foo.o : foo.c $(CC) -c $(CFLAGS) foo.c -o foo.o bar.o : bar.c $(CC) -c $(CFLAGS) bar.c -o bar.o

    偽目標(biāo)

    test:f1.o f2.o main.ogcc f1.o f2.o main.o -o test f2.o:f2.cgcc -c f2.c -o f2.o f1.o:f1.cgcc -c f1.c -o f1.o main.o:main.cgcc -c main.c -o main.o .PHONY:clean // 將clean 定義為偽目標(biāo),表明claen 不是一個可執(zhí)行文件,避免在同級目錄存在同名文件時,make 報錯: clean:rm *.o test

    設(shè)置偽目標(biāo)前:

    設(shè)置偽目標(biāo)后:

    Makefile的隱含規(guī)則

    隱含規(guī)則1:編譯C程序的隱含規(guī)則
    “.o”的目標(biāo)的依賴目標(biāo)會自動推導(dǎo)為“.c”,并且其生成命令是“$(CC) –c $(CPPFLAGS) $(CFLAGS)”

    隱含規(guī)則2:鏈接Object文件的隱含規(guī)則
    “” 目標(biāo)依賴于“.o”,通過運行C的編譯器來運行鏈接程序生成(一般是“l(fā)d”),其生成命令是:“$(CC) $(LDFLAGS) .o $(LOADLIBES) $(LDLIBS)”。這個規(guī)則對于只有一個源文件的工程有效,同時也對多個Object文件(由不同的源文件生成)的也有效。例如如下規(guī)則:
    x : x.o y.o z.o
    并且“x.c”、“y.c”和“z.c”都存在時,隱含規(guī)則將執(zhí)行如下命令:
    cc -c x.c -o x.o
    cc -c y.c -o y.o
    cc -c z.c -o z.o
    cc x.o y.o z.o -o x
    如果沒有一個源文件(如上例中的x.c)和你的目標(biāo)名字(如上例中的x)相關(guān)聯(lián),那么,你最好寫出自己的生成規(guī)則,不然,隱含規(guī)則會報錯的。

    生成多個可執(zhí)行文件

    makefile 默認(rèn)只生成第一個可執(zhí)行文件,所以為了同時編譯多個可執(zhí)行文件,我們用到了偽可執(zhí)行文件,make 過程中并不生成 這個偽可執(zhí)行文件,利用依賴的屬性,同時生成三個可執(zhí)行文件

    all : init sender receiver .PHONY : clean init : init.o common.occ -pthread -o init init.o common.o sender : sender.o common.occ -pthread -o sender sender.o common.o receiver : receiver.o common.occ -pthread -o receiver receiver.o common.o init.o : common.h sender.o : common.h receiver.o : common.h clean : rm init rm receiverrm sender rm *.o

    5.2 make命令的選項及Make

    使用make 管理器非常簡單,只需在make 命令的后面鍵入目標(biāo)名即可建立指定的目標(biāo)。如果直接運行make,則建立Makefile中的第一個目標(biāo)。
    命令行選項:

    -C dir讀入指定目錄下的Makefile -f file讀入當(dāng)前目錄下的file文件作為Makefile -i忽略所有的命令執(zhí)行錯誤 -I dir指定被包含的Makefile所在目錄 -n只打印要執(zhí)行的命令,但不執(zhí)行這些命令 -p顯示make變量數(shù)據(jù)庫和隱含規(guī)則 -s在執(zhí)行命令時不顯示命令 -w如果make在執(zhí)行過程中改變目錄,打印當(dāng)前目錄名

    5.3 VPATH及嵌套的Makefile

    Makefile的VPATH

    VPATH : 虛路徑
    在一些大的工程中,有大量的源文件,我們通常的做法是把這許多的源文件分類,并存放在不同的目錄中。所以,當(dāng)make需要去找尋文件的依賴關(guān)系時,你可以在文件前加上路徑,但最好的方法是把一個路徑告訴make,讓make在自動去找。
    Makefile文件中的特殊變量“VPATH”就是完成這個功能的,如果沒有指明這個變量,make只會在當(dāng)前的目錄中去找尋依賴文件和目標(biāo)文件。如果定義了這個變量,那么,make就會在當(dāng)當(dāng)前目錄找不到的情況下,到所指定的目錄中去找尋文件了。

    VPATH = src:…/headers
    上面的的定義指定兩個目錄,“src”和“…/headers”,make會按照這個順序進(jìn)行搜索。目錄由“冒號”分隔。(當(dāng)然,當(dāng)前目錄永遠(yuǎn)是最高優(yōu)先搜索的地方)

    案例

    CC=gcc CFLAGS=-c -Wall -I include VPATH=src1:src2:main f1:f1.o f2.o main.o$(CC) $(CFLAGS) $^ -o $@ .PHONY:clean clean:find ./ -name "*.o" -exec rm {} \;;rm f1

    'linux中的 exec命令,-exec 后面跟的是linux的 command 命令,exec命令以分號結(jié)束‘;’, 該分號前面要放反斜杠轉(zhuǎn)義 。{} 花括號代表前面的命令執(zhí)行的結(jié)果

    Makefile的嵌套

    我們注意到有一句@echo $(SUBDIRS)
    @echo off 的意思是關(guān)閉回顯,不顯示正在執(zhí)行的批處理命令及執(zhí)行的結(jié)果等。
    語法:echo [{on off}] [message] 示例:@echo off / echo hello world。
    當(dāng)echo設(shè)置off值的時候,那么下面的指令都將只執(zhí)行而不顯示,當(dāng)再次出現(xiàn)echo on時下面的語句才為可見的(回顯)。
    echo通常和@一起使用,@放在echo的前面,即是 @echo,作用是讓@后面的句子不顯示出來,而@本身也是不顯示的
    通過 @echo off 可達(dá)到不顯示任何信息的效果。

    @(RM)并不是我們自己定義的變量,那它是從哪里來的呢?
    預(yù)定義變量 : RM 文件刪除程序的名稱,默認(rèn)值為rm -f
    make -C @‘?Cdir讀入指定目錄下的Makefile‘‘@ ` -C dir讀入指定目錄下的Makefile` `@‘?Cdir讀入指定目錄下的Makefile‘‘@ ——目標(biāo)文件的名稱`

    課程案例

    工程文件如下:

    可以看主Makefile文件內(nèi)容如下

    CC=gcc #同一行命令換行結(jié)尾加 '\' 聲明未結(jié)束。 SUBDIRS=f1 \f2 \main \obj OBJS=f1.o f2.o main.o BIN=myapp OBJS_DIR=obj BIN_DIR=bin #export的作用是將變量傳遞給子目錄下的Makefile文件以供它們使用 export CC OBJS BIN OBJS_DIR BIN_DIRall:CHECK_DIR $(SUBDIRS) CHECK_DIR:mkdir -p $(BIN_DIR) $(SUBDIRS):ECHOmake -C $@ ECHO:@echo $(SUBDIRS)@echo begin compile CLEAN:@$(RM) $(OBJS_DIR)/*.o@rm -rf $(BIN_DIR)

    其他案例:

    在一些大的工程中,我們會把我們不同模塊或是不同功能的源文件放在不同的目錄中,我們可以在每個目錄中都書寫一個該目錄的 Makefile,這有利于讓我們的 Makefile 變得更加地簡潔,而不至于把所有的東西全部寫在一個 Makefile 中,這樣會很難維護(hù)我們的 Makefile,這個技術(shù)對于我們模塊編譯和分段編譯有著非常大的好處。
    工程文件如下

    可以看主makefile文件內(nèi)容如下

    CC =gccTOP_DIR :=$(PWD) INCLUDE :=$(TOP_DIR)/headers SRC_DIR :=$(TOP_DIR)/src APP_DIR :=$(TOP_DIR)/app VPATH := $(SRC_DIR):$(APP_DIR) CFLAGS = -I $(INCLUDE)export CC VPATH CFLAGS.PHONY:all clean all:$(MAKE) -C $(SRC_DIR)$(MAKE) -C $(APP_DIR) clean:$(MAKE) -C $(SRC_DIR) clean$(MAKE) -C $(APP_DIR) clean

    其中$(MAKE) -C (SRCDIR)是到對應(yīng)的子目錄下執(zhí)行make,使用(SRC_DIR)是到對應(yīng)的子目錄下執(zhí)行make,使用(SRCD?IR)是到對應(yīng)的子目錄下執(zhí)行make,使用(MAKE)是為了方便以后可以添加適當(dāng)?shù)膍ake參數(shù),-C參數(shù)是在進(jìn)入或者退出目錄時打印出來。
    export的作用是將變量傳遞給子目錄下的Makefile文件以供它們使用。

    版權(quán)聲明:本文為CSDN博主「juruiyuan111」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
    原文鏈接:https://blog.csdn.net/juruiyuan111/article/details/119894932

    注腳

    ?


  • 這個靜態(tài)模式就是一種自動編譯模式,在這種模式下,我們可以容易的定義“多目標(biāo)”規(guī)則,讓我們的規(guī)則變得更加有彈性和靈活。它的語法如下:
    < targets …> : < target-pattern > : < prereq-patterns …>
    <commands>

    其中:
    targets定義了一些列的目標(biāo)文件,也就是多目標(biāo),可以有通配符,是目標(biāo)的一個集合。
    target-pattern 是targets的模式,也就是目標(biāo)集模式
    prereq-patterns 則是目標(biāo)的“依賴”元素,
    這么去說,可能還是比較拗口,不容易理解,我們還是把理論落地,舉例一下吧:
    我們把target-pattern 定義成 %.o 意思是我們的target集合都是以.o結(jié)尾。當(dāng)然這里也可以使用通配符*,只不過%多用于Makefile,他們兩個的區(qū)別,我們后面再講。而我們的prereq-patterns則定義為%.c,這意思就是對 target-pattern中所形成的目標(biāo)集進(jìn)行二次定義,其計算方法是取target-pattern模式中的%代表部分(其實就是去掉.o后的文件名),并為其加上[.c]結(jié)尾,形成新的集合。
    ————————————————
    版權(quán)聲明:本文為CSDN博主「豬哥-嵌入式」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明。
    原文鏈接:https://blog.csdn.net/u012351051/article/details/88600562 ??

  • 總結(jié)

    以上是生活随笔為你收集整理的LV.2 Linux C语言高级的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    国产精品美女久久久久av爽李琼 | 激情五月综合色婷婷一区二区 | 精品乱码久久久久久久 | 97精品国产97久久久久久免费 | 中文字幕无码日韩专区 | 无码午夜成人1000部免费视频 | 伊人久久大香线焦av综合影院 | 无码国产乱人伦偷精品视频 | 18无码粉嫩小泬无套在线观看 | 日韩av无码一区二区三区 | 天天爽夜夜爽夜夜爽 | 夜夜影院未满十八勿进 | 色狠狠av一区二区三区 | 亚洲码国产精品高潮在线 | 无码帝国www无码专区色综合 | 图片小说视频一区二区 | 国内精品久久久久久中文字幕 | 久久亚洲日韩精品一区二区三区 | 九九热爱视频精品 | 免费国产成人高清在线观看网站 | 欧美自拍另类欧美综合图片区 | 国产黑色丝袜在线播放 | 99久久久无码国产aaa精品 | 在线欧美精品一区二区三区 | 丝袜足控一区二区三区 | 亚洲熟妇色xxxxx欧美老妇 | 九月婷婷人人澡人人添人人爽 | 日韩精品a片一区二区三区妖精 | 日本丰满熟妇videos | 欧美日韩一区二区免费视频 | 精品无码一区二区三区爱欲 | 国产精品办公室沙发 | 中文字幕乱码人妻无码久久 | 麻豆md0077饥渴少妇 | 欧美35页视频在线观看 | 亚洲欧美日韩综合久久久 | 久久久久人妻一区精品色欧美 | 奇米影视7777久久精品 | 国产口爆吞精在线视频 | 精品aⅴ一区二区三区 | 精品亚洲韩国一区二区三区 | 在线播放无码字幕亚洲 | 日韩成人一区二区三区在线观看 | 国产suv精品一区二区五 | 久久伊人色av天堂九九小黄鸭 | 国内精品人妻无码久久久影院蜜桃 | 国产人妖乱国产精品人妖 | 国内精品久久毛片一区二区 | 国产精品理论片在线观看 | 国产精品亚洲专区无码不卡 | 在线成人www免费观看视频 | 性欧美videos高清精品 | 亚洲日本一区二区三区在线 | 亚洲日本一区二区三区在线 | 精品日本一区二区三区在线观看 | 亚洲成在人网站无码天堂 | 曰韩少妇内射免费播放 | 中文字幕乱妇无码av在线 | 美女扒开屁股让男人桶 | 欧美国产日韩久久mv | 国产精品无码一区二区桃花视频 | 色一情一乱一伦一区二区三欧美 | 久久精品人人做人人综合 | 久久久久av无码免费网 | 精品一区二区不卡无码av | 日韩精品无码一区二区中文字幕 | 色欲久久久天天天综合网精品 | a片在线免费观看 | 国语自产偷拍精品视频偷 | 精品国产一区二区三区四区 | 中文无码伦av中文字幕 | 日本免费一区二区三区最新 | 乌克兰少妇性做爰 | 欧美日韩一区二区三区自拍 | 久久午夜无码鲁丝片午夜精品 | 1000部夫妻午夜免费 | 欧美老妇与禽交 | 久久人人爽人人人人片 | 亚洲欧美国产精品专区久久 | 日韩av无码一区二区三区不卡 | 蜜臀av无码人妻精品 | 在线а√天堂中文官网 | 亚洲欧美日韩成人高清在线一区 | 欧美日韩一区二区三区自拍 | 欧美xxxxx精品 | aⅴ亚洲 日韩 色 图网站 播放 | 日韩精品成人一区二区三区 | 中国女人内谢69xxxx | 日日天干夜夜狠狠爱 | 亚洲日韩av一区二区三区四区 | 人妻与老人中文字幕 | 国产内射爽爽大片视频社区在线 | 伊人久久大香线蕉av一区二区 | 亚洲精品国偷拍自产在线麻豆 | 国产精品国产自线拍免费软件 | 少妇性荡欲午夜性开放视频剧场 | 人人妻人人澡人人爽欧美精品 | 亚洲人亚洲人成电影网站色 | 日韩av无码一区二区三区不卡 | 国产成人无码av片在线观看不卡 | 欧美日韩综合一区二区三区 | 日本精品久久久久中文字幕 | 成人免费视频在线观看 | 国产精品理论片在线观看 | 在线播放无码字幕亚洲 | 久久亚洲精品中文字幕无男同 | 青青青爽视频在线观看 | 欧美人与物videos另类 | 露脸叫床粗话东北少妇 | 亚洲 a v无 码免 费 成 人 a v | 一本色道久久综合狠狠躁 | 免费中文字幕日韩欧美 | 97色伦图片97综合影院 | 粉嫩少妇内射浓精videos | 欧美真人作爱免费视频 | 未满小14洗澡无码视频网站 | 精品亚洲韩国一区二区三区 | 熟女体下毛毛黑森林 | 日日麻批免费40分钟无码 | 中文字幕+乱码+中文字幕一区 | 丰满人妻精品国产99aⅴ | 亚洲精品www久久久 | 精品国产aⅴ无码一区二区 | 樱花草在线播放免费中文 | 无码国产激情在线观看 | 精品亚洲韩国一区二区三区 | 无码人妻丰满熟妇区毛片18 | 激情人妻另类人妻伦 | 俄罗斯老熟妇色xxxx | 女人高潮内射99精品 | 中文字幕无码日韩专区 | 国产真实乱对白精彩久久 | 色欲久久久天天天综合网精品 | 无码人妻av免费一区二区三区 | 少妇人妻偷人精品无码视频 | 中文字幕中文有码在线 | 国内精品人妻无码久久久影院蜜桃 | 国产av久久久久精东av | 久久综合给合久久狠狠狠97色 | 亚洲日韩av一区二区三区中文 | 大肉大捧一进一出好爽视频 | 蜜桃臀无码内射一区二区三区 | 欧美人与牲动交xxxx | 日本丰满护士爆乳xxxx | 扒开双腿吃奶呻吟做受视频 | 2020久久超碰国产精品最新 | 国产欧美熟妇另类久久久 | 久久精品无码一区二区三区 | 日本乱人伦片中文三区 | 国产人妻精品午夜福利免费 | 偷窥村妇洗澡毛毛多 | 国内精品久久毛片一区二区 | 人妻与老人中文字幕 | 亚洲中文字幕在线无码一区二区 | 极品尤物被啪到呻吟喷水 | 精品久久久无码中文字幕 | 永久免费观看美女裸体的网站 | 中文字幕无码乱人伦 | 帮老师解开蕾丝奶罩吸乳网站 | 亚洲第一网站男人都懂 | 亚洲国产精品久久人人爱 | √天堂资源地址中文在线 | av无码久久久久不卡免费网站 | 亚洲区欧美区综合区自拍区 | 又紧又大又爽精品一区二区 | 国内揄拍国内精品少妇国语 | 亚洲中文字幕在线观看 | 国产真实夫妇视频 | 欧美 日韩 人妻 高清 中文 | 国产无遮挡又黄又爽免费视频 | 亚洲乱码国产乱码精品精 | 国产内射爽爽大片视频社区在线 | 久久无码中文字幕免费影院蜜桃 | 97久久国产亚洲精品超碰热 | 一个人看的www免费视频在线观看 | 国产亲子乱弄免费视频 | 婷婷六月久久综合丁香 | 九一九色国产 | 乱人伦人妻中文字幕无码久久网 | 中文字幕无码av波多野吉衣 | 国产精品国产自线拍免费软件 | 性生交大片免费看l | 欧美熟妇另类久久久久久不卡 | 牛和人交xxxx欧美 | 国产97人人超碰caoprom | 日韩精品a片一区二区三区妖精 | 天下第一社区视频www日本 | 日韩人妻无码中文字幕视频 | 伊人色综合久久天天小片 | 扒开双腿疯狂进出爽爽爽视频 | 精品无人区无码乱码毛片国产 | 亚洲日韩av一区二区三区四区 | 天天躁日日躁狠狠躁免费麻豆 | 国精产品一区二区三区 | 亚洲 高清 成人 动漫 | 在线观看国产午夜福利片 | 日日鲁鲁鲁夜夜爽爽狠狠 | √天堂中文官网8在线 | 国产av剧情md精品麻豆 | 亚洲自偷自拍另类第1页 | 亚洲精品国产精品乱码不卡 | 久久久久se色偷偷亚洲精品av | 色爱情人网站 | 丰满肥臀大屁股熟妇激情视频 | 日本一区二区三区免费高清 | 在线观看国产一区二区三区 | 亚洲精品无码国产 | 亚洲日韩乱码中文无码蜜桃臀网站 | 无码av免费一区二区三区试看 | 国产小呦泬泬99精品 | 成人片黄网站色大片免费观看 | 99国产欧美久久久精品 | 高潮喷水的毛片 | 无码精品人妻一区二区三区av | 国产精品久久久久久久影院 | 亚洲人成网站在线播放942 | 日本精品高清一区二区 | 亚洲国产精品一区二区第一页 | 97精品国产97久久久久久免费 | 久久天天躁夜夜躁狠狠 | 国产亚洲精品久久久久久久 | 久久人妻内射无码一区三区 | 亚洲精品一区二区三区大桥未久 | 亚洲色偷偷男人的天堂 | 亚洲色大成网站www | 国产成人精品一区二区在线小狼 | 色综合久久久无码网中文 | 东京热一精品无码av | 狠狠色噜噜狠狠狠7777奇米 | 精品久久久久久亚洲精品 | 红桃av一区二区三区在线无码av | 国产精品自产拍在线观看 | 成人无码视频免费播放 | 欧美一区二区三区视频在线观看 | 国产精品亚洲综合色区韩国 | 久久综合网欧美色妞网 | 国产美女精品一区二区三区 | 国产麻豆精品一区二区三区v视界 | 国产热a欧美热a在线视频 | 欧美兽交xxxx×视频 | 2020久久香蕉国产线看观看 | 色综合久久久久综合一本到桃花网 | 人妻尝试又大又粗久久 | 亚洲大尺度无码无码专区 | 国产精品久久久一区二区三区 | 国内少妇偷人精品视频免费 | 97色伦图片97综合影院 | 1000部啪啪未满十八勿入下载 | 无码任你躁久久久久久久 | 成人欧美一区二区三区黑人免费 | 红桃av一区二区三区在线无码av | 中文无码成人免费视频在线观看 | 国产人妻精品一区二区三区不卡 | 熟女俱乐部五十路六十路av | 欧美精品国产综合久久 | 亚洲日韩av一区二区三区中文 | 久久99国产综合精品 | 欧美黑人巨大xxxxx | 国产午夜无码视频在线观看 | 国产无套粉嫩白浆在线 | 中文字幕乱码亚洲无线三区 | 人人澡人人透人人爽 | 日日天干夜夜狠狠爱 | 国产熟妇高潮叫床视频播放 | 欧美野外疯狂做受xxxx高潮 | 人妻少妇精品无码专区动漫 | 日本精品少妇一区二区三区 | 又大又黄又粗又爽的免费视频 | 亚洲欧美综合区丁香五月小说 | 久青草影院在线观看国产 | 精品无人区无码乱码毛片国产 | 精品人妻中文字幕有码在线 | 欧美 丝袜 自拍 制服 另类 | 成人精品视频一区二区 | 一本久道高清无码视频 | 青青草原综合久久大伊人精品 | 日本精品少妇一区二区三区 | 日本欧美一区二区三区乱码 | 十八禁视频网站在线观看 | 伊人色综合久久天天小片 | 国产成人综合美国十次 | 国产超级va在线观看视频 | 两性色午夜视频免费播放 | 亚洲色www成人永久网址 | 强奷人妻日本中文字幕 | 少妇被黑人到高潮喷出白浆 | 亚洲欧美日韩成人高清在线一区 | 狠狠色丁香久久婷婷综合五月 | 日本爽爽爽爽爽爽在线观看免 | 青春草在线视频免费观看 | 久久精品中文闷骚内射 | 成在人线av无码免观看麻豆 | 377p欧洲日本亚洲大胆 | 爱做久久久久久 | 成人综合网亚洲伊人 | 久久人人97超碰a片精品 | 欧美老人巨大xxxx做受 | 99久久婷婷国产综合精品青草免费 | 亚洲精品国产品国语在线观看 | 一本大道伊人av久久综合 | 无码帝国www无码专区色综合 | 亚洲 高清 成人 动漫 | 久久久精品欧美一区二区免费 | 麻豆国产人妻欲求不满 | 5858s亚洲色大成网站www | 国产成人无码av片在线观看不卡 | 无人区乱码一区二区三区 | 亚洲中文无码av永久不收费 | 欧美日韩综合一区二区三区 | 4hu四虎永久在线观看 | 网友自拍区视频精品 | 一本色道久久综合亚洲精品不卡 | 国产 精品 自在自线 | 狠狠综合久久久久综合网 | 性生交片免费无码看人 | 亚欧洲精品在线视频免费观看 | 人妻夜夜爽天天爽三区 | 国产成人久久精品流白浆 | 无码一区二区三区在线观看 | 亚洲 高清 成人 动漫 | 成人aaa片一区国产精品 | 人妻无码久久精品人妻 | 正在播放东北夫妻内射 | 又色又爽又黄的美女裸体网站 | 亚洲精品一区二区三区大桥未久 | 日本高清一区免费中文视频 | 国产高清av在线播放 | 国产午夜福利亚洲第一 | 99er热精品视频 | 欧美黑人性暴力猛交喷水 | 日日躁夜夜躁狠狠躁 | 未满成年国产在线观看 | 男女猛烈xx00免费视频试看 | 亚洲无人区一区二区三区 | 99国产精品白浆在线观看免费 | 亚洲小说图区综合在线 | 久久午夜无码鲁丝片秋霞 | 无码人妻丰满熟妇区五十路百度 | 亚洲精品成人av在线 | 女人被男人爽到呻吟的视频 | 一本大道伊人av久久综合 | 亚洲欧洲无卡二区视頻 | 亚洲精品美女久久久久久久 | 免费网站看v片在线18禁无码 | 色窝窝无码一区二区三区色欲 | 亚洲日韩一区二区 | 亚洲国产精品久久人人爱 | www一区二区www免费 | 在线精品国产一区二区三区 | 久久天天躁夜夜躁狠狠 | 夜精品a片一区二区三区无码白浆 | 久久久久国色av免费观看性色 | 亚洲一区二区三区香蕉 | 久久久久免费精品国产 | 一本久道久久综合婷婷五月 | 精品国产精品久久一区免费式 | 亚洲人成网站免费播放 | 天天燥日日燥 | 日日碰狠狠躁久久躁蜜桃 | 一本色道久久综合狠狠躁 | 国产av人人夜夜澡人人爽麻豆 | 色偷偷人人澡人人爽人人模 | 亚洲gv猛男gv无码男同 | 秋霞特色aa大片 | 精品乱子伦一区二区三区 | 欧美精品一区二区精品久久 | 少妇无码一区二区二三区 | 日本大香伊一区二区三区 | 55夜色66夜色国产精品视频 | 成人性做爰aaa片免费看不忠 | 国产精品亚洲lv粉色 | 人妻少妇精品久久 | 国产成人午夜福利在线播放 | 男人和女人高潮免费网站 | 国产一精品一av一免费 | 国内精品人妻无码久久久影院 | 精品无码国产一区二区三区av | 狠狠躁日日躁夜夜躁2020 | 波多野结衣高清一区二区三区 | 激情五月综合色婷婷一区二区 | 人人妻人人澡人人爽欧美一区 | 欧美三级a做爰在线观看 | 大乳丰满人妻中文字幕日本 | 曰本女人与公拘交酡免费视频 | 九九在线中文字幕无码 | 久久天天躁夜夜躁狠狠 | 国产av无码专区亚洲awww | 欧美日韩一区二区免费视频 | 夜夜影院未满十八勿进 | 又大又黄又粗又爽的免费视频 | 97人妻精品一区二区三区 | 久久久www成人免费毛片 | 网友自拍区视频精品 | 国产精品毛片一区二区 | 亚洲日韩精品欧美一区二区 | 日本乱人伦片中文三区 | 又紧又大又爽精品一区二区 | 鲁鲁鲁爽爽爽在线视频观看 | 内射后入在线观看一区 | 国产午夜视频在线观看 | 99精品国产综合久久久久五月天 | 国产性生大片免费观看性 | 领导边摸边吃奶边做爽在线观看 | 精品国产国产综合精品 | 蜜臀aⅴ国产精品久久久国产老师 | 久久久国产一区二区三区 | 妺妺窝人体色www在线小说 | 久久久久人妻一区精品色欧美 | 领导边摸边吃奶边做爽在线观看 | 午夜理论片yy44880影院 | 好爽又高潮了毛片免费下载 | 女人被男人躁得好爽免费视频 | 免费男性肉肉影院 | 午夜男女很黄的视频 | 亚洲中文字幕无码一久久区 | 欧美老熟妇乱xxxxx | 撕开奶罩揉吮奶头视频 | 波多野结衣 黑人 | 久久国产劲爆∧v内射 | 人妻互换免费中文字幕 | 中文字幕人妻无码一夲道 | 国产精品久久国产精品99 | 色五月丁香五月综合五月 | 青草视频在线播放 | 国产热a欧美热a在线视频 | 精品久久综合1区2区3区激情 | 久久精品国产日本波多野结衣 | 国产精品第一国产精品 | 东京热一精品无码av | 久久99精品国产.久久久久 | 亚洲国产欧美在线成人 | 一本久道久久综合婷婷五月 | 人妻少妇被猛烈进入中文字幕 | 国产免费观看黄av片 | 午夜精品久久久久久久久 | 最近中文2019字幕第二页 | 精品 日韩 国产 欧美 视频 | 亚洲人亚洲人成电影网站色 | 老熟妇乱子伦牲交视频 | 午夜嘿嘿嘿影院 | 亚洲人交乣女bbw | 性欧美videos高清精品 | 无码纯肉视频在线观看 | 国产精品高潮呻吟av久久 | 无码人妻久久一区二区三区不卡 | 欧美日韩视频无码一区二区三 | 波多野结衣av一区二区全免费观看 | 欧美野外疯狂做受xxxx高潮 | 国产精品无码永久免费888 | 亚洲精品国偷拍自产在线观看蜜桃 | 欧美精品免费观看二区 | 久久久久久国产精品无码下载 | 亚洲成a人片在线观看日本 | 青青草原综合久久大伊人精品 | 水蜜桃亚洲一二三四在线 | 黄网在线观看免费网站 | 欧美黑人性暴力猛交喷水 | 中国女人内谢69xxxx | 成年女人永久免费看片 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国内揄拍国内精品人妻 | 大肉大捧一进一出好爽视频 | 久久97精品久久久久久久不卡 | 清纯唯美经典一区二区 | 狠狠色丁香久久婷婷综合五月 | 国精品人妻无码一区二区三区蜜柚 | 亚洲日韩av片在线观看 | 国产人成高清在线视频99最全资源 | 荫蒂添的好舒服视频囗交 | 色五月丁香五月综合五月 | 亚洲成a人一区二区三区 | 亚洲性无码av中文字幕 | 久久99精品国产.久久久久 | 波多野结衣av在线观看 | 伊人色综合久久天天小片 | 无人区乱码一区二区三区 | 97久久国产亚洲精品超碰热 | 精品国产国产综合精品 | 国产成人精品一区二区在线小狼 | 丰满少妇人妻久久久久久 | 国产国语老龄妇女a片 | 一区二区三区高清视频一 | 国产成人无码区免费内射一片色欲 | 又大又硬又爽免费视频 | 欧美 亚洲 国产 另类 | 久久久精品成人免费观看 | 亚洲午夜久久久影院 | 国产成人精品优优av | 日本护士xxxxhd少妇 | 久久精品国产日本波多野结衣 | 国产精品视频免费播放 | 中文字幕av伊人av无码av | 亚洲成av人在线观看网址 | 图片区 小说区 区 亚洲五月 | 欧美高清在线精品一区 | 国内老熟妇对白xxxxhd | 国内精品九九久久久精品 | 国产精品久久久一区二区三区 | 99久久精品国产一区二区蜜芽 | 亚洲va中文字幕无码久久不卡 | 国产精品人妻一区二区三区四 | 日本www一道久久久免费榴莲 | 日韩精品无码一本二本三本色 | 久久精品人人做人人综合试看 | 亚洲精品成人av在线 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产成人精品久久亚洲高清不卡 | 久久99热只有频精品8 | 欧美 日韩 亚洲 在线 | 黑人巨大精品欧美一区二区 | 无码av岛国片在线播放 | 亚洲呦女专区 | 精品一二三区久久aaa片 | 国内揄拍国内精品少妇国语 | 无码一区二区三区在线观看 | 久久精品丝袜高跟鞋 | 99视频精品全部免费免费观看 | 未满成年国产在线观看 | 又大又黄又粗又爽的免费视频 | √天堂资源地址中文在线 | 久久久久99精品成人片 | 人妻互换免费中文字幕 | 国产偷国产偷精品高清尤物 | 内射爽无广熟女亚洲 | 欧美激情综合亚洲一二区 | 最近的中文字幕在线看视频 | 久久99精品国产麻豆 | 狂野欧美激情性xxxx | 婷婷丁香五月天综合东京热 | 牲欲强的熟妇农村老妇女视频 | 欧美 日韩 人妻 高清 中文 | 水蜜桃亚洲一二三四在线 | 在线a亚洲视频播放在线观看 | 激情国产av做激情国产爱 | 麻豆精品国产精华精华液好用吗 | 亚洲日韩中文字幕在线播放 | 国产成人精品三级麻豆 | 国产人妻精品一区二区三区不卡 | 国产av无码专区亚洲awww | 久久成人a毛片免费观看网站 | 欧美丰满熟妇xxxx性ppx人交 | 国产一区二区三区四区五区加勒比 | 久久天天躁狠狠躁夜夜免费观看 | 久久精品国产一区二区三区 | 日韩人妻无码一区二区三区久久99 | 一本精品99久久精品77 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产女主播喷水视频在线观看 | 久久精品人人做人人综合 | 免费无码肉片在线观看 | 精品偷拍一区二区三区在线看 | 国产成人午夜福利在线播放 | 又大又硬又黄的免费视频 | 无码帝国www无码专区色综合 | 久久精品国产大片免费观看 | 亚洲欧美中文字幕5发布 | 小鲜肉自慰网站xnxx | 成人精品天堂一区二区三区 | 国产综合久久久久鬼色 | 亚洲国产成人a精品不卡在线 | 少女韩国电视剧在线观看完整 | 亚洲无人区一区二区三区 | 国产av一区二区精品久久凹凸 | 蜜桃臀无码内射一区二区三区 | 国色天香社区在线视频 | 久久久久99精品成人片 | 国产无遮挡又黄又爽免费视频 | 大肉大捧一进一出好爽视频 | 日产精品高潮呻吟av久久 | 国产激情艳情在线看视频 | 成人试看120秒体验区 | 嫩b人妻精品一区二区三区 | 国产精品18久久久久久麻辣 | 精品无码一区二区三区的天堂 | 伊人久久婷婷五月综合97色 | 亚洲a无码综合a国产av中文 | 成人影院yy111111在线观看 | 精品国产乱码久久久久乱码 | 亚洲熟妇色xxxxx欧美老妇y | 精品无码国产一区二区三区av | 国产人妻大战黑人第1集 | 夜精品a片一区二区三区无码白浆 | 国产午夜无码视频在线观看 | 无码人妻精品一区二区三区不卡 | 夜夜躁日日躁狠狠久久av | 日本一本二本三区免费 | 无码午夜成人1000部免费视频 | 日本一区二区更新不卡 | 亚洲一区二区三区 | 日韩av激情在线观看 | 成人一在线视频日韩国产 | 欧美老熟妇乱xxxxx | 一本久久a久久精品vr综合 | 中文字幕+乱码+中文字幕一区 | 少妇被黑人到高潮喷出白浆 | 精品一区二区三区波多野结衣 | 一本久道久久综合婷婷五月 | 清纯唯美经典一区二区 | 国产免费久久精品国产传媒 | 国产av无码专区亚洲a∨毛片 | 国内少妇偷人精品视频 | 内射爽无广熟女亚洲 | 欧美老人巨大xxxx做受 | 久久久久久亚洲精品a片成人 | 97精品人妻一区二区三区香蕉 | 亚洲男女内射在线播放 | 国产麻豆精品一区二区三区v视界 | 人人妻人人澡人人爽欧美一区九九 | 男人的天堂2018无码 | 成人av无码一区二区三区 | 久久亚洲日韩精品一区二区三区 | 人妻插b视频一区二区三区 | 99久久精品日本一区二区免费 | 成熟女人特级毛片www免费 | 日日摸天天摸爽爽狠狠97 | 亚洲精品国产品国语在线观看 | 人人爽人人澡人人高潮 | 午夜免费福利小电影 | 毛片内射-百度 | 国产精品免费大片 | 激情亚洲一区国产精品 | 中文字幕人妻无码一区二区三区 | 无套内谢老熟女 | 亚洲娇小与黑人巨大交 | 国产亚洲日韩欧美另类第八页 | 欧美大屁股xxxxhd黑色 | 国产精品亚洲五月天高清 | 成人欧美一区二区三区 | 无码人妻丰满熟妇区毛片18 | 国产精品二区一区二区aⅴ污介绍 | 夜夜躁日日躁狠狠久久av | 丰满少妇熟乱xxxxx视频 | 大胆欧美熟妇xx | 伊在人天堂亚洲香蕉精品区 | 成人精品一区二区三区中文字幕 | 亚洲中文字幕无码一久久区 | 国产乱人偷精品人妻a片 | 午夜无码人妻av大片色欲 | 夜夜夜高潮夜夜爽夜夜爰爰 | 人妻少妇精品无码专区二区 | аⅴ资源天堂资源库在线 | 人妻无码αv中文字幕久久琪琪布 | 鲁一鲁av2019在线 | 中文字幕无码人妻少妇免费 | 亚洲人成影院在线无码按摩店 | 久久这里只有精品视频9 | 欧美熟妇另类久久久久久多毛 | 久久久婷婷五月亚洲97号色 | 熟妇人妻无乱码中文字幕 | 亚洲熟妇色xxxxx欧美老妇y | 欧美怡红院免费全部视频 | 夜夜躁日日躁狠狠久久av | 又大又紧又粉嫩18p少妇 | 国产精品毛多多水多 | 欧美自拍另类欧美综合图片区 | 国产三级精品三级男人的天堂 | 国产深夜福利视频在线 | 在线а√天堂中文官网 | 亚洲一区二区三区四区 | 午夜无码人妻av大片色欲 | 国产乱子伦视频在线播放 | 久久亚洲中文字幕精品一区 | 福利一区二区三区视频在线观看 | 特黄特色大片免费播放器图片 | 强辱丰满人妻hd中文字幕 | 免费看少妇作爱视频 | 日韩欧美群交p片內射中文 | 国产av一区二区精品久久凹凸 | 欧美zoozzooz性欧美 | 色偷偷人人澡人人爽人人模 | 1000部啪啪未满十八勿入下载 | 日本熟妇乱子伦xxxx | 乱中年女人伦av三区 | 欧美国产日韩久久mv | 精品亚洲成av人在线观看 | 天天拍夜夜添久久精品大 | 色综合久久久无码中文字幕 | 丰满人妻翻云覆雨呻吟视频 | 97久久超碰中文字幕 | 国产又爽又黄又刺激的视频 | 亚洲欧美日韩成人高清在线一区 | 国产美女精品一区二区三区 | 欧美兽交xxxx×视频 | 精品无码成人片一区二区98 | 国产av一区二区三区最新精品 | 装睡被陌生人摸出水好爽 | 熟妇女人妻丰满少妇中文字幕 | 成 人 网 站国产免费观看 | 久久精品国产99精品亚洲 | 欧美 亚洲 国产 另类 | 国产熟妇高潮叫床视频播放 | 波多野结衣乳巨码无在线观看 | 欧美 日韩 人妻 高清 中文 | 大地资源中文第3页 | 中文字幕av伊人av无码av | 妺妺窝人体色www在线小说 | 亚洲人成影院在线无码按摩店 | 国内精品九九久久久精品 | 精品国产成人一区二区三区 | 国产色视频一区二区三区 | 欧美午夜特黄aaaaaa片 | 九月婷婷人人澡人人添人人爽 | 亚洲人成网站免费播放 | 性生交大片免费看l | 国产做国产爱免费视频 | 国产人妻大战黑人第1集 | 日产精品99久久久久久 | 国产明星裸体无码xxxx视频 | 人妻无码久久精品人妻 | 精品夜夜澡人妻无码av蜜桃 | 娇妻被黑人粗大高潮白浆 | 99久久99久久免费精品蜜桃 | 国产偷国产偷精品高清尤物 | 97久久精品无码一区二区 | 亚洲综合精品香蕉久久网 | 国内精品人妻无码久久久影院 | 色情久久久av熟女人妻网站 | 精品无码国产一区二区三区av | 国产亚洲精品久久久久久久久动漫 | 日韩成人一区二区三区在线观看 | 国产精品无码一区二区桃花视频 | 免费视频欧美无人区码 | 激情五月综合色婷婷一区二区 | 日本欧美一区二区三区乱码 | 日韩精品无码一本二本三本色 | 中文字幕久久久久人妻 | 亚洲男人av天堂午夜在 | 色欲综合久久中文字幕网 | 成人精品天堂一区二区三区 | 精品久久综合1区2区3区激情 | 丝袜美腿亚洲一区二区 | 欧美freesex黑人又粗又大 | 国产成人综合在线女婷五月99播放 | 欧美日韩在线亚洲综合国产人 | 国产极品视觉盛宴 | 亚洲综合无码久久精品综合 | 亚洲精品午夜国产va久久成人 | 一区二区传媒有限公司 | 午夜精品一区二区三区的区别 | 免费人成在线视频无码 | 漂亮人妻洗澡被公强 日日躁 | 亚洲一区二区三区在线观看网站 | 亚洲欧美国产精品专区久久 | 亚洲人成影院在线无码按摩店 | 精品国产乱码久久久久乱码 | 国产精品久久国产精品99 | 日韩视频 中文字幕 视频一区 | 亚洲一区二区三区偷拍女厕 | 性生交大片免费看l | 日本www一道久久久免费榴莲 | 国产免费久久久久久无码 | 国産精品久久久久久久 | 日本大香伊一区二区三区 | 97色伦图片97综合影院 | 一本一道久久综合久久 | 久久亚洲日韩精品一区二区三区 | 亚洲一区二区三区国产精华液 | 欧美日韩一区二区综合 | 夜夜影院未满十八勿进 | 无码av免费一区二区三区试看 | 无套内谢的新婚少妇国语播放 | 欧美性生交活xxxxxdddd | 国产精品久久久av久久久 | 波多野结衣一区二区三区av免费 | 久久伊人色av天堂九九小黄鸭 | 性欧美牲交在线视频 | 一本色道久久综合狠狠躁 | 99精品国产综合久久久久五月天 | 丝袜美腿亚洲一区二区 | 中文字幕亚洲情99在线 | 中国女人内谢69xxxx | 装睡被陌生人摸出水好爽 | 中文字幕无码免费久久9一区9 | 亚洲日韩精品欧美一区二区 | 国产女主播喷水视频在线观看 | 亚洲人亚洲人成电影网站色 | 亚洲а∨天堂久久精品2021 | 色综合久久久无码中文字幕 | 一本大道久久东京热无码av | 亚洲国产av精品一区二区蜜芽 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲第一无码av无码专区 | 国产亚洲日韩欧美另类第八页 | 日日躁夜夜躁狠狠躁 | 久久综合激激的五月天 | 久久综合给久久狠狠97色 | 日本免费一区二区三区最新 | 精品水蜜桃久久久久久久 | 国产人妻精品午夜福利免费 | 亚洲精品成a人在线观看 | 亚洲最大成人网站 | 久久精品99久久香蕉国产色戒 | 红桃av一区二区三区在线无码av | 人人爽人人爽人人片av亚洲 | 日韩精品久久久肉伦网站 | 午夜成人1000部免费视频 | 欧美性生交活xxxxxdddd | 久久婷婷五月综合色国产香蕉 | 色婷婷av一区二区三区之红樱桃 | 国产精华av午夜在线观看 | 樱花草在线播放免费中文 | 人妻尝试又大又粗久久 | 东北女人啪啪对白 | 亚洲人成影院在线无码按摩店 | av小次郎收藏 | 久久综合给合久久狠狠狠97色 | 久9re热视频这里只有精品 | 日本一卡二卡不卡视频查询 | 精品一区二区不卡无码av | 国内精品九九久久久精品 | 婷婷综合久久中文字幕蜜桃三电影 | 男人的天堂av网站 | 少妇性荡欲午夜性开放视频剧场 | 麻豆果冻传媒2021精品传媒一区下载 | 人妻aⅴ无码一区二区三区 | 久久久精品国产sm最大网站 | 久久99国产综合精品 | 精品欧美一区二区三区久久久 | 18黄暴禁片在线观看 | 国产一精品一av一免费 | 国产性生交xxxxx无码 | 高潮毛片无遮挡高清免费 | 久久亚洲日韩精品一区二区三区 | 免费乱码人妻系列无码专区 | 免费人成网站视频在线观看 | 国产精品久久久久久久9999 | 色偷偷人人澡人人爽人人模 | 人人妻人人澡人人爽人人精品 | 奇米影视7777久久精品人人爽 | 国产性生大片免费观看性 | 77777熟女视频在线观看 а天堂中文在线官网 | 午夜时刻免费入口 | 国产精品igao视频网 | 又粗又大又硬又长又爽 | 久久综合久久自在自线精品自 | 国产av无码专区亚洲a∨毛片 | 岛国片人妻三上悠亚 | 国产片av国语在线观看 | 国产麻豆精品一区二区三区v视界 | 久久无码人妻影院 | 国产精品丝袜黑色高跟鞋 | 少妇厨房愉情理9仑片视频 | 强奷人妻日本中文字幕 | 日韩av激情在线观看 | 欧美午夜特黄aaaaaa片 | 一本大道久久东京热无码av | 无码人妻出轨黑人中文字幕 | 日本一卡2卡3卡四卡精品网站 | 国产成人一区二区三区在线观看 | 日本欧美一区二区三区乱码 | 国产av人人夜夜澡人人爽麻豆 | 牲欲强的熟妇农村老妇女 | 日韩视频 中文字幕 视频一区 | 亚洲国产精品久久久天堂 | 一区二区三区高清视频一 | 76少妇精品导航 | 永久免费观看美女裸体的网站 | 亚洲一区二区三区在线观看网站 | 荡女精品导航 | 欧美zoozzooz性欧美 | 久久99久久99精品中文字幕 | 99视频精品全部免费免费观看 | yw尤物av无码国产在线观看 | 午夜福利试看120秒体验区 | 未满小14洗澡无码视频网站 | 日韩少妇白浆无码系列 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产人成高清在线视频99最全资源 | 欧美人与善在线com | 亚洲精品午夜国产va久久成人 | 双乳奶水饱满少妇呻吟 | 亚洲熟熟妇xxxx | 最近的中文字幕在线看视频 | 久久国语露脸国产精品电影 | 免费看少妇作爱视频 | 成年女人永久免费看片 | 久久久久久亚洲精品a片成人 | 国产深夜福利视频在线 | 99久久久无码国产精品免费 | 国产卡一卡二卡三 | 亚洲色欲久久久综合网东京热 | 精品厕所偷拍各类美女tp嘘嘘 | 搡女人真爽免费视频大全 | 亚洲午夜久久久影院 | 偷窥日本少妇撒尿chinese | 东京热男人av天堂 | 丰满少妇高潮惨叫视频 | 国产精品99久久精品爆乳 | 狂野欧美性猛交免费视频 | 人人妻人人澡人人爽人人精品浪潮 | 免费国产黄网站在线观看 | 久久久久久久久888 | 欧美精品一区二区精品久久 | 亚洲欧洲中文日韩av乱码 | 亚洲国产一区二区三区在线观看 | 欧美亚洲日韩国产人成在线播放 | 一区二区三区高清视频一 | 对白脏话肉麻粗话av | 久久99精品国产麻豆蜜芽 | 丰满岳乱妇在线观看中字无码 | 国产精品久久久久久无码 | 久久国产精品萌白酱免费 | 夜夜高潮次次欢爽av女 | 97无码免费人妻超级碰碰夜夜 | 国産精品久久久久久久 | 成人精品天堂一区二区三区 | 超碰97人人射妻 | 无码av免费一区二区三区试看 | 日本在线高清不卡免费播放 | 人人澡人摸人人添 | 久9re热视频这里只有精品 | 西西人体www44rt大胆高清 | 亚洲国产一区二区三区在线观看 | 人人妻在人人 | 麻豆md0077饥渴少妇 | 国产真人无遮挡作爱免费视频 | 国产成人无码av片在线观看不卡 | 久久久亚洲欧洲日产国码αv | 无码帝国www无码专区色综合 | 国产成人精品必看 | 亚洲人成网站在线播放942 | 一本一道久久综合久久 | 久久99精品国产麻豆 | 精品人人妻人人澡人人爽人人 | 色欲久久久天天天综合网精品 | 欧美成人家庭影院 | 麻豆果冻传媒2021精品传媒一区下载 | 中文毛片无遮挡高清免费 | 对白脏话肉麻粗话av | 少妇邻居内射在线 | 精品无人国产偷自产在线 | 国产精品欧美成人 | 成人动漫在线观看 | 色偷偷人人澡人人爽人人模 | 色噜噜亚洲男人的天堂 | 国产免费久久久久久无码 | 国产热a欧美热a在线视频 | 无码成人精品区在线观看 | 国产精品久久久av久久久 | 又紧又大又爽精品一区二区 | 久久伊人色av天堂九九小黄鸭 | 国产无av码在线观看 | 自拍偷自拍亚洲精品被多人伦好爽 | 好屌草这里只有精品 | 国产国产精品人在线视 | 日本一区二区更新不卡 | 国产午夜无码精品免费看 | 中文字幕无码人妻少妇免费 | 国产麻豆精品一区二区三区v视界 | 风流少妇按摩来高潮 | 俺去俺来也在线www色官网 | 精品偷拍一区二区三区在线看 | 麻豆国产丝袜白领秘书在线观看 | 精品久久久久香蕉网 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 装睡被陌生人摸出水好爽 | 欧美激情内射喷水高潮 | 亚洲日韩精品欧美一区二区 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲成av人综合在线观看 | 日韩欧美成人免费观看 | 国产精品久久精品三级 | 大地资源中文第3页 | 图片区 小说区 区 亚洲五月 | 久久久中文字幕日本无吗 | 久久国产精品精品国产色婷婷 | 日本大乳高潮视频在线观看 | 377p欧洲日本亚洲大胆 | 国产成人无码av片在线观看不卡 | 蜜臀aⅴ国产精品久久久国产老师 | 久久人人爽人人人人片 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 99久久亚洲精品无码毛片 | 精品国产麻豆免费人成网站 | 成人免费视频在线观看 | 永久黄网站色视频免费直播 | 在线精品国产一区二区三区 | 3d动漫精品啪啪一区二区中 | 亚洲s码欧洲m码国产av | 国产成人精品一区二区在线小狼 | 帮老师解开蕾丝奶罩吸乳网站 | 无码人妻出轨黑人中文字幕 | 福利一区二区三区视频在线观看 | 亚洲一区二区观看播放 | 亚洲精品中文字幕 | 狠狠综合久久久久综合网 | 亚洲精品国产品国语在线观看 | 荫蒂添的好舒服视频囗交 | 欧美老妇交乱视频在线观看 | 亚洲国产精品一区二区美利坚 | 亚洲精品一区二区三区在线 | 亚洲综合另类小说色区 | 性做久久久久久久免费看 | 国产精品久久久久影院嫩草 | 少妇无码av无码专区在线观看 | 中国大陆精品视频xxxx | 国产色精品久久人妻 | 丰满肥臀大屁股熟妇激情视频 | 无码人妻丰满熟妇区毛片18 | 久久综合久久自在自线精品自 | 国精品人妻无码一区二区三区蜜柚 | 精品无人区无码乱码毛片国产 | 亚洲春色在线视频 | 国产香蕉尹人视频在线 | 亚洲国产精品一区二区第一页 | 日韩少妇白浆无码系列 | 日本xxxx色视频在线观看免费 | 搡女人真爽免费视频大全 | 精品久久综合1区2区3区激情 | 国内少妇偷人精品视频免费 | 高潮毛片无遮挡高清免费 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 伊人久久大香线蕉av一区二区 | 99久久久无码国产精品免费 | 久久国产精品偷任你爽任你 | 成人精品天堂一区二区三区 | 日日噜噜噜噜夜夜爽亚洲精品 | 特级做a爰片毛片免费69 | 日韩人妻无码一区二区三区久久99 | 久久久精品456亚洲影院 | 熟妇女人妻丰满少妇中文字幕 | 波多野42部无码喷潮在线 | 亚洲а∨天堂久久精品2021 | 国产精品久久久久无码av色戒 | 国产真人无遮挡作爱免费视频 | 精品久久综合1区2区3区激情 | 伊人久久大香线蕉午夜 | 欧美肥老太牲交大战 | 麻豆av传媒蜜桃天美传媒 | 在线欧美精品一区二区三区 | 性欧美熟妇videofreesex | 一二三四在线观看免费视频 | 久久精品女人天堂av免费观看 | 丰腴饱满的极品熟妇 | 老子影院午夜伦不卡 | 国产成人无码一二三区视频 | 欧美老妇交乱视频在线观看 | a在线亚洲男人的天堂 | 无码av最新清无码专区吞精 | 内射巨臀欧美在线视频 | 婷婷丁香五月天综合东京热 | 成人精品一区二区三区中文字幕 | 精品水蜜桃久久久久久久 | 日本www一道久久久免费榴莲 | 伊在人天堂亚洲香蕉精品区 | 99久久精品国产一区二区蜜芽 | 国产亚洲精品久久久ai换 | 国产精品鲁鲁鲁 | 久久久精品人妻久久影视 | 东京热一精品无码av | 无码人妻少妇伦在线电影 | 国产乱人偷精品人妻a片 | 国产午夜精品一区二区三区嫩草 | 欧美日韩久久久精品a片 | 亚洲精品无码人妻无码 | 国产精品无码永久免费888 | 欧美丰满熟妇xxxx | 久久国内精品自在自线 | 在线精品亚洲一区二区 | 亚洲爆乳无码专区 | 久久人妻内射无码一区三区 | 日本精品人妻无码77777 天堂一区人妻无码 | 日日鲁鲁鲁夜夜爽爽狠狠 | 天下第一社区视频www日本 | 十八禁真人啪啪免费网站 | 男女性色大片免费网站 | 久久精品中文字幕大胸 | 久久综合久久自在自线精品自 | 亚洲 高清 成人 动漫 | 人妻aⅴ无码一区二区三区 | 国产精品无码一区二区桃花视频 | 欧美精品一区二区精品久久 | 少妇性荡欲午夜性开放视频剧场 | 真人与拘做受免费视频 | 国产亚av手机在线观看 | 日韩精品久久久肉伦网站 | 学生妹亚洲一区二区 | 性生交片免费无码看人 | 日本精品少妇一区二区三区 | 少妇无码一区二区二三区 | 亚洲国产av精品一区二区蜜芽 | 亚洲国产av美女网站 | 亚洲经典千人经典日产 | 四十如虎的丰满熟妇啪啪 | 思思久久99热只有频精品66 | 成人免费视频视频在线观看 免费 | 成人无码精品1区2区3区免费看 | 亚洲日本va中文字幕 | 国产午夜手机精彩视频 | 欧美日韩人成综合在线播放 | 成人亚洲精品久久久久软件 | 精品无码国产自产拍在线观看蜜 | 国内精品久久久久久中文字幕 | 亚洲国产欧美在线成人 | 亚洲国产综合无码一区 | 一二三四社区在线中文视频 | 精品国偷自产在线 | √8天堂资源地址中文在线 | 国产精品久久久久久无码 | 性欧美疯狂xxxxbbbb | 福利一区二区三区视频在线观看 | 国产精品a成v人在线播放 | 国产av无码专区亚洲awww | 无码人妻久久一区二区三区不卡 | 大地资源网第二页免费观看 | 综合人妻久久一区二区精品 | 国产精品多人p群无码 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲国产日韩a在线播放 | 特级做a爰片毛片免费69 | 国产av无码专区亚洲awww | 色欲久久久天天天综合网精品 | 三级4级全黄60分钟 | 欧美阿v高清资源不卡在线播放 | 97夜夜澡人人双人人人喊 | 欧美高清在线精品一区 | 天海翼激烈高潮到腰振不止 | 免费看男女做好爽好硬视频 | 亚洲欧美日韩综合久久久 | 精品国产麻豆免费人成网站 | 国产高清av在线播放 | 真人与拘做受免费视频一 | 亚洲精品久久久久久一区二区 | 中文字幕无码av激情不卡 | 久久人妻内射无码一区三区 | 久久久久久亚洲精品a片成人 | 熟女少妇在线视频播放 | 色 综合 欧美 亚洲 国产 | 熟女少妇在线视频播放 | 老子影院午夜精品无码 | 亚拍精品一区二区三区探花 | 丰满诱人的人妻3 | 亚洲精品午夜无码电影网 | 亚洲精品国产精品乱码视色 | 97精品人妻一区二区三区香蕉 | 国产免费观看黄av片 | 亚洲爆乳大丰满无码专区 | 无码av免费一区二区三区试看 | 六十路熟妇乱子伦 | 午夜熟女插插xx免费视频 | 久久精品女人的天堂av | 四十如虎的丰满熟妇啪啪 | 精品乱子伦一区二区三区 | 亚洲欧洲日本综合aⅴ在线 | 狠狠色欧美亚洲狠狠色www | 夫妻免费无码v看片 | 精品国偷自产在线 | 免费视频欧美无人区码 | 熟女体下毛毛黑森林 | 中文字幕精品av一区二区五区 | 亚洲人亚洲人成电影网站色 | 给我免费的视频在线观看 | 欧美黑人乱大交 | 东京热一精品无码av | 亚洲精品综合一区二区三区在线 | 在线亚洲高清揄拍自拍一品区 | 精品久久久无码人妻字幂 | 真人与拘做受免费视频一 | 欧美丰满熟妇xxxx | 国产精品手机免费 | 美女极度色诱视频国产 | 香蕉久久久久久av成人 | aa片在线观看视频在线播放 | 自拍偷自拍亚洲精品被多人伦好爽 | 免费人成在线视频无码 | 国产精品美女久久久 | 久久久无码中文字幕久... | 天堂一区人妻无码 | 国产内射爽爽大片视频社区在线 | 成人无码视频在线观看网站 | 自拍偷自拍亚洲精品被多人伦好爽 | 国产成人综合色在线观看网站 | 国产九九九九九九九a片 | a国产一区二区免费入口 | 任你躁国产自任一区二区三区 | 国产午夜福利亚洲第一 | 日日摸天天摸爽爽狠狠97 | 乱码av麻豆丝袜熟女系列 | 狠狠躁日日躁夜夜躁2020 | 夜夜高潮次次欢爽av女 | 国产在热线精品视频 | 免费无码肉片在线观看 | 亚洲人成网站色7799 | 欧美zoozzooz性欧美 | 亚洲精品久久久久中文第一幕 | 亚洲色欲色欲天天天www | 国产亲子乱弄免费视频 | 亚洲精品综合一区二区三区在线 | 亚洲经典千人经典日产 | 色五月五月丁香亚洲综合网 | 欧美激情内射喷水高潮 | 欧洲熟妇色 欧美 | 最近中文2019字幕第二页 | 成熟人妻av无码专区 | 国产色精品久久人妻 | 丰满妇女强制高潮18xxxx | 久久国产自偷自偷免费一区调 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲日韩中文字幕在线播放 | 久久熟妇人妻午夜寂寞影院 | 伊人久久婷婷五月综合97色 | 国产亚洲精品久久久ai换 | 无码人妻精品一区二区三区不卡 | 欧美兽交xxxx×视频 | 丰满少妇熟乱xxxxx视频 | 国产在线无码精品电影网 | 性欧美熟妇videofreesex | 2019午夜福利不卡片在线 | 国产三级久久久精品麻豆三级 | 色欲av亚洲一区无码少妇 | 女高中生第一次破苞av | 俄罗斯老熟妇色xxxx | 日韩av激情在线观看 | 久久这里只有精品视频9 | 无码帝国www无码专区色综合 | 国产在线精品一区二区三区直播 | 丰满妇女强制高潮18xxxx | 一个人看的www免费视频在线观看 | 亚洲日本一区二区三区在线 | 白嫩日本少妇做爰 | 国产成人无码区免费内射一片色欲 | 欧美性生交活xxxxxdddd | 国产精品亚洲综合色区韩国 | 人妻无码αv中文字幕久久琪琪布 | 内射爽无广熟女亚洲 | 亚洲色欲色欲欲www在线 | 国产高清av在线播放 | 老头边吃奶边弄进去呻吟 | 国产国语老龄妇女a片 | 国产网红无码精品视频 | 国产亚洲精品久久久久久久 | 亚洲精品无码国产 | 亚洲性无码av中文字幕 | 国产精品怡红院永久免费 | 日本熟妇大屁股人妻 | 午夜无码区在线观看 | 丰满人妻精品国产99aⅴ | 亚洲熟妇色xxxxx亚洲 | 漂亮人妻洗澡被公强 日日躁 | 亚洲午夜无码久久 | 亚洲中文字幕乱码av波多ji | 亚洲精品欧美二区三区中文字幕 | 国产午夜福利100集发布 | 国产av一区二区三区最新精品 | 日本一卡2卡3卡四卡精品网站 | 欧美猛少妇色xxxxx | 久久亚洲精品中文字幕无男同 | 国产精品自产拍在线观看 | 丰满岳乱妇在线观看中字无码 | 久久久无码中文字幕久... | 亚洲日韩av片在线观看 | 日日碰狠狠丁香久燥 | 清纯唯美经典一区二区 | 中文字幕日韩精品一区二区三区 | 欧美野外疯狂做受xxxx高潮 | 国产成人精品三级麻豆 | 无码免费一区二区三区 | 国产免费久久久久久无码 | 欧美freesex黑人又粗又大 | 青青青手机频在线观看 | 国产精品a成v人在线播放 | 无码成人精品区在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 亚洲爆乳无码专区 | 久久亚洲日韩精品一区二区三区 | 国产一区二区三区精品视频 | 亚洲综合伊人久久大杳蕉 | 亚洲熟妇色xxxxx欧美老妇 | 精品亚洲成av人在线观看 | 久久视频在线观看精品 | 乱人伦中文视频在线观看 | 日日干夜夜干 | 国产激情无码一区二区 | 亚洲日韩av一区二区三区中文 | 国产做国产爱免费视频 | 久久国产精品萌白酱免费 | 国产精品无码久久av | 乱码av麻豆丝袜熟女系列 | 蜜臀aⅴ国产精品久久久国产老师 | av无码电影一区二区三区 | 99久久久无码国产aaa精品 | 欧美人妻一区二区三区 | 欧美日韩一区二区三区自拍 | 国产成人精品视频ⅴa片软件竹菊 | 国产精品va在线观看无码 | 亚洲精品一区二区三区四区五区 | 久久久精品456亚洲影院 | 欧美freesex黑人又粗又大 | 一本久久伊人热热精品中文字幕 | 亚洲欧洲日本综合aⅴ在线 | 青草视频在线播放 | 中文字幕日韩精品一区二区三区 | 男人和女人高潮免费网站 | 日韩精品a片一区二区三区妖精 | 巨爆乳无码视频在线观看 | 国产精品久久久久9999小说 | 性开放的女人aaa片 | 麻豆蜜桃av蜜臀av色欲av | 久久久精品国产sm最大网站 | 欧美亚洲国产一区二区三区 | 无码一区二区三区在线 | 狠狠色噜噜狠狠狠7777奇米 | 东京无码熟妇人妻av在线网址 | 女人被男人爽到呻吟的视频 | 欧美怡红院免费全部视频 | 久久综合久久自在自线精品自 | 熟妇人妻无乱码中文字幕 | 丰满少妇弄高潮了www | 麻豆md0077饥渴少妇 | 无码纯肉视频在线观看 | 日产精品高潮呻吟av久久 | 久久久国产精品无码免费专区 | 亚洲爆乳大丰满无码专区 | 久久久久成人精品免费播放动漫 | 无码av中文字幕免费放 | 久久国语露脸国产精品电影 | 无码人妻黑人中文字幕 | 亚洲一区二区三区 | 成人免费视频一区二区 | 波多野结衣乳巨码无在线观看 | 中文字幕色婷婷在线视频 | 亚洲中文字幕无码一久久区 | 亚洲国产成人av在线观看 | 国产黄在线观看免费观看不卡 | 日日鲁鲁鲁夜夜爽爽狠狠 | 在线观看欧美一区二区三区 | 国产成人久久精品流白浆 | 熟女少妇人妻中文字幕 | 日韩精品一区二区av在线 | 少妇的肉体aa片免费 | 久久国产精品偷任你爽任你 | 亚洲成av人影院在线观看 | 久久亚洲中文字幕精品一区 | 久久无码中文字幕免费影院蜜桃 | 国产欧美熟妇另类久久久 | 亚洲人成网站在线播放942 | 精品久久久无码中文字幕 | 亚洲七七久久桃花影院 | 国产亚洲视频中文字幕97精品 | 国产精品第一区揄拍无码 | 国产精品久久国产精品99 | 日本免费一区二区三区最新 | 爽爽影院免费观看 | aⅴ在线视频男人的天堂 | 老子影院午夜精品无码 | 亚洲中文无码av永久不收费 | 狂野欧美性猛交免费视频 | 欧美人与禽猛交狂配 | 精品人妻中文字幕有码在线 | 国产深夜福利视频在线 | 成人免费视频一区二区 | 亚洲色欲久久久综合网东京热 | 欧美自拍另类欧美综合图片区 | 久久久久免费看成人影片 | 久久综合久久自在自线精品自 | 狠狠色欧美亚洲狠狠色www | 久久久精品456亚洲影院 | 人人爽人人爽人人片av亚洲 | 日本肉体xxxx裸交 | 亚洲国产精品久久久久久 | 亚洲人亚洲人成电影网站色 | 国产福利视频一区二区 | 丰满少妇熟乱xxxxx视频 | 精品国产国产综合精品 | 久久久久国色av免费观看性色 | 正在播放东北夫妻内射 | 一本久道久久综合狠狠爱 | 福利一区二区三区视频在线观看 | 丰满少妇女裸体bbw | 久久精品人妻少妇一区二区三区 | 在线观看欧美一区二区三区 | 动漫av一区二区在线观看 | 四虎永久在线精品免费网址 | 亚洲小说春色综合另类 | 国产成人无码区免费内射一片色欲 | 国产精品igao视频网 | 亚洲人成网站在线播放942 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久国产自偷自偷免费一区调 | 国产精品香蕉在线观看 | 国产亚洲tv在线观看 | 极品嫩模高潮叫床 | 久久这里只有精品视频9 | 乱人伦中文视频在线观看 | 亚洲人成网站在线播放942 | 鲁大师影院在线观看 | 久久综合激激的五月天 | 又湿又紧又大又爽a视频国产 | 久精品国产欧美亚洲色aⅴ大片 | 两性色午夜视频免费播放 | 久久熟妇人妻午夜寂寞影院 | 久久久久国色av免费观看性色 | 久久99热只有频精品8 | 无码人妻精品一区二区三区不卡 | 精品一区二区三区无码免费视频 | 国产精品无套呻吟在线 | 国产精品久久久久影院嫩草 | 久久国产36精品色熟妇 | 亚洲中文字幕在线无码一区二区 | 精品无码国产一区二区三区av | 欧美丰满熟妇xxxx性ppx人交 | 日韩精品无码一区二区中文字幕 | 理论片87福利理论电影 | 久久久久免费看成人影片 | aa片在线观看视频在线播放 | 人人爽人人澡人人人妻 | 日韩av无码一区二区三区不卡 | 999久久久国产精品消防器材 | 激情爆乳一区二区三区 | 国产激情艳情在线看视频 | 九九综合va免费看 | 亚洲成av人片天堂网无码】 | 中文字幕av日韩精品一区二区 | 婷婷丁香五月天综合东京热 | 中文字幕无码乱人伦 | 成人aaa片一区国产精品 | 伊人久久大香线蕉av一区二区 | aa片在线观看视频在线播放 | 少妇人妻偷人精品无码视频 | 国产偷自视频区视频 | 黑人大群体交免费视频 | 国产成人精品久久亚洲高清不卡 | 国产成人综合美国十次 | 高清无码午夜福利视频 | 欧美怡红院免费全部视频 | 亚洲国产精品美女久久久久 | 又黄又爽又色的视频 | 狂野欧美性猛xxxx乱大交 | 国产超碰人人爽人人做人人添 | 正在播放东北夫妻内射 | 成熟人妻av无码专区 | 大地资源网第二页免费观看 | 1000部啪啪未满十八勿入下载 | 久久国产精品_国产精品 | 国产成人无码专区 | 亚洲高清偷拍一区二区三区 | 久久精品国产99久久6动漫 | 一本色道婷婷久久欧美 | 免费无码av一区二区 | 亚洲高清偷拍一区二区三区 | 国产香蕉尹人视频在线 | 国产成人人人97超碰超爽8 | 水蜜桃av无码 | 久久久精品456亚洲影院 | 性做久久久久久久免费看 | 麻豆国产人妻欲求不满谁演的 | 久久精品国产一区二区三区肥胖 | 成人免费无码大片a毛片 | 久久99国产综合精品 | 成人性做爰aaa片免费看不忠 | 日本肉体xxxx裸交 | 四虎永久在线精品免费网址 | 国产av剧情md精品麻豆 | 亚洲热妇无码av在线播放 | 中文字幕av伊人av无码av | 老子影院午夜精品无码 | 色一情一乱一伦一区二区三欧美 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 天天躁日日躁狠狠躁免费麻豆 | 欧美亚洲日韩国产人成在线播放 | 99riav国产精品视频 | 中国女人内谢69xxxxxa片 | 午夜精品久久久久久久 | 国产午夜亚洲精品不卡 | 国产成人无码a区在线观看视频app | 在教室伦流澡到高潮hnp视频 | 国产精品国产自线拍免费软件 | 人妻人人添人妻人人爱 | 无套内射视频囯产 | 亚洲精品一区三区三区在线观看 | 精品夜夜澡人妻无码av蜜桃 | 青青久在线视频免费观看 | 国产午夜无码精品免费看 | 国内少妇偷人精品视频 | 欧美真人作爱免费视频 | 在线播放无码字幕亚洲 | 亚洲精品欧美二区三区中文字幕 | 成人精品一区二区三区中文字幕 | 无码中文字幕色专区 | 亚洲自偷自偷在线制服 | 77777熟女视频在线观看 а天堂中文在线官网 | 久久99精品国产.久久久久 | 亚洲精品综合一区二区三区在线 | 又黄又爽又色的视频 | 乱人伦中文视频在线观看 | 亚洲国产精品一区二区美利坚 | 青春草在线视频免费观看 | 露脸叫床粗话东北少妇 | 国内综合精品午夜久久资源 | 亚洲综合色区中文字幕 | 国产欧美亚洲精品a | 免费无码肉片在线观看 | 欧美真人作爱免费视频 | 国产精品99爱免费视频 | 久久国产劲爆∧v内射 | 在线欧美精品一区二区三区 | 中文字幕精品av一区二区五区 | 强奷人妻日本中文字幕 | 中国大陆精品视频xxxx | 国产香蕉尹人综合在线观看 | 熟女俱乐部五十路六十路av | 国产精品a成v人在线播放 | 美女毛片一区二区三区四区 | 国内精品人妻无码久久久影院蜜桃 | 秋霞成人午夜鲁丝一区二区三区 | 久久久精品国产sm最大网站 | 狠狠综合久久久久综合网 | 久久国内精品自在自线 | 免费中文字幕日韩欧美 | 伊人色综合久久天天小片 | 国产又粗又硬又大爽黄老大爷视 | 久久综合狠狠综合久久综合88 | 欧美 亚洲 国产 另类 | 国产精品福利视频导航 | 久久精品中文字幕一区 | 亚洲成色在线综合网站 | 亚洲性无码av中文字幕 | 国产猛烈高潮尖叫视频免费 | 欧美国产亚洲日韩在线二区 | 日韩欧美中文字幕在线三区 | 欧美猛少妇色xxxxx | 人人爽人人澡人人人妻 | 日产精品高潮呻吟av久久 | 我要看www免费看插插视频 | 亚洲熟妇色xxxxx欧美老妇y | 欧美日韩视频无码一区二区三 | aⅴ亚洲 日韩 色 图网站 播放 | 人人妻人人澡人人爽欧美一区九九 | 亚洲日韩av片在线观看 | 成人女人看片免费视频放人 | 中文字幕无码人妻少妇免费 | 欧美freesex黑人又粗又大 | 永久黄网站色视频免费直播 | 国产人妻人伦精品 | 十八禁视频网站在线观看 | 亚洲熟妇自偷自拍另类 | 特黄特色大片免费播放器图片 | 99久久精品无码一区二区毛片 | 清纯唯美经典一区二区 | 四虎4hu永久免费 | 欧洲精品码一区二区三区免费看 | 精品欧美一区二区三区久久久 | 成 人 网 站国产免费观看 | 成人三级无码视频在线观看 | 久热国产vs视频在线观看 | 粉嫩少妇内射浓精videos | 色欲综合久久中文字幕网 | 国产精品.xx视频.xxtv | 久久无码中文字幕免费影院蜜桃 | 乌克兰少妇xxxx做受 | 99久久人妻精品免费一区 | 久久午夜夜伦鲁鲁片无码免费 | 午夜福利试看120秒体验区 | 亚洲性无码av中文字幕 | 双乳奶水饱满少妇呻吟 | 精品国产一区二区三区av 性色 | 两性色午夜免费视频 | 国内综合精品午夜久久资源 | 日韩视频 中文字幕 视频一区 | 日本精品人妻无码77777 天堂一区人妻无码 | 国产精品无套呻吟在线 | www国产亚洲精品久久久日本 | 国产尤物精品视频 | 爽爽影院免费观看 | 中文字幕 亚洲精品 第1页 | 女人色极品影院 | 无码人妻出轨黑人中文字幕 | 国产又爽又黄又刺激的视频 | 国产超级va在线观看视频 | 娇妻被黑人粗大高潮白浆 | 国产无遮挡吃胸膜奶免费看 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲一区二区三区在线观看网站 | 国产精品va在线观看无码 | 日日橹狠狠爱欧美视频 | 图片区 小说区 区 亚洲五月 | 日日橹狠狠爱欧美视频 | 欧美精品在线观看 | 国产成人午夜福利在线播放 | 国产麻豆精品一区二区三区v视界 | 日韩精品无码免费一区二区三区 | 97人妻精品一区二区三区 | 亚洲成a人一区二区三区 | 久久亚洲a片com人成 | 国产人妻人伦精品1国产丝袜 | 天天拍夜夜添久久精品 | 国产激情综合五月久久 | 少妇无套内谢久久久久 | 色综合久久中文娱乐网 | 无码人妻丰满熟妇区毛片18 | 欧美亚洲国产一区二区三区 | 综合网日日天干夜夜久久 | 伊人久久婷婷五月综合97色 | 中文无码成人免费视频在线观看 | 强伦人妻一区二区三区视频18 | 伊人久久大香线蕉av一区二区 | 成人无码影片精品久久久 | 人妻少妇精品无码专区动漫 | 日韩少妇白浆无码系列 | 国产精品igao视频网 | 亚洲中文字幕乱码av波多ji | 久久99精品久久久久久动态图 | 国产午夜福利亚洲第一 | 大色综合色综合网站 | 女人被爽到呻吟gif动态图视看 | 久久久久亚洲精品男人的天堂 | 2019nv天堂香蕉在线观看 | 骚片av蜜桃精品一区 | 中文字幕av无码一区二区三区电影 | 亚洲色欲久久久综合网东京热 | 又粗又大又硬毛片免费看 | 欧美精品免费观看二区 | 成人精品一区二区三区中文字幕 | 免费观看又污又黄的网站 | 欧美日韩久久久精品a片 | 成人欧美一区二区三区 | 激情亚洲一区国产精品 | 亚洲中文字幕在线观看 | 中文字幕乱码中文乱码51精品 | ass日本丰满熟妇pics | 少妇愉情理伦片bd | 一区二区三区高清视频一 | www国产亚洲精品久久网站 | 初尝人妻少妇中文字幕 | 日韩人妻无码中文字幕视频 | 在线视频网站www色 | 又大又硬又黄的免费视频 | 中文字幕人妻无码一区二区三区 | 久久精品国产亚洲精品 | 中国大陆精品视频xxxx | 精品无码一区二区三区的天堂 | 欧美熟妇另类久久久久久不卡 | 高清无码午夜福利视频 | 国产极品美女高潮无套在线观看 | 亚洲成在人网站无码天堂 | 欧美精品免费观看二区 | 日本一本二本三区免费 | 毛片内射-百度 | 日日摸夜夜摸狠狠摸婷婷 | 久久综合九色综合欧美狠狠 | 欧美日韩精品 | 久久久精品国产sm最大网站 | √天堂中文官网8在线 | 玩弄少妇高潮ⅹxxxyw | 玩弄少妇高潮ⅹxxxyw | 中文字幕无码av激情不卡 | 人人妻人人澡人人爽人人精品 | 成熟人妻av无码专区 | 欧美日本精品一区二区三区 | 久久午夜无码鲁丝片午夜精品 | 精品 日韩 国产 欧美 视频 | 免费国产黄网站在线观看 | 亚洲欧美色中文字幕在线 | 久久aⅴ免费观看 | 奇米影视7777久久精品 | 国产无套内射久久久国产 | 午夜免费福利小电影 | 久久精品女人天堂av免费观看 | 亚洲精品一区二区三区在线 | 丝袜 中出 制服 人妻 美腿 | 蜜臀av在线播放 久久综合激激的五月天 | 亚洲欧美日韩国产精品一区二区 | 久久99精品久久久久久 | 九九热爱视频精品 | 国产suv精品一区二区五 | 麻豆md0077饥渴少妇 | 亚洲成a人片在线观看无码 | 波多野结衣乳巨码无在线观看 | 乱人伦人妻中文字幕无码 | 男女下面进入的视频免费午夜 | 国产激情无码一区二区 | 夜夜影院未满十八勿进 | 久久aⅴ免费观看 | 久久久久久久人妻无码中文字幕爆 | 欧美激情内射喷水高潮 | 97夜夜澡人人双人人人喊 |