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

isware

使用Automake 創(chuàng)建和使用靜態(tài)庫(kù)/動(dòng)態(tài)庫(kù)

1. 目錄結(jié)構(gòu)如下:
example
|——src 目錄(存放源代碼文件)
        |——hello.c
|——lib 目錄(存放用來(lái)生成庫(kù)的文件)
        |——test.c 用來(lái)生成靜態(tài)庫(kù)libhello.a
|——include 目錄(存放程序中使用的頭文件)
        |——hello.h
2. 編寫的各個(gè)目錄下的源文件
hello.h 文件
extern void print(char *);
test.c 文件
#include<stdio.h>
void print(char *msg)
{
print(“%s\n”, msg);
}
hello.c 文件
#include “hello.h”
int main()
{
print(“Hello static library!”);//這里用到的是靜態(tài)庫(kù)中的函數(shù)
return 0;
}
3. 編寫lib/Makefile.am 文件
noinst_LIBRARIES=libhello.a
libhello_a_SOURCES=test.c
AUTOMAKE_OPTIONS=foreign
第一行noinst 表示生成的是靜態(tài)庫(kù),不需要make install ,直接制定它的位置和名字就
可以使用。
第二行表示用來(lái)生成靜態(tài)庫(kù)的源文件。如果要把靜態(tài)庫(kù)生成到其他地方,可以在=后面
加上路徑(建議用絕對(duì)路徑,并將所要用到的靜態(tài)庫(kù)生成在同一個(gè)文件夾下,如lib)。
第三行AUTOMAKE_OPTIONS 是Automake 的選項(xiàng)。Automake 主要是幫助開發(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)檢查。如果不加這句的話,需要在autoconf之前,先執(zhí)行touch NEWS
README AUTHORS ChangeLog 來(lái)生成'NEWS'、'AUTHOR'、 'ChangeLog' 等文件
4. 編寫src/Makefile.am 文件
AUTOMAKE_OPTIONS=foreign
INCLUDES= -I../include
bin_PROGRAMS=hello
hello_SOURCES=hello.c
hello_LDADD=../lib/libhello.a
第二行指定頭文件的位置,-I 是idirafter 的縮寫。../include 指定頭文件的位置,..是上
一級(jí)目錄,也就是這里的example 目錄。
第三行指定生成可執(zhí)行文件名hello,在這里可執(zhí)行文件生成在src 下,建議將可執(zhí)行文
件生成到一個(gè)特定的文件夾下,讓它和源代碼分開,如/root/test 目錄下。寫法為:
bin_PROGRAMS=/root/test/hello,后面的第四、五行也相對(duì)應(yīng)地變?yōu)椋?br />_root_test_hello_SOURCES=hello.c
_root_test_hello_LDADD=../lib/libhello.a
第四行指定生成可執(zhí)行文件hello 的源代碼文件,如果hello.c 在其他目錄下,需要加上
完整的路徑。
第五行指定需要使用靜態(tài)庫(kù)的位置。
5. 生成靜態(tài)庫(kù)文件lib/libhello.a。
執(zhí)行autoscan 生成configure.scan 文件,將它重命名為configure.in 并修改其內(nèi)容。
#configure.in
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(libhello.a,1.1,[])
AM_INIT_AUTOMAKE
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
AC_PROG_RANLIB//需要加入的內(nèi)容,因?yàn)槭褂昧遂o態(tài)庫(kù)
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT([Makefile])
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)。也可以把包和版本號(hào)等信息放在AC_INIT(FILE) 宏里。
AC_PROG_CC
檢查系統(tǒng)可用的C 編譯器,若源代碼是用C 寫的就需要這個(gè)宏。
AC_OUTPUT(FILE)
設(shè)置 configure 所要產(chǎn)生的文件,若是Makefile ,configure 便會(huì)把它檢查出來(lái)的結(jié)果
填充到Makefile.in 文件后產(chǎn)生合適的 Makefile。 后面的FILE 是一個(gè)Makefile 的輸出列表,
你可以選著將要輸出的Makefile 的位置和個(gè)數(shù)。建議只在src 中輸出Makefile。
在lib 目錄下依次執(zhí)行 aclocal 、autoconf、automake --add-missing、./configure、make,
此時(shí)在該目錄下就可以看到生成的靜態(tài)庫(kù)文件libhello.a
6. 在src 目錄下,執(zhí)行autoscan 生成configure.scan 文件,將它重命名為configure.in 并修
改其內(nèi)容。
#configure.in
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(hello,1.1,[])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([hello.c])
# Checks for programs.
AC_PROG_CC
# Checks for libraries.
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_OUTPUT([Makefile])
7. 在src 目錄下依次執(zhí)行 aclocal 、autoconf、automake --add-missing、./configure、make,
生成可執(zhí)行文件hello
8. 執(zhí)行make install 進(jìn)行安裝,最后輸入hello 來(lái)運(yùn)行程序,查看效果:
Hello static library!
執(zhí)行成功!
使用gcc 創(chuàng)建和使用靜態(tài)庫(kù)
1. 編寫mylib.h 文件
#ifndef _mylib_h_
#define _mylib_h_
void welcome();
void outstring(const char * str);
#endif
2. 編寫mylib.c 文件,用來(lái)生成靜態(tài)庫(kù)。
#include <stdio.h>
void welcome()
{
printf(“welcome to libmylib\n”);
}
void outstring(const char * str)
{
if(str!=NULL)
printf(“%s”,str);
}
3. 編譯源文件,產(chǎn)生目標(biāo)代碼
gcc –o mylib.o –c mylib.c
4. 將上面產(chǎn)生的目標(biāo)文件加入到靜態(tài)庫(kù)中,并把靜態(tài)庫(kù)拷貝到系統(tǒng)默認(rèn)的路徑
ar rcs libmylib.a mylib.o
cp libmylib.a /usr/lib/
5. 編寫測(cè)試程序來(lái)使用剛才創(chuàng)建的靜態(tài)庫(kù) libmylib.a
#include “mylib.h”
#include <stdio.h>
Int main()
{
printf(“create and use library:\n”);
welcome();
outstring(“It’s a successful\n”);
}
6. 編譯使用庫(kù)函數(shù)的程序
gcc –o test test.c -lmylib
運(yùn)行./test 查看結(jié)果。


