精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Linux Makefile介紹自動編譯和鏈接

運維 系統運維
Linux Makefile是用于自動編譯和鏈接的,一個工程有很多文件組成,每一個文件的改變都會導致工程的重新鏈接,但是不是所有的文件都需要重新編譯,Makefile中紀錄有文件的信息,在make時會決定在鏈接的時候需要重新編譯哪些文件。

特別值得一提的是Linux Makefile有很多值得學習的地方,這里我們主要介紹Linux Makefile,包括介紹Linux Makefile等方面。作為Linux下的程序開發人員,大家一定都遇到過Linux Makefile,用make命令來編譯自己寫的程序確實是很方便。一般情況下,大家都是手工寫一個簡單Makefile,如果要想寫出一個符合自由軟件慣例的Makefile就不那么容易了。

在本文中,將給大家介紹如何使用autoconf和automake兩個工具來幫助我們自動地生成符合自由軟件慣例的Makefile,這樣就可以象常見的GNU程序一樣,只要使用“./configure”,“make”,“make instal”就可以把程序安裝到Linux系統中去了。這將特別適合想做開放源代碼軟件的程序開發人員,又或如果你只是自己寫些小的Toy程序,那么這個文章對你也會有很大的幫助。

一、Linux Makefile介紹

Linux Makefile是用于自動編譯和鏈接的,一個工程有很多文件組成,每一個文件的改變都會導致工程的重新鏈接,但是不是所有的文件都需要重新編譯,Makefile中紀錄有文件的信息,在make時會決定在鏈接的時候需要重新編譯哪些文件。

Linux Makefile的宗旨就是:讓編譯器知道要編譯一個文件需要依賴其他的哪些文件。當那些依賴文件有了改變,編譯器會自動的發現最終的生成文件已經過時,而重新編譯相應的模塊。

Linux Makefile的基本結構不是很復雜,但當一個程序開發人員開始寫Linux Makefile時,經常會懷疑自己寫的是否符合慣例,而且自己寫的 Makefile經常和自己的開發環境相關聯,當系統環境變量或路徑發生了變化后,Linux Makefile可能還 判薷摹U庋馱斐閃聳止な樾碝akefile的諸多問題,automake恰好能很好地幫助我們解決這些問題。

使用automake,程序開發人員只需要寫一些簡單的含有預定義宏的文件,由autoconf根據一個宏文件生成configure,由automake根據另一個宏文件生成 Makefile.in,再使用configure依據Makefile.in來生成一個符合慣例的Linux Makefile。下面我們將詳細介紹Linux Makefile的automake生成方法。

二、使用的環境

本文所提到的程序是基于Linux發行版本:Fedora Core release 1,它包含了我們要用到的autoconf,automake。

三、從helloworld入手

我們從大家最常使用的例子程序helloworld開始。下面的過程如果簡單地說來就是:新建三個文件:

  1. helloworld.c  
  2. configure.in  
  3. Makefile.am 

然后執行:aclocal; autoconf; automake --add-missing; ./configure; make; ./helloworld 就可以看到Linux Makefile被產生出來,而且可以將helloworld.c編譯通過。很簡單吧,幾條命令就可以做出一個符合慣例的Linux Makefile,感覺如何呀。

現在開始介紹詳細的過程:

1、建目錄

在你的工作目錄下建一個helloworld目錄,我們用它來存放helloworld程序及相關文件,如在/home/my/build下:

  1. $ mkdir helloword  
  2. $ cd helloworld  

2、 helloworld.c

然后用你自己最喜歡的編輯器寫一個hellowrold.c文件,如命令:vi helloworld.c。使用下面的代碼作為helloworld.c的內容。

  1. int main(int argc, char** argv)  
  2. {  
  3. printf("Hello, Linux World!\n");  
  4. return 0;  
  5. }  

完成后保存退出。現在在helloworld目錄下就應該有一個你自己寫的helloworld.c了。

3、生成configure

我們使用autoscan命令來幫助我們根據目錄下的源代碼生成一個configure.in的模板文件。
命令:

  1. $ autoscan  
  2. $ ls  
  3. configure.scan helloworld.c 

