青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

摘要:
在 Unix 上寫(xiě)過(guò)程序的人一般都遇到過(guò) Makefile,尤其是用 C 來(lái)開(kāi)發(fā)程序的人。用 make 來(lái)開(kāi)發(fā)和編譯程序的確很方便,可是要寫(xiě)出一個(gè)MakeFile就不那么簡(jiǎn)單了。偏偏介紹 Makefile 的文件不多,GNU Make 那份印出來(lái)要幾百頁(yè)的文件,光看完 Overview 自己就快要先Over了,難怪許多人聞 Unix色變。本文將介紹如何利用 GNU Autoconf 及 Automake 這兩套軟件來(lái)幫助『自動(dòng)』產(chǎn)生 Makefile 文件,并且讓開(kāi)發(fā)出來(lái)的的軟件可以象 Apache, MySQL 和常見(jiàn)的 GNU 軟件一樣,只要會(huì) ``./configure'', ``make'', ``make install'' 就可以把程序安裝到系統(tǒng)中。如果您有心開(kāi)發(fā) Open Source 的軟件,或只是想在 Unix 系統(tǒng)下寫(xiě)寫(xiě)程序。希望這份介紹文件能幫助您輕松的進(jìn)入 Unix Programming 的殿堂。
1. 簡(jiǎn)介
Makefile 基本上就是『目標(biāo)』(target), 『關(guān)聯(lián)』(dependencies) 和『動(dòng)作』三者所組成的一系列規(guī)則。而 make 就會(huì)根據(jù) Makefile 的規(guī)則來(lái)決定如何編譯 (compile) 和連接 (link) 程式。實(shí)際上,make 可做的不只是編譯和連接程序,例如 FreeBSD 的 port collection 中,Makefile還可以做到自動(dòng)下載遠(yuǎn)程程序,解壓縮 (extract) , 打補(bǔ)丁 (patch),設(shè)定,然后編譯,安裝到系統(tǒng)中。
Makefile 基本結(jié)構(gòu)雖然很簡(jiǎn)單,但是妥善運(yùn)用這些規(guī)則就可以變換出許多不同的花樣。卻也因?yàn)檫@樣,許多剛剛開(kāi)始學(xué)習(xí)寫(xiě)Makefile 時(shí)會(huì)覺(jué)得沒(méi)有規(guī)范可以遵循,每個(gè)人寫(xiě)出來(lái)的Makefile都不大一樣,不知道從哪里下手,而且常常會(huì)受到自己的開(kāi)發(fā)環(huán)境的限制,只要環(huán)境參數(shù)不同或者路徑更改,可能 Makefile 就得跟著修改修改。雖然有 GNU Makefile Conventions (GNU Makefile慣例例)訂出一些使用 GNU 程式設(shè)計(jì)時(shí)撰寫(xiě) Makefile 的一些標(biāo)準(zhǔn)和規(guī)范,但是內(nèi)容很長(zhǎng)而且很復(fù)雜,并且經(jīng)常作一些調(diào)整,為了減輕程序開(kāi)發(fā)人員維護(hù)Makefile 的負(fù)擔(dān),因此出現(xiàn)了Automake。
程序設(shè)計(jì)者只需要寫(xiě)一些預(yù)先定義好的宏 (macro),提交給Automake處理后會(huì)產(chǎn)生一個(gè)可以供 Autoconf 使用的 Makefile.in文件。再配合利用 Autoconf產(chǎn)生的自動(dòng)培植設(shè)置文件 configure 即可產(chǎn)生一份符合符合 GNU Makefile 慣例的 Makeifle 了。
2. 上路之前
在開(kāi)始使用 Automake 之前,首先確認(rèn)你的系統(tǒng)安裝有如下軟件:
 