使用Automake 創(chuàng)建和使用動(dòng)態(tài)庫(kù)


動(dòng)態(tài)庫(kù)與靜態(tài)庫(kù)的差別在于:動(dòng)態(tài)庫(kù)是在程序執(zhí)行的時(shí)候加載到內(nèi)存,供調(diào)用函數(shù)使用。
1. 目錄結(jié)構(gòu)如下:
example
|——src 目錄(存放源代碼文件)
|——hello.c
|——lib 目錄(存放用來(lái)生成庫(kù)的文件)
|——test.c 用來(lái)生成動(dòng)態(tài)庫(kù)libhello.la
|——include 目錄(存放程序中使用的頭文件)
|——hello.h
2. 編寫各個(gè)目錄下的源文件如下:
hello.h 文件
extern void print(char *);
test.c 文件
#include<stdio.h>
void print(char *msg)
{
print(“%s\n”, msg);
}
hello.c 文件
#include “hello.h”
int main()
{
print(“Hello static library!”);//這里用到的是動(dòng)態(tài)庫(kù)中的函數(shù)
return 0;
}
3. 在lib 目錄下編譯需要生成動(dòng)態(tài)庫(kù)的文件,生成動(dòng)態(tài)庫(kù),并安裝到系統(tǒng)的標(biāo)準(zhǔn)庫(kù)中,供
程序調(diào)用。具體步驟如下:
(1) 編寫Makefile.am 文件
AUTOMAKE_OPTIONS=foreign
lib_LTLIBRARIES=libhello.la
libhello_la_SOURCES=test.c
這里lib_LTLIBRARIES 的意思是生成的動(dòng)態(tài)庫(kù),然后指定動(dòng)態(tài)庫(kù)依賴的源文件
test.c ,若有多個(gè)源文件用空格隔開。
(2) 在lib 目錄下,用命令autoscan 產(chǎn)生configure.scan 文件,并改名為configure.in。 這
里需加上宏AC_PROG_LIBTOOL,表示利用libtool 來(lái)自動(dòng)生成動(dòng)態(tài)庫(kù)
#configure.in
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(hello,1.0, [miaoquan@nou.com.cn])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([test.c])
#AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_PROG_LIBTOOL
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
(3) 執(zhí)行命令aclocal、libtoolize -f -c 、autoconf、automake --add-missing、./configure、
make、make install 將動(dòng)態(tài)庫(kù)安裝到系統(tǒng)的標(biāo)準(zhǔn)庫(kù)中,以供調(diào)用(一般為/usr/local/lib)。
注:libtoolize 提供了一種標(biāo)準(zhǔn)的方式來(lái)將libtool 支持加入一個(gè)軟件包,而GNU libtool 是
一個(gè)通用庫(kù)支持腳本,將使用動(dòng)態(tài)庫(kù)的復(fù)雜性隱藏在統(tǒng)一、可移植的接口中。
4. 生成src 目錄下的hello 可執(zhí)行文件
(1) 編寫src/Makefile.am 文件
AUTOMAKE_OPTIONS=foreign
INCLUDES= -I../include
bin_PROGRAMS=hello
hello_SOURCES=hello.c
hello_LDADD=-lhello
-ldir 指定編譯時(shí)搜索庫(kù)的路徑。與靜態(tài)庫(kù)不同的是,創(chuàng)建動(dòng)態(tài)庫(kù)時(shí)不用指定庫(kù)路
徑,編譯器自動(dòng)在標(biāo)準(zhǔn)庫(kù)中查找libhello.so 文件。
(2) 執(zhí)行autoscan 生成configure.scan 文件,將它重命名為configure.in 并修改其內(nèi)容。
# configure.in
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.59)
AC_INIT(hello,1.0, [miaoquan@nou.com.cn])
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([hello.c])
#AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
# Checks for header files.
# Checks for typedefs, structures, and compiler characteristics.
# Checks for library functions.
AC_CONFIG_FILES([Makefile])
AC_OUTPUT
(3) 在src 目錄下編譯并生成目標(biāo)文件,執(zhí)行命令aclocal、libtoolize -f -c 、autoconf、
automake --add-missing、./configure、make,此時(shí)你一定會(huì)覺得,成功近在咫尺了。再
執(zhí)行目標(biāo)文件./hello,結(jié)果卻在你的意料之外:
./hello: error while loading shared libraries: libhello.so.0 : cannot open shared object file:
No such file or directory
在執(zhí)行目標(biāo)文件的時(shí)候,Shell 找不到共享庫(kù)的位置,需要我們手工載入庫(kù)路徑。
5. shell 搜索動(dòng)態(tài)庫(kù)路徑位置的兩種方法
(1) 使用命令導(dǎo)入動(dòng)態(tài)庫(kù)的路徑,命令如下:
export LD_LIBRARY_PATH=dir (如/usr/local/lib)
(2) 修改/etc/ld.so.conf 文件,加入搜索路徑,修改后用ldconfig 命令載入修改。
將自己可能存放庫(kù)文件的路徑都加入到/etc/ld.so.conf 中是明智的選擇 ^_^。添加
方法也極其簡(jiǎn)單,將庫(kù)文件的絕對(duì)路徑直接寫進(jìn)去就OK 了,一行一個(gè)。例如:
/usr/local/lib
/usr/lib
/lib
需要注意的是:這種搜索路徑的設(shè)置方式對(duì)于程序連接時(shí)的庫(kù)(包括共享庫(kù)和靜態(tài)
庫(kù))的定位已經(jīng)足夠了,但是對(duì)于使用了共享庫(kù)的程序的執(zhí)行還是不夠的。這是 因?yàn)?br />為了加快程序執(zhí)行時(shí)對(duì)共享庫(kù)的定位速度,避免使用搜索路徑查找共享庫(kù)的低效率,所
以是直接讀取庫(kù)列表文件 /etc/ld.so.cache 從中進(jìn)行搜索的。/etc/ld.so.cache 是一個(gè)非
文本的數(shù)據(jù)文件,不能直接編輯,它是根據(jù) /etc/ld.so.conf 中設(shè)置的搜索路徑由
/sbin/ldconfig 命令將這些搜索路徑下的共享庫(kù)文件集中在一起而生成的(ldconfig 命令
要以 root 權(quán)限執(zhí)行)。因此,為了保證程序執(zhí)行時(shí)對(duì)庫(kù)的定位,在 /etc/ld.so.conf 中
進(jìn)行了庫(kù)搜索路徑的設(shè)置之后,還必須要運(yùn)行 /sbin/ldconfig 命令更新 /etc/ld.so.cache
文件之后才可以。ldconfig ,簡(jiǎn)單的說(shuō),它的作用就是將/etc/ld.so.conf 列出的路徑下的庫(kù)
文件 緩存到/etc/ld.so.cache 以供使用。因此當(dāng)安裝完一些庫(kù)文件,(例如剛安裝好glib),
或者修改ld.so.conf 增加新的庫(kù)路徑后,需要運(yùn)行一下/sbin/ldconfig 使所有的庫(kù)文件都
被緩存到ld.so.cache 中,如果沒做,即使庫(kù)文件明明就在/usr/lib 下的,也是不會(huì)被使
用的,結(jié)果編譯過(guò)程中報(bào)錯(cuò),缺少xxx 庫(kù),去查看發(fā)現(xiàn)明明就在那放著,搞的想大罵
computer 蠢豬一個(gè)^_^。極力推薦使用這種方法!
利用gcc 創(chuàng)建和使用動(dòng)態(tài)庫(kù)
1. 用下面的命令將mylib.c 程序創(chuàng)建成一個(gè)動(dòng)態(tài)庫(kù):
gcc –fPIC –o mylib.o –c mylib.c
gcc –shared –o libtt.so mylib.o
-fPIC 作用于編譯階段,告訴編譯器產(chǎn)生與位置無(wú)關(guān)代碼(Position-Independent Code),
則產(chǎn)生的代碼中,沒有絕對(duì)地址,全部使用相對(duì)地址,故而代碼可以被加載器加載到內(nèi)存的
任意位置,都可以正確的執(zhí)行。這正是共享庫(kù)所要求的,共享庫(kù)被加載時(shí),在內(nèi)存的位置不
是固定的。
-shared 作用于鏈接階段,實(shí)際傳遞給鏈接器ld,讓其添加作為共享庫(kù)所需要的額外描
述信息,去除共享庫(kù)所不需的信息。
也可以直接使用下面一條命令:
gcc –fPIC –shared –o libtt.so mylib.c
2. 將動(dòng)態(tài)庫(kù)拷貝到linux 的標(biāo)準(zhǔn)庫(kù)中,usr/local/lib 或者/usr/lib 或者/lib:
cp libttt.so /usr/local/lib
3. 編譯src 目錄下的源程序時(shí),指定動(dòng)態(tài)庫(kù)文件的目錄,調(diào)用動(dòng)態(tài)庫(kù)中的函數(shù)
gcc –o test test.c /usr/lib/libttt.so
4. 設(shè)置shell 動(dòng)態(tài)庫(kù)搜索路徑,運(yùn)行生成的可執(zhí)行文件。
---------------------------------------------------------------------------