執行后在hellowrold目錄下會生成一個文件:configure.scan,我們可以拿它作為configure.in的藍本。現在將configure.scan改名為configure.in,并且編輯它,按下面的內容修改,去掉無關的語句:

  1. ============================configure.in內容開始=========================================  
  2. # -*- Autoconf -*-  
  3. # Process this file with autoconf to produce a configure script.  
  4.  
  5. AC_INIT(helloworld.c)  
  6. AM_INIT_AUTOMAKE(helloworld, 1.0)  
  7.  
  8. # Checks for programs.  
  9. AC_PROG_CC  
  10.  
  11. # Checks for libraries.  
  12.  
  13. # Checks for header files.  
  14.  
  15. # Checks for typedefs, structures, and compiler characteristics.  
  16.  
  17. # Checks for library functions.  
  18. AC_OUTPUT(Makefile)  
  19. ============================configure.in內容結束=========================================   

然后執行命令aclocal和autoconf,分別會產生aclocal.m4及configure兩個文件:

  1. $ aclocal   
  2. $ls   
  3. aclocal.m4 configure.in helloworld.c   
  4. $ autoconf   
  5. $ ls   
  6. aclocal.m4 autom4te.cache configure configure.in helloworld.c  

大家可以看到configure.in內容是一些宏定義,這些宏經autoconf處理后會變成檢查系統特性、環境變量、軟件必須的參數的shell腳本。autoconf 是用來生成自動配置軟件源代碼腳本(configure)的工具。configure腳本能獨立于autoconf運行,且在運行的過程中,不需要用戶的干預。

要生成configure文件,你必須告訴autoconf如何找到你所用的宏。方式是使用aclocal程序來生成你的aclocal.m4。aclocal根據configure.in文件的內容,自動生成aclocal.m4文件。aclocal是一個perl 腳本程序,它的定義是:“aclocal - create aclocal.m4 by scanning configure.ac”。

autoconf從configure.in這個列舉編譯軟件時所需要各種參數的模板文件中創建configure。autoconf需要GNU m4宏處理器來處理aclocal.m4,生成configure腳本。m4是一個宏處理器。

將輸入拷貝到輸出,同時將宏展開。宏可以是內嵌的,也可以是用戶定義的。除了可以展開宏,m4還有一些內建的函數,用來引用文件,執行命令,整數運算,文本操作,循環等。m4既可以作為編譯器的前端,也可以單獨作為一個宏處理器。

4、新建Linux Makefile.am新建Makefile.am文件,命令:$ vi Makefile.am 內容如下:

  1. AUTOMAKE_OPTIONS=foreign 
  2. bin_PROGRAMS=helloworld 
  3. helloworldhelloworld_SOURCES=helloworld.c  

automake會根據你寫的Linux Makefilee.am來自動生成Makefile.in。Makefile.am中定義的宏和目標,會指導automake生成指定的代碼。例如,宏bin_PROGRAMS將導致編譯和連接的目標被生成。

5、運行automake命令:

  1. $ automake --add-missing  
  2. configure.in: installing `./install-sh'  
  3. configure.in: installing `./mkinstalldirs'  
  4. configure.in: installing `./missing'  
  5. Makefile.am: installing `./depcomp'  

automake會根據Linux Makefile.am文件產生一些文件,包含最重要的Makefile.in。

6、執行configure生成Makefile

  1. $ ./configure   
  2. checking for a BSD-compatible install... /usr/bin/install -c  
  3. checking whether build environment is sane... yes  
  4. checking for gawk... gawk  
  5. checking whether make sets $(MAKE)... yes  
  6. checking for gcc... gcc  
  7. checking for C compiler default output... a.out  
  8. checking whether the C compiler works... yes  
  9. checking whether we are cross compiling... no  
  10. checking for suffix of executables...   
  11. checking for suffix of object files... o  
  12. checking whether we are using the GNU C compiler... yes  
  13. checking whether gcc accepts -g... yes  
  14. checking for gcc option to accept ANSI C... none needed  
  15. checking for style of include used by make... GNU  
  16. checking dependency style of gcc... gcc3  
  17. configure: creating ./config.status  
  18. config.status: creating Makefile  
  19. config.status: executing depfiles commands  
  20. $ ls -l Makefile  
  21. -rw-rw-r-- 1 yutao yutao 15035 Oct 15 10:40 Makefile  