1.
GNU Automake
2.
GNU Autoconf
3.
GNU m4
4.
perl
5.
GNU Libtool (如果你需要產(chǎn)生 shared library)
建議最好也使用 GNU C/C++ 編譯器 、GNU Make 以及其它 GNU 的工具程序來(lái)作為開(kāi)發(fā)的環(huán)境,這些工具都是屬于 Open Source Software 不但免費(fèi)而且功能強(qiáng)大。如果你是使用 Red Hat Linux 可以找到所有上述軟件的 rpm 文件,F(xiàn)reeBSD 也有現(xiàn)成的 package 可以直接安裝,或也可以自行下載這些軟件的源代碼回來(lái)安裝。下面的示例是在Red Hat Linux 5.2 + CLE2 的環(huán)境下所完成的。
3. 一個(gè)簡(jiǎn)單的例子
Automake 所產(chǎn)生的 Makefile 除了可以做到程式的編譯和連接,也已經(jīng)把如何產(chǎn)生程序文件 (如 manual page, info 文件及 dvi 文件) 的動(dòng)作,還有把源碼文件包裝起來(lái)以供發(fā)布都考慮進(jìn)去了,所以程序源代碼所存放的目錄結(jié)構(gòu)最好符合GNU 的標(biāo)準(zhǔn)慣例,接下來(lái)就用一個(gè)hello.c 來(lái)做為例子。
在工作目錄下建立一個(gè)新的子目錄"devel"',再在 devel 下建立一個(gè)"hello"' 的子目錄,這個(gè)目錄將作為存放 hello這個(gè)程序及其相關(guān)文件的地方:
% mkdir devel
% cd devel
% mkdir hello
% cd hello
用編輯器寫(xiě)一個(gè)hello.c文件,
#include
int main(int argc, char** argv) {
printf(``Hello, GNU!\n'');
return 0;
}
接下來(lái)就要用 Autoconf 及 Automake 來(lái)產(chǎn)生 Makefile 文件了,
1.
用 autoscan 產(chǎn)生一個(gè) configure.in 的原型,執(zhí)行autoscan 后會(huì)產(chǎn)生一個(gè)configure.scan 的文件,可以用它作為 configure.in文件的藍(lán)本。
 
% autoscan
% ls
configure.scan hello.c
2.
編輯 configure.scan文件,如下所示,並且改名為configure.in
dnl Process this file with autoconf to produce a configure script. AC_INIT(hello.c) AM_INIT_AUTOMAKE(hello, 1.0)
dnl Checks for programs.
AC_PROG_CC
dnl Checks for libraries.
dnl Checks for header files.
dnl Checks for typedefs, structures, and compiler characteristics.
dnl Checks for library functions.
AC_OUTPUT(Makefile)
3.
執(zhí)行 aclocal 和 autoconf ,分別會(huì)產(chǎn)生 aclocal.m4 及 configure 兩個(gè)文件
% aclocal
% autoconf
% ls
aclocal.m4 configure configure.in hello.c
4.
編輯 Makefile.am 文件,內(nèi)容如下
AUTOMAKE_OPTIONS= foreign
bin_PROGRAMS= hello
hello_SOURCES= hello.c
5.
執(zhí)行 automake --add-missing ,Automake 會(huì)根據(jù)Makefile.am 文件產(chǎn)生一些文件,包含最重要的 Makefile.in
% automake --add-missing automake: configure.in: installing `./install-sh' automake: configure.in: installing `./mkinstalldirs' automake: configure.in: installing `./missing'
6.
最后執(zhí)行 ./configure ,
% ./configure creating cache ./config.cache checking for a BSD compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking whether make sets ${MAKE}... yes checking for working aclocal... found checking for working autoconf... found checking for working automake... found checking for working autoheader... found checking for working makeinfo... found checking for gcc... gcc checking whether the C compiler (gcc ) works... yes checking whether the C compiler (gcc ) is a cross-compiler... no checking whether we are using GNU C... yes checking whether gcc accepts -g... yes updating cache ./config.cache creating ./config.status creating Makefile
現(xiàn)在你的目錄下已經(jīng)產(chǎn)生了一個(gè) Makefile 檔,下個(gè) ``make'' 指令就可以開(kāi)始編譯 hello.c 成執(zhí)行檔,執(zhí)行 ./hello 和 GNU 打聲招呼吧!
% make gcc -DPACKAGE=\"hello\" -DVERSION=\"1.0\" -I. -I. -g -O2 -c hello.c gcc -g -O2 -o hello hello.o % ./hello Hello! GNU!
你還可以試試 ``make clean'',''make install'',''make dist'' 看看會(huì)有什麼結(jié)果。你也可以把產(chǎn)生出來(lái)的 Makefile 秀給你的老闆,讓他從此對(duì)你刮目相看 :-)
4. 追根問(wèn)底
上述產(chǎn)生Makefile 的過(guò)程和以往自行編寫(xiě)的方式非常不一樣,舍棄傳統(tǒng)自定義make 的規(guī)則,使用 Automake 只需用到一些已經(jīng)定義好的宏就可以了。我們把宏及目標(biāo) (target)寫(xiě)在Makefile.am 文件內(nèi),Automake 讀入 Makefile.am 文件后會(huì)把這一串已經(jīng)定義好的宏展開(kāi)并產(chǎn)生相對(duì)應(yīng)的 Makefile.in 文件,然后再由 configure這個(gè) shell script 根據(jù) Makefile.in 產(chǎn)生合適的Makefile。

