精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

成人手机在线播放| 国产在线视频2019最新视频| 美女久久久久久久久| 美女高潮视频在线看| 2023国产精品自拍| 成人精品一区二区三区电影免费 | 久久国产色av免费观看| 97在线观看免费观看高清| 国产精品自产自拍| 热久久这里只有精品| 国产精品嫩草影院俄罗斯| 日韩高清三区| 欧美一激情一区二区三区| 欧美黄网站在线观看| 国内精品久久久久国产| 337p粉嫩大胆噜噜噜噜噜91av| 国产伊人精品在线| 亚洲黄色免费观看| 一区在线播放| 精品国产一区二区三区久久| 97人妻精品一区二区三区免| 国产亚洲高清一区| 在线观看视频一区二区欧美日韩| av一区二区三区免费观看| av大片在线看| 91亚洲精品乱码久久久久久蜜桃 | 国产人妻精品一区二区三区| 久久高清国产| 孩xxxx性bbbb欧美| 中日韩一级黄色片| 日韩电影免费网址| 日韩黄在线观看| 无码人妻丰满熟妇区毛片蜜桃精品| 三级成人黄色影院| 香蕉影视欧美成人| 91国在线高清视频| 国产精品久久久久久福利| 久久久91精品国产一区二区三区| 国产亚洲一区二区三区在线播放| 国产免费久久久| 久久精品二区亚洲w码| 国产精品久久二区| 黄色一级视频免费看| 99视频一区| 91精品国产99| 日本熟妇乱子伦xxxx| 亚洲高清成人| 国内外成人免费激情在线视频网站| 午夜爽爽爽男女免费观看| 91视频综合| 精品国内亚洲在观看18黄 | 久久激情电影| 中文字幕亚洲欧美日韩2019| 中文字幕av久久爽一区| 欧美一区二区麻豆红桃视频| 国产亚洲成精品久久| 中文字幕成人动漫| 成人久久一区| 色婷婷av一区二区三区久久| 天堂av网手机版| 欧美激情偷拍自拍| 久久视频在线视频| 欧美人与禽zozzo禽性配| 影音国产精品| 91成人免费观看网站| 国产一级18片视频| 青青草一区二区三区| 国产色视频一区| a天堂在线观看视频| 懂色av一区二区三区免费观看| 丁香婷婷久久久综合精品国产 | 欧美精品卡一卡二| 国产精品一区二区日韩| 欧美性xxxx极品高清hd直播| 熟女人妇 成熟妇女系列视频| 成人一区视频| 日韩欧美中文字幕公布| 制服丝袜第一页在线观看| 亚洲人成精品久久久| 中文字幕9999| 久久久久久久久久久久久久久久久| 亚洲精品一二| 国产精品日韩在线| 亚洲爆乳无码一区二区三区| 91网上在线视频| 亚洲人成网站在线观看播放 | 国产福利成人在线| 91精品中文字幕| 成人白浆超碰人人人人| 日本在线视频一区| 欧美女同一区| 欧美日韩一级大片网址| 日本泡妞xxxx免费视频软件| 欧美男gay| 欧美老少配视频| 男人天堂av在线播放| 国产在线精品一区在线观看麻豆| 国产精品香蕉视屏| 尤物网址在线观看| 精品久久久久久久久久| 婷婷激情综合五月天| 婷婷成人影院| 久久国产精品电影| wwwwww在线观看| 成人午夜碰碰视频| 亚洲综合首页| 视频在线日韩| 亚洲国产古装精品网站| 蜜桃视频最新网址| 久久不射网站| 久久国产精品 国产精品| h片在线免费| 欧美三级韩国三级日本三斤 | 亚洲精品一区二区三区四区| 国产欧美日本一区视频| 波多野结衣家庭教师在线播放| 高清国产一区二区三区四区五区| 亚洲欧洲一区二区三区在线观看| 精品在线视频观看| 国内国产精品久久| 亚洲欧美日韩在线综合| 三上悠亚亚洲一区| 亚洲精品ady| 久久黄色免费网站| 国产一区二区不卡在线 | 成人精品在线观看视频| 午夜日韩福利| 亚洲在线第一页| 毛片在线看片| 精品视频色一区| 欧美偷拍一区二区三区| 国产精品久久久久毛片大屁完整版| 不卡一区二区三区四区五区| a级在线观看| 欧美日韩精品免费观看视频| av永久免费观看| 日韩国产欧美视频| 日本一区二区三区视频在线播放 | 国产综合久久久久久| 国产一区二区三区福利| 色网综合在线观看| jizz中文字幕| 三级精品在线观看| 日韩欧美电影一区二区| 欧美日韩亚洲国产| 在线观看亚洲区| 在线不卡免费视频| 国产精品久久久久aaaa樱花| 亚洲综合色在线观看| 欧美日韩第一| 国产在线观看一区二区三区| 日本最新在线视频| 777午夜精品视频在线播放| 蜜桃av.com| 国产精品1区2区| 欧美中日韩在线| 老司机凹凸av亚洲导航| 欧美做受高潮1| 98在线视频| 日韩一区二区三区观看| 国产一级视频在线播放| 26uuu精品一区二区在线观看| 欧美一区二区三区爽大粗免费| 婷婷激情久久| 国产精品中文在线| 亚洲综合影视| 日韩av影视在线| 国产又粗又猛又爽又| 国产精品久久看| 美女日批在线观看| 国产日韩免费| 伊人色综合久久天天五月婷| 日韩欧美激情电影| 2020久久国产精品| 亚洲xxxxxx| 日韩欧美一区在线观看| 亚洲日本视频在线观看| 国产精品污www在线观看| 色18美女社区| 亚洲免费播放| 亚洲黄色成人久久久| 日韩亚洲精品在线观看| 日本成人黄色片| 成人免费网址| 亚洲精品网站在线播放gif| 中文字幕 视频一区| 亚洲一区二区四区蜜桃| xxxx日本黄色| 国产1区2区3区精品美女| 欧美韩国日本在线| 国产精品久久久久久麻豆一区软件| 国产精品yjizz| 成人18视频在线观看| 国产做受高潮69| 日本在线观看免费| 日韩经典中文字幕| 99视频国产精品免费观看a | 国产精品视频无码| 黄色成人在线播放| √天堂中文官网8在线| 久久久欧美精品sm网站| 韩国黄色一级片| 免费av网站大全久久| 亚洲精品蜜桃久久久久久| 欧美色图激情小说| 国产在线欧美日韩| 国产一区二区在线观| 国产97在线播放| av在线加勒比| 久久亚洲精品网站| 国产免费av高清在线| 亚洲第一福利网站| www.黄色小说.com| 欧美日韩国产一级二级| www.国产一区二区| 五月天一区二区| a级片在线观看免费| 中文字幕第一区综合| a视频免费观看| 成人综合婷婷国产精品久久蜜臀 | 成人线上播放| 91视频国产一区| 国产福利91精品一区二区| 日韩av123| 蜜桃视频www网站在线观看| 欧美伦理91i| 黄色视屏免费在线观看| 综合久久五月天| 国产精品99999| 亚洲欧美国产精品专区久久 | 日韩中文有码在线视频| 国产中文字幕在线| 国产午夜精品麻豆| 天堂av资源在线| 亚洲а∨天堂久久精品喷水| 精品欧美一区二区精品少妇| 欧美一区二区精美| 国内精品国产成人国产三级| 日韩一级免费观看| 精品人妻一区二区三区浪潮在线| 欧美人体做爰大胆视频| 中文字幕av无码一区二区三区| 在线观看中文字幕不卡| 91黑人精品一区二区三区| 91久久精品网| 中文字幕观看视频| 欧美日韩精品一区二区在线播放| 在线观看毛片网站| 欧美剧情电影在线观看完整版免费励志电影| 亚洲高清视频免费观看| 欧美天堂一区二区三区| 中文字幕人成人乱码亚洲电影| 欧美午夜在线一二页| 中文资源在线播放| 欧美精品视频www在线观看| 91精品国产乱码久久久久| 欧美一卡二卡在线观看| 亚洲AV无码精品色毛片浪潮| 亚洲成人中文字幕| 欧美老女人性开放| 中文国产成人精品| 一色桃子av在线| 91国在线精品国内播放| 日韩精品影院| 成人久久一区二区| 国产精品18hdxxxⅹ在线| 久久婷婷人人澡人人喊人人爽| 久久99国产精品视频| 亚洲天堂电影网| 欧美日韩三级| 啊啊啊一区二区| 免费av网站大全久久| 特黄特黄一级片| bt7086福利一区国产| 天天躁日日躁aaaa视频| 日韩一区在线免费观看| 日韩av无码中文字幕| 在线视频国内自拍亚洲视频| 国产又粗又黄又爽| 亚洲国产精品久久久久秋霞不卡| 蝌蚪视频在线播放| 久久影院中文字幕| 中文字幕高清在线播放| 国产日韩精品一区二区| www.国产精品一区| 亚洲 日韩 国产第一区| 狠狠久久婷婷| 2025韩国理伦片在线观看| 国产成人精品一区二区三区网站观看| 一级性生活大片| 亚洲日本在线观看| 久久99国产综合精品免费| 宅男在线国产精品| 免费观看成年在线视频网站| 久久这里有精品| 欧美三区四区| 国产成人成网站在线播放青青| 国产九一精品| 福利视频一二区| 精品一区二区三区不卡| 亚洲熟妇无码av| 一区二区三区国产豹纹内裤在线| 波多野结衣电车| 精品国产凹凸成av人网站| 日本在线观看视频| 国产91色在线| 国产精品黄网站| 欧美日韩一区二区三区电影| 日韩电影免费在线看| 久久久久久久无码| 一区二区三区四区不卡在线 | 精品在线播放免费| 国产色视频一区二区三区qq号| 亚洲影院理伦片| av老司机久久| www亚洲精品| 99只有精品| 欧美重口乱码一区二区| 99伊人成综合| 国产香蕉精品视频| 亚洲精品乱码久久久久久日本蜜臀| 波多野结衣电车| 日韩精品在线免费观看| av电影免费在线看| 成人动漫视频在线观看免费| 亚洲经典一区| 国内av一区二区| 国产精品三级av| 一级久久久久久| 亚洲视频在线观看网站| 国产精欧美一区二区三区蓝颜男同| 国产一区福利视频| 亚洲日本欧美| 超碰caoprom| 亚洲成人你懂的| 欧美一区二区黄片| 久久久亚洲天堂| 加勒比久久高清| 亚洲不卡中文字幕无码| www.亚洲免费av| 国内精品福利视频| 精品视频www| 欧美电影h版| 视频一区免费观看| 美腿丝袜在线亚洲一区| 免费成人深夜夜行网站| 91精品国产综合久久精品 | 98精品国产自产在线观看| 精品久久97| 日韩精品视频一区二区在线观看| 成人的网站免费观看| 国产精品午夜影院| 亚洲欧美日韩在线高清直播| 少妇一区视频| 亚洲自拍偷拍二区| 国产精一区二区三区| 久草视频中文在线| 亚洲国产一区二区三区在线观看| 蜜桃av在线| 日韩久久精品一区二区三区| 久久99精品久久久久婷婷| 疯狂撞击丝袜人妻| 欧美草草影院在线视频| 国产精品一区二区日韩| 日韩精品大片| 狠狠色丁香婷婷综合久久片| 麻豆成人在线视频| 亚洲剧情一区二区| 欧美日韩免费电影| 日产精品久久久久久久蜜臀| 9久草视频在线视频精品| 91视频久久久| 欧美xxxx14xxxxx性爽| 老司机精品在线| 鲁一鲁一鲁一鲁一av| 亚洲综合偷拍欧美一区色| 四虎影视精品成人| 91精品久久久久久久久久另类| 欧美午夜精品| 麻豆精品免费视频| 日韩午夜激情视频| 欧美xoxoxo| 国产91在线亚洲| 久久久综合视频| 国产日韩精品suv| 4k岛国日韩精品**专区| 欧美a级成人淫片免费看| 精品影片一区二区入口| 欧美性欧美巨大黑白大战| 国产盗摄精品一区二区酒店| 日韩精品不卡| 成人国产免费视频| 一级片aaaa| 欧美亚洲国产成人精品| 91精品天堂福利在线观看| 亚洲av无码国产精品久久| 91精品国产高清一区二区三区蜜臀 | 久久欧美中文字幕| 精品国产伦一区二区三| 国产不卡av在线免费观看|