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

Linux Makefile介紹自動編譯和鏈接

運維 系統運維
而且自己寫的Linux Makefile經常和自己的開發環境相關聯,當系統環境變量或路徑發生了變化后,Linux Makefile可能還要跟著修改。這樣就造成了手工書寫Linux Makefile的諸多問題,automake恰好能很好地幫助我們解決這些問題。

Linux Makefile還是比較常用的,于是我研究了一下Linux Makefile,在這里拿出來和大家分享一下,希望對大家有用。作為Linux下的程序開發人員,一定都遇到過Linux Makefile,用make命令來編譯自己寫的程序確實是很方便。一般情況下,大家都是手工寫一個簡單Linux Makefile,如果要想寫出一個符合自由軟件慣例的Linux Makefile就不那么容易了。

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

一、Linux Makefile介紹

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

Linux Makefile的宗旨就是:讓編譯器知道要編譯一個文件需要依賴其他的哪些文件。當那些依賴文件有了改變,編譯器會自動的發現最終的生成文件已經過時,而重新編譯相應的模塊。 Linux Makefile的基本結構不是很復雜,但當一個程序開發人員開始寫Linux Makefile時,經常會懷疑自己寫的是否符合慣例.

而且自己寫的Linux Makefile經常和自己的開發環境相關聯,當系統環境變量或路徑發生了變化后,Linux Makefile可能還要跟著修改。這樣就造成了手工書寫Linux Makefile的諸多問題,automake恰好能很好地幫助我們解決這些問題。

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

二、使用的環境

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

三、從helloworld入手

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

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

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