AUTOMAKE_OPTIONS=foreign

INCLUDES=-I$(top_srcdir)/libpr/include -I$(top_srcdir)/vt/include

noinst_PROGRAMS =libvt.so
libvt_so_SOURCES=vty/vtcmd.c vty/vtdrv.c vty/vty.c vty/evtd.c telnet/telcmd.c telnet/teldrv.c telnet/telnegot.c telnet/telsvr.c telnet/telsess.c vty/defcmd.c vty/vtobj.c
libvt_so_LDFLAGS = -fPIC -shared
libvt_so_LDADD=$(top_srcdir)/libpr/libpr.a

bin_PROGRAMS = test_telnetd
test_telnetd_SOURCES = test/test_telnetd.c 
test_telnetd_LDADD=$(top_srcdir)/libpr/libpr.a libvt.so

上面這段代碼是從我的一個(gè)工程的Makefile.am中摘抄過(guò)來(lái)的,使用不少技巧。

1、動(dòng)態(tài)庫(kù)實(shí)際上也是ELF格式,所以我們使用PROGRAMS宏,automake將他按執(zhí)行文件規(guī)格設(shè)置環(huán)境,如果使用noinstall_LIBRARIES那么就變成*.a靜態(tài)庫(kù)了。

2、因?yàn)槭莿?dòng)態(tài)庫(kù),所以我們有必要加入-fPIC -shared