你可以看到,此時Linux Makefile已經產生出來了。

7、使用Linux Makefile編譯代碼

  1. $ make if gcc -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -  
  2. DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DPACKAGE="helloworld" -DVERSION="1.0"   
  3. -I. -I. -g -O2 -MT helloworld.o -MD -MP -MF ".deps/helloworld.Tpo" \  
  4. -c -o helloworld.o `test -f 'helloworld.c' || echo './'`helloworld.c; \  
  5. then mv -f ".deps/helloworld.Tpo" ".deps/helloworld.Po"; \  
  6. else rm -f ".deps/helloworld.Tpo"; exit 1; \  
  7. fi  
  8. gcc -g -O2 -o helloworld helloworld.o    
  9.  
  10. 運行helloworld  
  11.  
  12. $ ./helloworld   
  13. Hello, Linux World!   

這樣helloworld就編譯出來了,你如果按上面的步驟來做的話,應該也會很容易地編譯出正確的helloworld文件。你還可以試著使用一些其他的make命令,如make clean,make install,make dist,看看它們會給你什么樣的效果。感覺如何?自己也能寫出這么專業的Linux Makefile,老板一定會對你刮目相看。

四、深入淺出

針對上面提到的各個命令,我們再做些詳細的介紹。

1、 autoscan

autoscan是用來掃描源代碼目錄生成configure.scan文件的。autoscan可以用目錄名做為參數,但如果你不使用參數的話,那么 autoscan將認為使用的是當前目錄。autoscan將掃描你所指定目錄中的源文件,并創建configure.scan文件。

2、 configure.scan

configure.scan包含了系統配置的基本選項,里面都是一些宏定義。我們需要將它改名為configure.in

3、 aclocal

aclocal是一個perl 腳本程序。aclocal根據configure.in文件的內容,自動生成aclocal.m4文件。aclocal的定義是:“aclocal - create aclocal.m4 by scanning configure.ac”。

4、 autoconf

autoconf是用來產生configure文件的。configure是一個腳本,它能設置源程序來適應各種不同的操作系統平臺,并且根據不同的系統來產生合適的Makefile,從而可以使你的源代碼能在不同的操作系統平臺上被編譯出來。

configure.in文件的內容是一些宏,這些宏經過autoconf 處理后會變成檢查系統特性、環境變量、軟件必須的參數的shell腳本。configure.in文件中的宏的順序并沒有規定,但是你必須在所有宏的最前面和最后面分別加上AC_INIT宏和AC_OUTPUT宏。

在configure.ini中:#號表示注釋,這個宏后面的內容將被忽略。AC_INIT(FILE) 這個宏用來檢查源代碼所在的路徑。AM_INIT_AUTOMAKE(PACKAGE, VERSION) 這個宏是必須的,它描述了我們將要生成的軟件包的名字及其版本號:

PACKAGE是軟件包的名字,VERSION是版本號。當你使用make dist命令時,它會給你生成一個類似helloworld-1.0.tar.gz的軟件發行包,其中就有對應的軟件包的名字和版本號。
AC_PROG_CC這個宏將檢查系統所用的C編譯器。

 AC_OUTPUT(FILE)這個宏是我們要輸出的Makefile的名字。我們在使用automake時,實際上還需要用到其他的一些宏,但我們可以用aclocal 來幫我們自動產生。執行aclocal后我們會得到aclocal.m4文件。產生了configure.in和aclocal.m4 兩個宏文件后,我們就可以使用autoconf來產生configure文件了。

5、 Makefile.am

Linux Makefile.am是用來生成Linux Makefile.in的,需要你手工書寫。Linux Makefile.am中定義了一些內容:AUTOMAKE_OPTIONS 這個是automake的選項。在執行automake時,它會檢查目錄下是否存在標準GNU軟件包中應具備的各種文件,例如AUTHORS、ChangeLog、NEWS等文件。我們將其設置成foreign時,automake會改用一般軟件包的標準來檢查。