2、 helloworld.c 然后用你自己最喜歡的編輯器寫一個hellowrold.c文件,如命令:vi helloworld.c。使用下面的代碼作為helloworld.c的內容。
int main(int argc, char** argv)
{
printf("Hello, Linux World! ");
return 0;

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

3、生成configure

我們使用autoscan命令來幫助我們根據目錄下的源代碼生成一個configure.in的模板文件。 命令:
$ autoscan
$ ls
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. AC_INIT(helloworld.c)   
  5. AM_INIT_AUTOMAKE(helloworld, 1.0)   
  6. # Checks for programs.   
  7. AC_PROG_CC   
  8. # Checks for libraries.   
  9. # Checks for header files.   
  10. # Checks for typedefs, structures, and compiler characteristics.   
  11. # Checks for library functions.   
  12. AC_OUTPUT(Linux Makefile)   
  13. ============================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 新建Linux Makefile.am文件,命令: $ vi Linux Makefile.am 內容如下:

  1. AUTOMAKE_OPTIONS=foreign   
  2. bin_PROGRAMS=helloworld   
  3. helloworldhelloworld_SOURCES=helloworld.c    
  4. automake會根據你寫的Linux Makefile.am來自動生成Linux Makefile.in。 

Linux 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. Linux Makefile.am: installing `./depcomp'  


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

6、執行configure生成Linux 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 Linux Makefile   
  19. config.status: executing depfiles commands   
  20. $ ls -l Linux Makefile   
  21. -rw-rw-r-- 1 yutao yutao 15035 Oct 15 10:40 Linux Makefile   

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

7、使用Linux Makefile編譯代碼

  1. $ make   
  2. if gcc -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -   
  3. DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DPACKAGE="helloworld" -DVERSION="1.0"   
  4. -I. -I. -g -O2 -MT helloworld.o -MD -MP -MF ".deps/helloworld.Tpo"   
  5. -c -o helloworld.o `test -f 'helloworld.c' || echo './'`helloworld.c;    
  6. then mv -f ".deps/helloworld.Tpo" ".deps/helloworld.Po";    
  7. else rm -f ".deps/helloworld.Tpo"; exit 1;    
  8. fi   
  9. gcc -g -O2 -o helloworld helloworld.o    
  10. 運行helloworld   
  11. $ ./helloworld    
  12. 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是一個腳本,它能設置源程序來適應各種不同的操作系統平臺,并且根據不同的系統來產生合適的Linux 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) 這個宏是我們要輸出的Linux Makefile的名字。 我們在使用automake時,實際上還需要用到其他的一些宏,但我們可以用aclocal 來幫我們自動產生。執行aclocal后我們會得到aclocal.m4文件。 產生了configure.in和aclocal.m4 兩個宏文件后,我們就可以使用autoconf來產生configure文件了。

5、 Linux 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 Linux Makefile慣例的,接下來我們只要執行configure這個shell 腳本就可以產生合適的 Linux Makefile 文件了。

7、 Linux Makefile

在符合GNU Makefiel慣例的Linux Makefile中,包含了一些基本的預先定義的操作: make 根據Linux 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,來確認編譯不出現錯誤,最后提示你軟件包已經準備好,可以發布了。

helloworld-1.0.tar.gz is ready for distribution make distclean  類似make clean,但同時也將configure生成的文件全部刪除掉,包括Linux Makefile。

五、結束語

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

【編輯推薦】

  1. Linux Makefile系統的真相符合自由軟件慣例
  2. Linux Makefile自動生成的運行步驟
  3. Linux Makefile介紹自動編譯和鏈接
  4. Linux Makefile介紹使用的環境深入淺出
  5. 闡述Linux Makefile文件概念
責任編輯:佚名 來源: CSDN
相關推薦

2010-02-25 15:11:48

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技術棧公眾號

日韩精品一区不卡| 亚洲观看黄色网| 粗大黑人巨茎大战欧美成人| 国产不卡免费视频| 日韩av片电影专区| 免费成年人视频在线观看| 久久精品福利| 欧美日韩亚洲国产综合| 成年在线观看视频| 欧美美乳在线| 国产精品538一区二区在线| 777777777亚洲妇女| 999精品在线视频| 日韩av影院| 91精品婷婷国产综合久久性色| 男人日女人逼逼| 欧美jizzhd69巨大| 久久免费国产精品| 国产一区二区久久久| 一区二区美女视频| 久久精品女人天堂| 欧美二区在线播放| 国产免费美女视频| av一区二区在线播放| 亚洲精品成人网| 青青草精品在线| 成人看片毛片免费播放器| 五月综合激情网| 潘金莲一级淫片aaaaa免费看| 猫咪在线永久网站| 91在线视频在线| 电影午夜精品一区二区三区| 91精东传媒理伦片在线观看| 激情综合自拍| 欧美激情xxxx| 欧美交换国产一区内射| 婷婷激情综合| 日韩视频在线一区| 日韩一卡二卡在线观看| 精品国产乱码久久久| 日韩高清免费观看| 岛国精品资源网站| 国产精品自在线拍| 91麻豆精品国产自产在线观看一区| 男人天堂成人在线| 3d性欧美动漫精品xxxx软件| 色偷偷久久人人79超碰人人澡| 一二三四视频社区在线| 98色花堂精品视频在线观看| 亚洲精品综合在线| 久久视频免费在线| 中文国产字幕在线观看| 亚洲毛片av在线| 亚洲一区二区三区精品动漫| 尤物视频在线免费观看| 国产精品欧美一级免费| 在线观看国产一区| а√天堂官网中文在线| 一区二区成人在线视频| 国产亚洲黄色片| 国产高清中文字幕在线| 精品久久久精品| 97在线播放视频| 播放一区二区| 在线不卡一区二区| 亚洲av无码成人精品区| 国产精品15p| 精品视频在线播放| 免费视频91蜜桃| 999国产精品视频| 欧美理论片在线观看| 色播视频在线播放| 日韩综合小视频| 91免费在线视频网站| 高清乱码毛片入口| 26uuu色噜噜精品一区二区| 日本中文不卡| av在线播放观看| 五月天激情综合| 日本免费观看网站| 精品中文在线| 亚洲美女性生活视频| 一级免费黄色录像| 在线视频精品| 国产乱肥老妇国产一区二| 精品人妻一区二区三区含羞草 | 中文字幕在线观看视频www| 国产精品成人自拍| 国产一区二区三区欧美| 日韩欧美综合视频| 国产情侣久久| 国产专区精品视频| 欧美在线精品一区二区三区| 中日韩av电影| 国产96在线 | 亚洲| 99re久久| 亚洲国产日韩精品在线| 91制片厂在线| 久久精品导航| 91国产在线播放| 懂色一区二区三区| 亚洲一区在线观看免费| 999精品视频在线| 国语一区二区三区| 日韩视频一区在线| 毛片基地在线观看| 国产精品亚洲视频| 亚洲不卡一卡2卡三卡4卡5卡精品| 国产网站在线免费观看| 91久久精品一区二区| 综合分类小说区另类春色亚洲小说欧美 | 丁香五月缴情综合网| 中文字幕亚洲无线码a| 国产精品theporn动漫| 日本成人中文字幕在线视频| 国产乱码精品一区二区三区日韩精品 | 国产精品日本一区二区不卡视频 | 日韩中文字幕一区| 国产一二三在线| 欧美一区二区播放| 三区四区在线观看| 香蕉久久国产| 国产精品一区视频| 国产精品一区二区三区视频网站| 91成人国产精品| 国产精品第七页| 欧美在线二区| 91精品视频专区| 日韩av中文| 在线一区二区三区四区五区| 国产精品边吃奶边做爽| 最新国产拍偷乱拍精品| 成人情视频高清免费观看电影| 精品国产白色丝袜高跟鞋| 欧美自拍偷拍一区| 级毛片内射视频| 久久久久综合| 欧美午夜欧美| 电影亚洲精品噜噜在线观看| 亚洲欧美一区二区三区情侣bbw| 国产一级淫片a| 懂色av一区二区三区蜜臀| 91精品一区二区三区四区| 中文字幕综合| 久久精品视频在线| 国产一区二区视频免费观看| 国产精品久久久久天堂| 在线观看免费av网址| 欧美成人自拍| 亚洲在线观看视频| 91免费版黄色| 天天插天天干天天操| 亚洲成人福利片| 黄色免费看视频| 国产午夜久久| 欧美自拍资源在线| 岛国精品在线| 久热99视频在线观看| aaa国产视频| 亚洲一区电影777| 欧美 变态 另类 人妖| 久久精品日产第一区二区| 欧美高清一区二区| 国产一区一一区高清不卡| 色99之美女主播在线视频| 国产美女无遮挡永久免费| 一区二区三区欧美日| 午夜不卡久久精品无码免费| 亚洲尤物影院| 亚洲午夜精品久久久中文影院av| 成人永久在线| 午夜精品蜜臀一区二区三区免费 | 亚洲新中文字幕| 一级片免费观看视频| 一级日本不卡的影视| 国产网站无遮挡| 男女男精品网站| 亚洲色图都市激情| 羞羞色国产精品网站| 国产日韩欧美自拍| 国模雨婷捆绑高清在线| 亚洲视频免费一区| www.爱爱.com| 欧美曰成人黄网| 男人与禽猛交狂配| 91免费观看在线| 久久久久xxxx| 一区二区精品| 中文字幕在线观看一区二区三区| 久久久久高潮毛片免费全部播放| 国产精品日韩一区| 国产精选在线| 久久精品视频播放| 男人天堂网在线| 欧美电影免费观看完整版| 探花视频在线观看| 亚洲乱码精品一二三四区日韩在线 | 国产综合精品视频| 亚洲激情五月婷婷| www亚洲色图| 99久久久久免费精品国产 | 免费在线观看av的网站| 亚洲国产cao| 国产黄色录像片| 91麻豆免费看片| 久久国产免费视频| 蜜桃av噜噜一区| 激情婷婷综合网| 99av国产精品欲麻豆| 久久视频免费在线| 色偷偷综合网| 区一区二区三区中文字幕| 老牛精品亚洲成av人片| 97se国产在线视频| 亚洲国产91视频| 国产精品视频公开费视频| 成人免费看视频网站| 欧美激情亚洲视频| 国产丝袜在线| 深夜福利日韩在线看| 免费福利在线视频| 亚洲精品国产欧美| www.久久精品.com| 91精品国产综合久久久久久| 99re热视频| 欧美在线观看视频一区二区三区| 欧美日韩一二三四区| 欧美日韩国产丝袜另类| 日韩精品一区二区不卡| 午夜精品影院在线观看| 欧美性猛交xxxxx少妇| 亚洲日本在线视频观看| 日本理论中文字幕| 国产清纯美女被跳蛋高潮一区二区久久w| 国产xxxxxxxxx| 成人性视频网站| 2025中文字幕| 成人成人成人在线视频| www.555国产精品免费| 东方欧美亚洲色图在线| 午夜福利三级理论电影| 夫妻av一区二区| 国产精品久久久久久亚洲av| 成人免费毛片aaaaa**| 手机在线免费毛片| 国产高清不卡一区二区| 亚洲AV成人精品| 粉嫩av一区二区三区粉嫩| 亚洲v在线观看| gogo大胆日本视频一区| 亚洲国产精品成人综合久久久| 99视频一区二区| 成人片黄网站色大片免费毛片| 久久精品人人做人人爽人人| 纪美影视在线观看电视版使用方法| 国产亚洲欧美日韩俺去了| 欧美日韩生活片| 亚洲日本韩国一区| 精品亚洲永久免费| 懂色av影视一区二区三区| 欧美黄色免费在线观看| 午夜精品久久久久久久 | 日韩一区精品视频| 波多野结衣xxxx| 国产精品99久久久久久有的能看 | 婷婷免费在线观看| 国产精品自拍一区| 国产黑丝在线观看| 国产午夜亚洲精品不卡| 卡一卡二卡三在线观看| 亚洲品质自拍视频| 欧美不卡视频在线观看| 欧洲av在线精品| 99久久久久久久| 日韩精品视频在线播放| 999在线视频| 欧美高清电影在线看| 在线播放高清视频www| 国产精品久久久久久久久久新婚| 久久gogo国模啪啪裸体| 精品免费视频123区| 日韩电影免费网站| 成人精品视频在线播放| 蜜桃在线一区二区三区| 男男一级淫片免费播放| 国产精品视频一区二区三区不卡| 久久免费视频99| 欧美性生活一区| 欧美自拍第一页| 日韩有码片在线观看| 久久男人天堂| 91久久久久久久一区二区| 欧美精品中文| 小泽玛利亚av在线| 日韩av不卡在线观看| 无码人妻一区二区三区免费n鬼沢| 欧美极品xxx| 日本熟妇色xxxxx日本免费看| 欧美日韩免费观看一区三区| 天堂网在线资源| 久久精品亚洲热| 亚洲精品在线影院| 韩国一区二区三区美女美女秀 | 日韩高清在线免费观看| 中国人体摄影一区二区三区| 国产欧美日韩一区二区三区在线| 人人爽人人爽av| 国产欧美一区视频| 日本一级片免费看| 欧美mv日韩mv亚洲| 免费av在线| 国产精品日本精品| 九九久久成人| 欧美国产亚洲一区| 福利一区二区在线| 亚洲欧美一区二区三区四区五区| 欧美日韩在线直播| 女人天堂在线| **欧美日韩vr在线| 第四色在线一区二区| 真人做人试看60分钟免费| 精品写真视频在线观看| 一级特黄曰皮片视频| 日韩欧美aaa| 天天摸天天碰天天爽天天弄| 欧美激情乱人伦| 亚洲一二三区视频| 最新av网址在线观看| 精品一区二区三区视频| 亚洲图片第一页| 色8久久精品久久久久久蜜| 你懂的免费在线观看视频网站| 97视频在线观看播放| 男人的天堂久久| 成人性免费视频| av在线播放不卡| 五月天综合激情| 日韩h在线观看| 亚洲美女久久精品| 欧洲国产精品| 蜜桃精品视频在线观看| 少妇高潮在线观看| 欧美三级欧美一级| 欧美三级电影一区二区三区| 成人免费网站在线观看| 一区二区影视| 91精品人妻一区二区三区四区| 亚洲永久精品国产| 蜜桃在线一区二区| 午夜精品理论片| 亚州国产精品| 超碰在线97免费| 国产精品人妖ts系列视频| 国产孕妇孕交大片孕| 欧美大胆a视频| 91精品日本| 日韩av在线第一页| 国产三级欧美三级日产三级99 | 精彩视频一区二区三区| 国内偷拍精品视频| 亚洲激情第一页| yw.尤物在线精品视频| 正在播放精油久久| 国产成人h网站| 亚洲天堂一区在线| 日韩综合中文字幕| 国产精品99久久免费观看| 无罩大乳的熟妇正在播放| 国产欧美一区二区三区在线看蜜臀 | 懂色av一区二区在线播放| 少妇一级淫片免费放中国 | 久操手机在线视频| 91在线观看污| 亚洲网站免费观看| 欧美成人激情图片网| 天海翼亚洲一区二区三区| jizz欧美性11| 亚洲成av人片在线观看| 韩日视频在线| 999久久久| 噜噜爱69成人精品| √天堂中文官网8在线| 日韩的一区二区| 在线欧美激情| 免费在线激情视频| 悠悠色在线精品| 国产小视频在线| 91精品国产综合久久久久久丝袜| 中文精品视频| 日韩三级在线观看视频| 日韩精品中文字幕在线观看| 99精品女人在线观看免费视频| 国产中文字幕视频在线观看| 国产精品久久福利| 凸凹人妻人人澡人人添| 91色精品视频在线| 视频在线观看一区二区三区| 久久久久成人片免费观看蜜芽| 国产亚洲激情在线| 日韩精品导航|