3、test_telnetd需要調(diào)用libvt.so,所以他們之間存在依賴關(guān)系。我們將libvt.so直接添加在LDADD 中,automake會(huì)自動(dòng)他們建立依賴關(guān)系,在Makefile中可以到test_telnetd_DEPENDENCIES,里面包含 libvt.so。

這里有幾個(gè)要緊需要注意:

1、$(bin_PROGRAMS)編譯順序在$(noinstall_PROGRAMS)之前,因?yàn)閠est_telnetd需要libvt.so,所以會(huì)找不到libvt.so。

2、在LDADD中如果使用-lvt不會(huì)建立依賴關(guān)系,如果使用$(top_srcdir)/vt/libvt.so也不行。

3、實(shí)際上如果不行的話,我們可以直接使用test_telnetd_DEPENDENCIES來(lái)指定libvt.so

4、如果需要make install 安裝libvt.so到lib,那么使用XXX_PROGRAMS=...的方法,然后指定XXXbin=...就行了。類似于bin_PROGRAMS。

這里使用到的技巧都很有用,值得記錄下來(lái)。

posted on 2011-06-01 13:22 艾斯維亞 閱讀(5661) 評(píng)論(0)  編輯 收藏 引用


只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            久热re这里精品视频在线6| 亚洲综合色视频| 免费在线一区二区| 亚洲人成网站在线播| 中文国产一区| 国产精品自在在线| 久久久久久成人| 91久久精品视频| 亚洲欧美日韩一区二区在线| 国产一级揄自揄精品视频| 久久午夜精品| 99视频在线观看一区三区| 久久狠狠久久综合桃花| 91久久一区二区| 国产精品每日更新| 久久先锋影音av| 在线中文字幕不卡| 免费的成人av| 亚洲综合国产激情另类一区| 一区二区三区自拍| 欧美体内she精视频| 欧美伊人久久久久久久久影院| 欧美激情视频给我| 欧美在线一二三区| 99v久久综合狠狠综合久久| 国产精品男女猛烈高潮激情| 麻豆成人在线观看| 亚洲一区影音先锋| 亚洲精品1区2区| 久久精品网址| 亚洲视频在线二区| 亚洲黄色一区二区三区| 国产模特精品视频久久久久| 欧美国产91| 久久精品国产精品| 亚洲一区美女视频在线观看免费| 欧美www视频| 久久激情五月丁香伊人| 中日韩高清电影网| 亚洲欧洲日产国产网站| 国产综合香蕉五月婷在线| 久久一二三国产| 亚洲一区二区免费在线| 亚洲日本中文字幕免费在线不卡| 国产一区99| 国产精品网站在线观看| 欧美三级特黄| 欧美精品一区二区三区视频| 久久综合给合久久狠狠色 | 免费欧美视频| 性欧美长视频| 亚洲女与黑人做爰| 亚洲视屏一区| 一区二区三区www| 亚洲狼人综合| 亚洲日本中文| 亚洲日本激情| 亚洲欧洲精品一区| 亚洲国产婷婷| 亚洲高清不卡| 亚洲国产精品小视频| 嫩模写真一区二区三区三州| 久久男女视频| 久热精品在线| 麻豆精品视频在线观看| 久热精品视频在线观看一区| 久久久久国产精品厨房| 久久精品国产77777蜜臀| 欧美在线看片| 久久久久国产精品厨房| 久久久成人精品| 久久免费精品日本久久中文字幕| 久久久另类综合| 久久亚洲综合| 女人香蕉久久**毛片精品| 欧美电影免费| 亚洲国产精品激情在线观看| 91久久精品美女高潮| 亚洲精品视频免费| 99国产精品久久久久久久成人热| 一本一本久久a久久精品综合麻豆 一本一本久久a久久精品牛牛影视 | 麻豆av一区二区三区久久| 久久五月天婷婷| 免费日韩视频| 欧美日韩国产探花| 国产精品毛片| 国产综合精品| 亚洲高清视频一区| 日韩亚洲在线| 午夜精品福利电影| 欧美在线一级视频| 免费看av成人| 亚洲美女91| 亚洲尤物精选| 久热精品视频| 欧美日韩aaaaa| 国产日韩欧美中文在线播放| 在线观看成人小视频| 日韩午夜精品视频| 欧美激情视频一区二区三区在线播放| 欧美xxx成人| 国产精品二区三区四区| 国产在线视频欧美| 亚洲精品一区在线| 午夜精品福利电影| 欧美成人免费全部| 这里只有视频精品| 久久久免费av| 欧美视频久久| 在线观看精品一区| 一本色道**综合亚洲精品蜜桃冫| 欧美亚洲一区二区在线| 免费在线欧美黄色| 亚洲视频精选| 麻豆精品精品国产自在97香蕉| 欧美日韩一二区| 海角社区69精品视频| 一区二区高清视频在线观看| 久久久噜噜噜久久人人看| 亚洲国产婷婷综合在线精品 | 欧美日韩少妇| 黄色在线一区| 亚洲午夜一区二区| 欧美国产精品日韩| 亚洲欧美日韩一区二区三区在线| 欧美成人精品在线视频| 国产日本欧美一区二区三区| 日韩五码在线| 美女露胸一区二区三区| 亚洲欧美视频一区| 欧美日韩国产美| 亚洲国产精品久久久久婷婷老年| 午夜一区二区三视频在线观看 | 免费看的黄色欧美网站| 国产区亚洲区欧美区| 一区二区精品在线| 亚洲高清视频的网址| 久久狠狠一本精品综合网| 国产精品青草久久| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲国产99精品国自产| 欧美一区91| 在线视频日本亚洲性| 欧美精品系列| 亚洲人成高清| 欧美岛国激情| 久热精品视频在线观看| 激情久久综合| 久久久精品性| 欧美一二区视频| 国产精品入口福利| 亚洲性人人天天夜夜摸| 亚洲精品一区二区三区av| 蜜桃精品一区二区三区 | 欧美日韩国产高清视频| 亚洲国产高清在线观看视频| 可以免费看不卡的av网站| 午夜精品亚洲一区二区三区嫩草| 国产精品入口麻豆原神| 午夜精品在线看| 亚洲视频观看| 国产精品欧美在线| 性做久久久久久久免费看| 亚洲午夜久久久久久久久电影院| 欧美日韩国语| 亚洲午夜精品久久久久久app| 99国产精品99久久久久久粉嫩| 欧美日韩大片| 亚洲性线免费观看视频成熟| av成人免费在线观看| 国产精品国产三级国产普通话三级| 一区二区三区四区五区精品视频| 日韩一级视频免费观看在线| 欧美三级电影大全| 欧美亚洲午夜视频在线观看| 亚洲制服少妇| 国内精品国产成人| 欧美大尺度在线| 欧美成人亚洲成人日韩成人| 99视频在线精品国自产拍免费观看 | 欧美激情1区2区3区| 欧美精品123区| 亚洲亚洲精品在线观看 | 国产精品久久久久久av福利软件 | 国产午夜精品视频| 免费不卡视频| 欧美理论电影在线播放| 亚洲免费人成在线视频观看| 午夜精品影院| 亚洲国产影院| 一区二区av| 激情久久久久久久| 亚洲国产综合在线| 国产精品伦一区| 久久综合中文| 欧美日韩一区二区视频在线观看| 欧美一区二区高清| 美日韩精品视频| 午夜精品视频一区| 美国成人直播|