bin_PROGRAMS這個是指定我們所要產生的可執行文件的文件名。如果你要產生多個可執行文件,那么在各個名字間用空格隔開。 helloworld_SOURCES 這個是指定產生“helloworld”時所需要的源代碼。

如果它用到了多個源文件,那么請使用空格符號將它們隔開。比如需要 helloworld.h,helloworld.c那么請寫成helloworld_SOURCES= helloworld.h helloworld.c。如果你在bin_PROGRAMS定義了多個可執行文件,則對應每個可執行文件都要定義相對的filename_SOURCES。

6、 automake

我們使用automake --add-missing來產生Linux Makefile.in。選項--add-missing的定義是“add missing standard files to package”,它會讓automake加入一個標準的軟件包所必須的一些文件。我們用automake產生出來的Linux Makefile.in文件是符合GNU Makefile慣例的,接下來我們只要執行configure這個shell 腳本就可以產生合適的 Makefile 文件了。

7、 Linux Makefile

在符合GNU Makefiel慣例的Makefile中,包含了一些基本的預先定義的操作:make根據Makefile編譯源代碼,連接,生成目標文件,可執行文件。make clean清除上次的make命令所產生的object文件(后綴為“.o”的文件)及可執行文件。

make install將編譯成功的可執行文件安裝到系統目錄中,一般為/usr/local/bin目錄。make dist產生發布軟件包文件(即distribution package)。這個命令將會將可執行文件及相關文件打包成一個tar.gz壓縮的文件用來作為發布軟件的軟件包。

它會在當前目錄下生成一個名字類似“PACKAGE-VERSION.tar.gz”的文件。PACKAGE和VERSION,是我們在configure.in中定義的AM_INIT_AUTOMAKE(PACKAGE, VERSION)。make distcheck生成發布軟件包并對其進行測試檢查,以確定發布包的正確性。

這個操作將自動把壓縮包文件解開,然后執行configure命令,并且執行make,來確認編譯不出現錯誤,最后提示你軟件包已經準備好,可以發布了。

  1. ===============================================  
  2. helloworld-1.0.tar.gz is ready for distribution 
  3. ===============================================  
  4. make distclean  

類似make clean,但同時也將configure生成的文件全部刪除掉,包括Linux Makefile。

五、結束語

通過上面的介紹,你應該可以很容易地生成一個你自己的符合GNU慣例的Linux Makefile文件及對應的項目文件。如果你想寫出更復雜的且符合慣例的Makefile,你可以參考一些開放代碼的項目中的configure.in和Makefile.am文件,比如:嵌入式數據庫sqlite,單元測試cppunit。

【編輯推薦】

  1. Linux Makefile自動編譯和鏈接使用的環境
  2. Linux Makefile介紹使用的環境深入淺出
  3. 闡述Linux Makefile文件概念
  4. Linux Makefile由淺入深剖析
  5. linux makefile文件心得筆記
責任編輯:佚名 來源: CSDN
相關推薦

2010-03-01 16:40:40

Linux Makef

2010-02-24 16:01:39

Linux Makef

2010-06-22 17:09:52

Linux Autom

2010-03-01 09:57:55

Linux Makef

2010-02-26 10:47:30

Linux Makef

2010-06-22 15:24:11

autoconf安裝

2010-06-22 15:26:58

autoconf安裝

2010-06-22 15:13:32

autoconf安裝

2013-11-14 11:38:20

Linux Kerne編譯

2010-02-24 14:55:35

Linux Makef

2009-12-23 10:33:52

Linux操作系統

2009-12-23 16:28:13

Linux GCC

2009-12-24 10:04:38

Linux進行C編譯

2017-09-12 09:22:51

LinuxMakefileautoconf工具

2022-02-28 09:44:09

Linux硬鏈接軟鏈接

2017-01-15 15:27:51

Linux軟連接和硬鏈接

2023-11-15 08:27:46

Linux系統

2009-10-26 13:45:39

linux Makef

2009-12-08 12:22:05

內核Makefile軟鏈接

2010-05-28 14:55:17

Linux編程工具
點贊
收藏

51CTO技術棧公眾號