利用 autoconf 及 automake產(chǎn)生Makefile 的流程

上圖表示在上一范例中要使用的文件檔案及產(chǎn)生出來(lái)的文件,有星號(hào) (*) 者代表可執(zhí)行文件。在此示例中可由 Autoconf 及 Automake 工具所產(chǎn)生的額外文件有 configure.scan、aclocal.m4、configure、Makefile.in,需要自行加入設(shè)置的有configure.in 及 Makefile.am。
4.1 編輯 configure.in 文件
Autoconf 是用來(lái)產(chǎn)生 'configure'文件的工具。'configure' 是一個(gè) shell script,它可以自動(dòng)設(shè)定原始程序以符合各種不同平臺(tái)上Unix 系統(tǒng)的特性,并且根據(jù)系統(tǒng)參數(shù)及環(huán)境產(chǎn)生合適的Makefile文件或C 的頭文件(header file),讓原始程式可以很方便地在不同的平臺(tái)上進(jìn)行編譯。Autoconf會(huì)讀取 configure.in 文件然后產(chǎn)生'configure' 這個(gè) shell script。
configure.in 文件內(nèi)容是一系列GNU m4 的宏,這些宏經(jīng)autoconf處理后會(huì)變成檢查系統(tǒng)特性的shell scripts。 configure.in 內(nèi)宏的順序并沒(méi)有特別的規(guī)定,但是每一個(gè)configure.in 文件必須在所有宏前加入 AC_INIT 宏,然后在所有宏的最后加上 AC_OUTPUT宏??上扔?autoscan 掃描原始文件以產(chǎn)生一個(gè) configure.scan 文件,再對(duì) configure.scan 做些修改成 configure.in 文件。在范例中所用到的宏如下:
dnl
這個(gè)宏后面的字不會(huì)被處理,可以視為注釋
AC_INIT(FILE)
該宏用來(lái)檢查源代碼所在路徑,autoscan 會(huì)自動(dòng)產(chǎn)生,一般無(wú)須修改它。
AM_INIT_AUTOMAKE(PACKAGE,VERSION)
這個(gè)是使用 Automake 所必備的宏,PACKAGE 是所要產(chǎn)生軟件套件的名稱,VERSION 是版本編號(hào)。
AC_PROG_CC
檢查系統(tǒng)可用的C編譯器,若源代碼是用C寫(xiě)的就需要這個(gè)宏。
AC_OUTPUT(FILE)
設(shè)置 configure 所要產(chǎn)生的文件,若是Makefile ,configure 便會(huì)把它檢查出來(lái)的結(jié)果帶入 Makefile.in 文件后產(chǎn)生合適的 Makefile。
實(shí)際上,這里使用 Automake 時(shí),還需要一些其他的宏,這些額外的宏我們用 aclocal來(lái)幫助產(chǎn)生。執(zhí)行 aclocal會(huì)產(chǎn)生aclocal.m4 文件,如果無(wú)特別的用途,可以不需要修改它,用 aclocal 所產(chǎn)生的宏會(huì)告訴 Automake如何動(dòng)作。
有了 configure.in 及 aclocal.m4兩個(gè)文件以后,便可以執(zhí)行 autoconf來(lái)產(chǎn)生 configure 文件了。
4.2 編輯Makefile.am 文件
接下來(lái)要編輯Makefile.am 文件,Automake 會(huì)根據(jù) configure.in 中的宏把Makefile.am 轉(zhuǎn)成 Makefile.in 文件。 Makefile.am 文件定義所要產(chǎn)生的目標(biāo):
AUTOMAKE_OPTIONS
設(shè)置 automake 的選項(xiàng)。Automake 主要是幫助開(kāi)發(fā) GNU 軟件的人員來(lái)維護(hù)軟件,所以在執(zhí)行 automake 時(shí),會(huì)檢查目錄下是否存在標(biāo)準(zhǔn) GNU 軟件中應(yīng)具備的文件,例如 'NEWS'、'AUTHOR'、'ChangeLog' 等文件。設(shè)置 foreign 時(shí),automake 會(huì)改用一般軟件的標(biāo)準(zhǔn)來(lái)檢查。
bin_PROGRAMS
定義要產(chǎn)生的執(zhí)行文件名。如果要產(chǎn)生多個(gè)執(zhí)行文件,每個(gè)文件名用空白符隔開(kāi)。
hello_SOURCES
定義 'hello' 這個(gè)執(zhí)行程序所需要的原始文件。如果 'hello'這個(gè)程序是由多個(gè)原始文件所產(chǎn)生,必須把它所用到的所有原始文件都列出來(lái),以空白符隔開(kāi)。假設(shè) 'hello' 還需要 'hello.c'、'main.c'、'hello.h' 三個(gè)文件的話,則定義
hello_SOURCES= hello.c main.c hello.h
如果定義多個(gè)執(zhí)行文件,則對(duì)每個(gè)執(zhí)行程序都要定義相對(duì)的filename_SOURCES。
編輯好 Makefile.am 文件,就可以用 automake --add-missing來(lái)產(chǎn)生 Makefile.in。加上 --add-missing 選項(xiàng)來(lái)告訴 automake順便假如包裝一個(gè)軟件所必須的文件。Automake產(chǎn)生生出來(lái)的 Makefile.in 文件是完全符合 GNU Makefile 的慣例,只要執(zhí)行 configure這個(gè)shell script 便可以產(chǎn)生合適的 Makefile 文件了。
4.3 使用 Makefile
利用 configure 所產(chǎn)生的 Makefile文件有幾個(gè)預(yù)先設(shè)定的目標(biāo)可供使用,這里只用幾個(gè)簡(jiǎn)述如下:
make all
產(chǎn)生設(shè)定的目標(biāo),既次范例中的執(zhí)行文件。只敲入make 也可以,此時(shí)會(huì)開(kāi)始編譯源代碼,然后連接并產(chǎn)生執(zhí)行文件。
make clean
清除之前所編譯的執(zhí)行文件及目標(biāo)文件(object file, *.o)。
make distclean
除了清除執(zhí)行文件和目的文件以外,也把 configure 所產(chǎn)生的 Makefile 清除掉。
make install
將程序安裝到系統(tǒng)中,若源碼編譯成功,且執(zhí)行結(jié)果正確,便可以把程序安裝到系統(tǒng)預(yù)先設(shè)定的執(zhí)行文件存放路徑中,若用 bin_PROGRAMS 宏的話,程序會(huì)被安裝到 /usr/local/bin下。
make dist
將程序和相關(guān)的文檔包裝為一個(gè)壓縮文檔以供發(fā)布 (distribution) 。執(zhí)行完在目錄下會(huì)產(chǎn)生一個(gè)以PACKAGE-VERSION.tar.gz 為名稱的文件。PACKAGE 和 VERSION 這兩個(gè)參數(shù)是根據(jù) configure.in 文件中 AM_INIT_AUTOMAKE(PACKAGE, VERSION) 的定義。在此范例中會(huì)產(chǎn)生 'hello-1.0.tar.gz' 的文件。
make distcheck
和 make dist 類似,但是加入檢查包裝以后的壓縮文件是否正常,這個(gè)目標(biāo)除了把程序和相關(guān)文檔包裝成 tar.gz 文件外,還會(huì)自動(dòng)把這個(gè)壓縮文件解開(kāi),執(zhí)行 configure,并執(zhí)行 make all ,確認(rèn)編譯無(wú)錯(cuò)誤以后,戶顯示這個(gè) tar.gz 文件已經(jīng)準(zhǔn)備好可以發(fā)布了。這個(gè)檢查非常有用,檢查過(guò)關(guān)的套件,基本上可以給任何具備 GNU 開(kāi)發(fā)環(huán)境的人去重新編譯成功。就 hello-1.tar.gz 這個(gè)范例而言,除了在Red Hat Linux 上,在 FreeBSD 2.2.x 也可以正確編譯。
要注意的是,利用 Autoconf 及 Automake 所產(chǎn)生出來(lái)的軟件套件是可以在沒(méi)有安裝 Autoconf 及 Automake 的環(huán)境使用的,因?yàn)?configure 是一個(gè) shell script,它己被設(shè)計(jì)為可以在一般 Unix 的 sh 這個(gè) shell 下執(zhí)行。但是如果要修改 configure.in 及 Makefile.am 文件再產(chǎn)生新的 configure 及 Makefile.in 文件時(shí)就一定要有 Autoconf 及 Automake 了。
5. 相關(guān)資料
Autoconf 和 Automake 功能十分強(qiáng)大,可以從它們附帶的 info 穩(wěn)當(dāng)4中找到詳細(xì)的使用方法說(shuō)明。你也可以從許多現(xiàn)有的GNU 軟件或 Open Source 軟件中找到相關(guān)的 configure.in 或 Makefile.am 文件,他們是學(xué)習(xí) Autoconf 及 Automake 更多技巧的最佳范例。
這個(gè)簡(jiǎn)介只用到了 Autoconf 及 Automake 的皮毛罷了,如果你有心加入 Open Source 軟件開(kāi)發(fā)的行列,希望這篇文章可以幫助你對(duì)產(chǎn)生 Makefile 有個(gè)簡(jiǎn)單的了解。其它有關(guān)開(kāi)發(fā) GNU 程式或 C 程序設(shè)計(jì)及 Makefile 的詳細(xì)運(yùn)用及技巧,建議從 GNU Coding Standards (GNU 編碼規(guī)定) 讀起,里面包含了 GNU Makefile 慣例,及開(kāi)發(fā) GNU 軟件的標(biāo)準(zhǔn)程序和慣例。這些 GNU 軟件的在線說(shuō)明文件可以在 http://www.gnu.org/ 上找到。
6. 結(jié)束語(yǔ)
利用 Autoconf 及 Automake,產(chǎn)生一個(gè) Makefile 似乎不再象以前那么困難了,而使用 Autoconf 也使得我們?cè)诓煌脚_(tái)上或各家 Unix 之間發(fā)布及便宜程序變的簡(jiǎn)單,這對(duì)于在Unix 系統(tǒng)上程序開(kāi)發(fā)員來(lái)說(shuō)減輕了許多負(fù)擔(dān)。妥善運(yùn)用這些 GNU 的工具軟件,可以幫助我們更容易的去開(kāi)發(fā)程序,而且更容易維護(hù)源代碼。
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美三级不卡| 艳女tv在线观看国产一区| 亚洲第一精品夜夜躁人人躁| 午夜精品美女自拍福到在线| 欧美在线影院在线视频| 国内成人精品视频| 久久综合伊人77777麻豆| 亚洲大片av| 亚洲免费高清视频| 欧美性生交xxxxx久久久| 西西裸体人体做爰大胆久久久| 久久综合九色欧美综合狠狠| 亚洲人www| 国产精品免费看片| 久久久噜噜噜久噜久久| 日韩视频免费观看高清完整版| 午夜电影亚洲| 亚洲国产一成人久久精品| 欧美性生交xxxxx久久久| 欧美专区18| 99国产精品久久久久久久久久| 欧美一区二区三区在线免费观看 | 欧美女主播在线| 亚洲线精品一区二区三区八戒| 久久亚洲精选| 一二三区精品福利视频| 国内精品福利| 欧美午夜剧场| 久久野战av| 亚洲影院色无极综合| 亚洲第一在线综合在线| 欧美激情久久久久| 亚洲欧美国产三级| 欧美成在线视频| 欧美一级网站| 99亚洲精品| 娇妻被交换粗又大又硬视频欧美| 欧美日韩一区二区免费在线观看| 久久国产精品一区二区| 亚洲少妇一区| 亚洲黄色三级| 男女视频一区二区| 性欧美xxxx大乳国产app| 洋洋av久久久久久久一区| 一区二区在线视频| 国产精品自拍网站| 欧美日韩国产高清视频| 久久夜色精品国产噜噜av| 亚洲欧美激情一区二区| 99热在这里有精品免费| 亚洲高清一区二| 久久综合色88| 久久久久www| 性做久久久久久| 亚洲午夜av在线| 亚洲精品欧洲| 91久久国产精品91久久性色| 在线观看一区欧美| 国产原创一区二区| 国产日韩欧美成人| 国产农村妇女毛片精品久久麻豆| 国产精品成人一区二区三区夜夜夜 | 久久精品国产第一区二区三区最新章节| 亚洲精品国产日韩| 亚洲黄色在线| 亚洲激情成人网| 亚洲高清不卡在线| 亚洲激情av在线| 亚洲国产色一区| 亚洲国产裸拍裸体视频在线观看乱了中文| 国产一区香蕉久久| 国产综合视频| 狠狠色丁香婷综合久久| 国产主播在线一区| 在线看片日韩| 亚洲国产婷婷香蕉久久久久久99| 亚洲国产欧美日韩另类综合| 在线免费观看日本一区| 亚洲国产视频a| 99av国产精品欲麻豆| 亚洲精品综合久久中文字幕| 一区二区三欧美| 亚洲私人影院在线观看| 欧美亚洲网站| 久久人体大胆视频| 欧美bbbxxxxx| 亚洲人午夜精品免费| 日韩视频中文字幕| 亚洲一区二区免费视频| 亚洲欧美综合v| 狂野欧美一区| 欧美日韩精品欧美日韩精品| 国产精品久久福利| 国产视频一区在线观看一区免费| 在线观看久久av| 日韩一级网站| 欧美一区二区三区男人的天堂| 久久久久久夜| 亚洲人成网站在线播| 亚洲午夜久久久久久久久电影网| 欧美在线免费观看视频| 欧美91大片| 国产伦精品一区二区| 亚洲黄色三级| 亚洲欧美日韩一区二区| 久久久久亚洲综合| 亚洲美女91| 欧美专区在线| 欧美女同视频| 好看的日韩视频| 一区二区欧美在线观看| 久久美女艺术照精彩视频福利播放| 欧美福利电影网| 亚洲一区黄色| 欧美超级免费视 在线| 国产精品进线69影院| 1769国内精品视频在线播放| 一本色道久久88亚洲综合88| 欧美日韩久久| 国产日韩一区二区三区在线播放| 亚洲第一中文字幕| 亚洲摸下面视频| 亚洲高清久久久| 午夜精品一区二区三区在线 | 一区二区三区 在线观看视频| 欧美一级在线亚洲天堂| 欧美黑人在线观看| 欧美在线日韩| 欧美午夜欧美| 亚洲欧洲综合| 久久综合一区二区| 在线视频欧美精品| 欧美+日本+国产+在线a∨观看| 国产精品一区二区你懂得 | 欧美激情精品久久久久久蜜臀| 亚洲免费视频观看| 欧美三级不卡| 亚洲免费观看在线观看| 免费在线亚洲欧美| 欧美影院精品一区| 国产精品日韩一区| 亚洲性感激情| 91久久综合亚洲鲁鲁五月天| 久久影院亚洲| 精品二区视频| 久久永久免费| 欧美一区二区女人| 国产精品一国产精品k频道56| 99精品欧美一区二区三区综合在线| 另类激情亚洲| 久久精品91| 国产一区二区三区久久久久久久久| 午夜宅男久久久| 亚洲视频高清| 国产精品v片在线观看不卡| 中文国产一区| 亚洲美女视频在线观看| 欧美日韩aaaaa| 亚洲精品综合在线| 亚洲精品男同| 欧美精品久久久久久久免费观看 | 久久男女视频| 午夜影院日韩| 国产在线精品成人一区二区三区 | 国产精品爱久久久久久久| 一区二区三区你懂的| 亚洲日本免费| 欧美日韩xxxxx| 一区二区三区久久精品| 一本色道久久综合亚洲精品不卡| 欧美日韩日本网| 亚洲一区亚洲| 亚洲综合色婷婷| 国产一区二区三区奇米久涩| 久久久之久亚州精品露出| 久久精品国产欧美激情| 在线电影国产精品| 亚洲激情另类| 欧美日韩在线一区二区| 性欧美videos另类喷潮| 久久狠狠亚洲综合| 最新国产成人av网站网址麻豆| 最新中文字幕一区二区三区| 欧美日韩一区二区三区四区五区| 亚洲欧美文学| 久久久国产精品一区| 亚洲精品日韩综合观看成人91| 日韩一二在线观看| 国产亚洲va综合人人澡精品| 男男成人高潮片免费网站| 欧美经典一区二区三区| 午夜在线a亚洲v天堂网2018| 久久精品女人| 一区二区欧美日韩视频| 香蕉av777xxx色综合一区| 亚洲电影免费| 亚洲视频在线看| 亚洲国产精品电影在线观看| 一本色道久久99精品综合| 国内激情久久|