www.亚洲精品| 91精品精品| 欧美在线free| 一级性生活视频| 天堂在线视频观看| 久久99九九99精品| 2019精品视频| 91传媒免费观看| 极品尤物一区| 51精品国自产在线| 日韩a在线播放| 国产精品va在线观看视色| 成人动漫一区二区在线| 国产精品午夜视频| 国产成人免费观看视频 | 久久免费播放视频| jlzzjlzz亚洲女人| 亚洲国模精品一区| 午夜影院免费版| 日韩欧美一区二区三区免费观看| 一区二区在线看| 亚洲国产欧美一区二区三区不卡| 人妻视频一区二区三区| 寂寞少妇一区二区三区| 日本久久精品视频| 1级黄色大片儿| 在线精品视频在线观看高清| 亚洲视频在线播放| 极品粉嫩小仙女高潮喷水久久| 国产精品色婷婷在线观看| 色婷婷久久综合| 狠狠干 狠狠操| 性欧美videoshd高清| 国产精品的网站| 日韩av电影免费在线| 色欲av伊人久久大香线蕉影院| 国产在线不卡一区| 国产久一一精品| 艳妇乳肉豪妇荡乳av无码福利| 亚洲专区免费| 97色在线观看免费视频| 精品99在线观看| 欧美fxxxxxx另类| 久久久国产视频91| 国产精品一区二区亚洲| 欧美肉体xxxx裸体137大胆| 国产婷婷色综合av蜜臀av| 国产精品成人99一区无码| 精品一区二区三区中文字幕 | 亚洲免费观看高清完整版在线观看| 欧美最大成人综合网| 性插视频在线观看| 99麻豆久久久国产精品免费| 精品久久久久久中文字幕动漫| 丰满人妻妇伦又伦精品国产| 成人免费视频一区二区| 丁香婷婷久久久综合精品国产| av小说天堂网| 国产成都精品91一区二区三 | 亚州国产精品| 亚洲国产精品热久久| 亚洲精品久久一区二区三区777| 日本一区二区三区视频在线看 | 91久久中文字幕| 国产又粗又猛又爽| 国产一本一道久久香蕉| 波多野结衣成人在线| 蜜臀av中文字幕| 91亚洲精品久久久蜜桃| 欧美日本韩国一区二区三区| 狠狠色伊人亚洲综合网站l| 亚洲国产精品av| 熟妇熟女乱妇乱女网站| 97超碰在线公开在线看免费| 亚洲高清免费视频| 国产欧美在线一区| 欧美成人家庭影院| 日韩视频在线观看一区二区| 色哟哟视频在线| 国产伦精品一区二区三区千人斩| 中文字幕精品av| 一区二区视频免费看| 最新亚洲一区| 国产精品xxx视频| 国产精品久久久久精| 成人午夜精品一区二区三区| 欧美精品亚洲精品| 国产美女视频一区二区三区| 综合分类小说区另类春色亚洲小说欧美| 日本免费黄色小视频| 欧美日韩国产观看视频| 欧美精品一二三四| 伊人久久一区二区三区| 成人3d精品动漫精品一二三| 欧美美女15p| 亚洲不卡在线视频| 国产精品 欧美精品| 欧美午夜欧美| 亚洲精品一线| 91传媒视频在线播放| 亚洲午夜精品在线观看| 精品在线99| 久久99精品久久久久久青青91| 天天干天天干天天操| 国产在线一区观看| 免费av在线一区二区| 九义人在线观看完整免费版电视剧| 亚洲国产精品久久不卡毛片| 天天干天天操天天做| 久久夜色电影| 欧美大肥婆大肥bbbbb| 99久久久无码国产精品免费蜜柚 | 欧美日韩一区成人| 中文字幕天堂av| 希岛爱理一区二区三区| 国产va免费精品高清在线观看| xxxx国产精品| 国产精品久久久久久久久果冻传媒 | 男女免费观看在线爽爽爽视频| 色偷偷久久一区二区三区| 免费黄视频在线观看| 成人免费看片39| 欧美一区视频在线| 亚洲免费视频网| 自拍av一区二区三区| 18岁视频在线观看| 精品三级av| 九九热在线精品视频| 亚洲系列在线观看| 久久久国际精品| 高清欧美精品xxxxx| 日韩成人18| 久久久精品一区| 一二三四区在线| 中文字幕不卡在线播放| 亚洲男人天堂色| 亚洲国产最新| 日产精品99久久久久久| 手机看片福利在线观看| 欧美日韩国产精品专区 | 37pao成人国产永久免费视频| av成人综合| 欧美激情久久久久久| 成人黄色免费视频| 一区二区三区欧美激情| 欧美体内she精高潮| 亚洲一区二区三区| 亚洲字幕在线观看| 在线观看三级视频| 日韩欧美国产综合| 国产成人精品av久久| 国产成人99久久亚洲综合精品| 996这里只有精品| 超碰一区二区三区| 性色av一区二区三区| 午夜小视频免费| 色综合网站在线| 免费看91的网站| 精品夜夜嗨av一区二区三区| 国产成人免费高清视频| 亚洲精品一区二区三区中文字幕 | 日本a在线观看| 99久久精品免费看国产免费软件| 欧美深夜福利视频| 亚洲精品小区久久久久久| 国产精品wwww| 日韩美女网站| 日韩精品最新网址| 国产成人无码精品久久久久| 久久亚洲春色中文字幕久久久| 无人在线观看的免费高清视频| 色偷偷综合网| 国产高清不卡av| 丝袜老师在线| 主播福利视频一区| 国内毛片毛片毛片毛片| 五月婷婷激情综合| 一级片视频免费看| 国内一区二区在线| 精品久久久久久久久久中文字幕| 最新国产一区| 亚洲一区二区三区视频播放| av女在线播放| 中文字幕av一区| 亚洲国产成人一区二区| 色综合天天在线| 日韩三级在线观看视频| 99久久精品免费观看| 五月天中文字幕在线| 黄色一区二区三区四区| 日韩国产在线一区| 无人区乱码一区二区三区| 青青草精品毛片| av在线影院| 国产亚洲精品va在线观看| 国产a级免费视频| 日本韩国精品在线| 一级黄色录像视频| 国产午夜精品理论片a级大结局| 九九热视频免费| 乱人伦精品视频在线观看| 蜜桃网站在线观看| 欧美三级伦理在线| 国产专区一区二区三区| 国产精品日本一区二区三区在线| 日本韩国在线不卡| 免费毛片在线看片免费丝瓜视频 | 亚洲精品视频一二三| 精品久久ai电影| 亚洲精品日韩激情在线电影| jizz内谢中国亚洲jizz| 久久99精品国产99久久6尤物| seseavlu视频在线| 亚洲精品美女在线观看| 精品国产免费无码久久久| 在线免费观看日韩欧美| 日产精品久久久久久久| 一区二区欧美国产| 日本 欧美 国产| 久久精品夜色噜噜亚洲aⅴ| 日韩少妇一区二区| 国产一区二区在线影院| 欧美三级午夜理伦三级富婆| 香蕉久久a毛片| 人体内射精一区二区三区| 欧美日本不卡| 老汉色影院首页| 久久国产成人午夜av影院宅| 日韩精品久久久免费观看 | 日韩av在线影院| 亚洲乱码在线观看| 欧美一区二区大片| 国产精品久久久久久69| 欧美日韩日本视频| 最近中文字幕在线视频| 色丁香久综合在线久综合在线观看| 日本熟女一区二区| 亚洲一区二区欧美日韩| 青青操国产视频| 亚洲少妇中出一区| 色欲人妻综合网| 亚洲色图在线视频| www.av免费| 亚洲久草在线视频| 欧美黄色免费看| 亚洲免费观看高清完整版在线观看熊 | 五月激情婷婷在线| 老司机精品视频在线| 少妇一级淫免费放| 蜜桃精品在线观看| 涩涩网站在线看| 国产精品一区二区三区网站| 老司机av网站| av在线这里只有精品| 日本xxxx裸体xxxx| 国产色综合一区| eeuss中文字幕| 中文字幕一区二区三区不卡在线| 国产麻豆a毛片| 一区二区三区四区中文字幕| 久久综合激情网| 精品久久久久久亚洲国产300| 国产精品自拍99| 在线观看一区日韩| 91麻豆国产在线| 日韩欧美另类在线| 天天干天天爽天天操| 亚洲欧美日韩久久久久久| 国产中文字幕在线播放| 少妇激情综合网| 亚洲国产精品精华素| 69国产精品成人在线播放| av有声小说一区二区三区| 国产日韩欧美夫妻视频在线观看| www久久久| 国产另类自拍| 精品国产精品国产偷麻豆| 91免费视频黄| 亚洲免费精品| 中文字幕在线导航| 国产精品一卡二卡在线观看| 日韩免费高清一区二区| 国产欧美一区二区三区在线看蜜臀| 51精品免费网站| 欧美日韩国产在线看| 亚洲永久精品视频| 亚洲第一色在线| av影片免费在线观看| 久久久久久久亚洲精品| 性欧美超级视频| 99久久久精品免费观看国产| 精品在线观看入口| 国产免费xxx| 久久亚洲一区| 在线成人精品视频| 久久精品一区二区| 麻豆一区二区三区精品视频| 91黄色免费观看| 蜜桃av鲁一鲁一鲁一鲁俄罗斯的| 一区二区三区天堂av| 美足av综合网| 国产综合久久久久| 欧美日韩大片免费观看| 婷婷视频在线播放| 麻豆精品网站| 大桥未久恸哭の女教师| 国产精品成人午夜| 日韩免费av网站| 亚洲国内精品在线| 在线视频国产区| 国产精品自产拍在线观| 亚洲毛片免费看| 青草青青在线视频| 国产美女精品人人做人人爽| 波多野吉衣中文字幕| 亚洲成av人片在www色猫咪| 一级特黄aaa| 中文字幕少妇一区二区三区| 日本三级一区| 超碰97人人人人人蜜桃| 99精品视频在线| 色悠悠久久综合网| 久久久久久久免费视频了| 日韩成人av毛片| 欧美成人a在线| 91精品久久| 91久久综合亚洲鲁鲁五月天| 欧美电影一二区| 天堂网在线免费观看| 欧美激情在线看| 天天天天天天天干| 亚洲视屏在线播放| 亚洲伦乱视频| 在线观看精品一区| 日韩精品视频一二三| 91丨porny丨最新| 亚洲 欧美 日韩 综合| 亚洲精品电影网在线观看| 欧洲一区二区三区| 999热视频| 女人香蕉久久**毛片精品| 午夜视频在线网站| 亚洲免费观看高清| 国产av一区二区三区| 欧美日韩国产91| 中文一区二区三区四区| 国产www免费| 不卡一区二区三区四区| av资源吧首页| 亚洲精品网址在线观看| 春暖花开亚洲一区二区三区| 色播亚洲婷婷| 九色综合国产一区二区三区| 亚洲一区电影在线观看| 8x福利精品第一导航| huan性巨大欧美| 国产91视觉| 亚洲综合激情| 91视频免费在观看| 88在线观看91蜜桃国自产| 一色桃子av在线| 精品不卡一区二区三区| 亚洲综合不卡| www中文在线| 日韩欧美自拍偷拍| 国内激情视频在线观看| 青青草成人网| 国产在线麻豆精品观看| 精品人妻在线播放| 亚洲欧洲一区二区三区在线观看| 99蜜月精品久久91| 五月天在线免费视频| www.亚洲精品| 午夜一区二区三区四区| 久久久国产一区| 日韩av资源网| 三上悠亚av一区二区三区| 亚洲一区二区中文在线| 亚洲人视频在线观看| 国产精品视频精品| 国产精品www994| 最近中文字幕免费视频| 欧美日韩一区二区三区不卡| 免费在线看电影| 日韩欧美精品一区二区| 国产一区在线视频| yjizz国产| 久久久国产影院| 国产精品免费大片| 亚洲午夜精品在线观看| 91久久精品一区二区三区| 影音先锋男人在线资源| 欧洲精品码一区二区三区免费看| 国产乱子伦视频一区二区三区| 欧美一区二区三区网站| 欧美成aaa人片在线观看蜜臀| 欧美日韩播放| 乱码一区二区三区| 欧美日韩精品免费观看视频| 成人三级高清视频在线看|