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

Prayer

在一般中尋求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

Aix上使用庫(kù)文件和編寫(xiě)庫(kù)文件

Posted on 2008-12-31 13:45 Prayer 閱讀(10916) 評(píng)論(2)  編輯 收藏 引用 所屬分類(lèi): C/C++LINUX/UNIX/AIX
Aix上使用庫(kù)文件和編寫(xiě)庫(kù)文件。
一直以來(lái),被動(dòng)態(tài)鏈接庫(kù),靜態(tài)庫(kù),靜態(tài)鏈接,動(dòng)態(tài)鏈接,最近又聽(tīng)到運(yùn)行時(shí)鏈接弄得一塌糊涂。天下文章一大抄,知道的大家都知道,靜態(tài)鏈接是編譯時(shí)鏈接,生成的文件大,動(dòng)態(tài)鏈接是運(yùn)行時(shí)鏈接,生成的文件小。不知道的大家都不知道,或者大家都以為自己知道...有時(shí)windows,有時(shí)linux,有時(shí)Aix,有時(shí)gcc,有時(shí)g++,有時(shí)cc,有時(shí)xlc,有時(shí).so,有時(shí).a,有時(shí).dll有時(shí).lib有時(shí).o,太多不一致,太多麻煩。
還有,因?yàn)楣ぷ鞯脑颍?jīng)常在以Aix為工作環(huán)境,有的說(shuō).so是動(dòng)態(tài)鏈接庫(kù),.a是靜態(tài)鏈接庫(kù),但在Aix上咋看咋不像。
這周末,我花了兩天時(shí)間研究Aix上的這些問(wèn)題,用的是vac的xlc和ccs的ld,不能說(shuō)現(xiàn)在有多了解,但至少不像以前那么糊涂了。現(xiàn)在做做總結(jié)。

一,鏈接文件和鏈接方式。
其實(shí)沒(méi)有將動(dòng)態(tài)鏈接和動(dòng)態(tài)鏈接方式仔細(xì)地想一想,是導(dǎo)致我原來(lái)混亂的主要原因。之所以想到這個(gè)問(wèn)題,是在工作中要編寫(xiě)一個(gè)庫(kù)a,那我要編譯a,然后要寫(xiě)另一個(gè)庫(kù)b,b依賴(lài)于a,我又要編譯b,在這個(gè)過(guò)程中,我開(kāi)始思考,我當(dāng)初編譯a的時(shí)候是用的什么鏈接方式,我現(xiàn)在要用a了,那a又是什么?
于是我開(kāi)始區(qū)分鏈接文件和鏈接方式,開(kāi)始了以下實(shí)驗(yàn)
1,使用庫(kù)文件libc.a,靜態(tài)鏈接成可執(zhí)行程序
hello.c
C代碼 復(fù)制代碼
  1. #include <stdio.h>   
  2. int main() {   
  3.   printf("Hello, world!\n");   
  4. }  

運(yùn)行
# xlc  -o hello.o -c hello.c
生成目標(biāo)文件hello.o
運(yùn)行
ld -o hello_s -bstatic hello.o -lc
想靜態(tài)鏈接hello.o和libc.a,并生成可執(zhí)行文件hello_s。我這里沒(méi)有直接使用xlc來(lái)生成可執(zhí)行文件,是想把其中每一步弄清楚,結(jié)果求知的代價(jià)就是大量的時(shí)間和無(wú)盡的搜索。-bnso是告訴ld靜態(tài)鏈接。(你還可以用xlc的-E和-S參數(shù)看hello.c的預(yù)處理文件和匯編文件,再用as來(lái)編譯匯編文件生成對(duì)象文件)
結(jié)果
ld: 0711-327 WARNING: Entry point not found: __start
ld: 0711-244 ERROR: No csects or exported symbols have been saved.
這里說(shuō)沒(méi)有找到__start,這個(gè)__start看起來(lái)很像系統(tǒng)的一個(gè)子歷程。出現(xiàn)這個(gè)錯(cuò)的原因是因?yàn)槲覀儧](méi)有在鏈接時(shí)加入這樣一個(gè)庫(kù)/usr/lib/crt0.o,如果你用xlc直接靜態(tài)鏈接,那么這個(gè)庫(kù)應(yīng)該是xlc自己幫你加的(這個(gè)庫(kù)好像是線程初始化相關(guān)),你可以通過(guò)nm命令查看這個(gè)目標(biāo)文件相關(guān)的symbol,里面是包含有__start的。于是我們?cè)龠\(yùn)行
ld -o hello_s -bstatic hello.o -lc /usr/lib/crt0.o
結(jié)果報(bào)錯(cuò)說(shuō)一大堆符號(hào)找不到,
ld: 0711-224 WARNING: Duplicate symbol: .is_posix_tz
ld: 0711-224 WARNING: Duplicate symbol: .__icuinit
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
ld: 0711-317 ERROR: Undefined symbol: __loadx
ld: 0711-317 ERROR: Undefined symbol: _system_TB_config
ld: 0711-317 ERROR: Undefined symbol: errno
ld: 0711-317 ERROR: Undefined symbol: .___bzero
ld: 0711-317 ERROR: Undefined symbol: smcr_timebase
ld: 0711-317 ERROR: Undefined symbol: .___memmove
ld: 0711-317 ERROR: Undefined symbol: .___memset
ld: 0711-317 ERROR: Undefined symbol: _system_configuration
ld: 0711-317 ERROR: Undefined symbol: disclaim
ld: 0711-317 ERROR: Undefined symbol: kwritev
ld: 0711-317 ERROR: Undefined symbol: kpwritev
ld: 0711-317 ERROR: Undefined symbol: kpwrite
ld: 0711-317 ERROR: Undefined symbol: kwrite
ld: 0711-317 ERROR: Undefined symbol: kopenx
...
ld提示可以用-bloadmap來(lái)查看具體的出錯(cuò)信息,于是我運(yùn)行
ld -o hello_s -bstatic hello.o -lc /usr/lib/crt0.o -bloadmap:out.txt
并查看輸出文件,得到
...
ld: 0711-318 ERROR: Undefined symbols were found.
        The following symbols are in error:
 Symbol                    Inpndx  TY CL Source-File(Object-File) OR Import-File{Shared-object}
                              RLD: Address  Section  Rld-type Referencing Symbol
 ----------------------------------------------------------------------------------------------
 __loadx                   [262]   ER DS (/usr/lib/libc.a[shr.o])
                                   0006919c .data    R_POS    [1658]  <__loadx>
 _system_TB_config         [792]   ER UA (/usr/lib/libc.a[shr.o])
                                   000691a8 .data    R_POS    [1664]  <_system_TB_config>
 errno                     [8]     ER UA (/usr/lib/libc.a[shr.o])
                                   00068e3c .data    R_POS    [1226]  
...
這說(shuō)明是libc.a中的shr.o中的定義的一些符號(hào)找不到,于是我們將這個(gè)shr.o解出來(lái),運(yùn)行
ar -x /usr/lib/libc.a shr.o
得到shr.o,然后
ldd shr.o
得到輸出
shr.o needs:
         /unix
         /usr/lib/libcrypt.a(shr.o)
         /usr/lib/libc.a(shr.o)
這個(gè)shr.o需要以上三個(gè)庫(kù),libc.a我們已經(jīng)包括了,那么哪里去找/unix這個(gè)庫(kù)?相比現(xiàn)在所找不到的符號(hào)應(yīng)該都是系統(tǒng)調(diào)用吧。查看ld的手冊(cè)得知我們需要導(dǎo)入系統(tǒng)調(diào)用的符號(hào)表/lib/syscalls.exp
于是我們?cè)龠\(yùn)行
# ld -o hello_s -bstatic hello.o -lc /usr/lib/crt0.o -bI:/lib/syscalls.exp
結(jié)果還是報(bào)錯(cuò)
# ld -o hello_s -bstatic hello.o -lc /usr/lib/crt0.o -bI:/lib/syscalls.exp
ld: 0711-224 WARNING: Duplicate symbol: .open
ld: 0711-224 WARNING: Duplicate symbol: .openx
ld: 0711-224 WARNING: Duplicate symbol: .is_posix_tz
ld: 0711-224 WARNING: Duplicate symbol: .__icuinit
ld: 0711-224 WARNING: Duplicate symbol: .send
ld: 0711-224 WARNING: Duplicate symbol: .nrecvmsg
ld: 0711-224 WARNING: Duplicate symbol: .nrecvfrom
ld: 0711-224 WARNING: Duplicate symbol: .recvmsg
ld: 0711-224 WARNING: Duplicate symbol: .recvfrom
ld: 0711-224 WARNING: Duplicate symbol: .recv
ld: 0711-224 WARNING: Duplicate symbol: .nsendmsg
ld: 0711-224 WARNING: Duplicate symbol: .sendmsg
ld: 0711-224 WARNING: Duplicate symbol: .sendto
ld: 0711-224 WARNING: Duplicate symbol: .naccept
ld: 0711-224 WARNING: Duplicate symbol: .accept
ld: 0711-224 WARNING: Duplicate symbol: .thread_wait
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more information.
ld: 0711-317 ERROR: Undefined symbol: encrypted_pw_passlen
ld: 0711-317 ERROR: Undefined symbol: crypt_r
ld: 0711-317 ERROR: Undefined symbol: max_history_size
ld: 0711-317 ERROR: Undefined symbol: getpass_auto
ld: 0711-317 ERROR: Undefined symbol: max_pw_passlen

但現(xiàn)在只有少量符號(hào)找不到了,我查看/lib下還有哪些exp,但是沒(méi)有發(fā)現(xiàn)和加密解密相關(guān),我又查看/lib/syscalls.exp的內(nèi)容,發(fā)現(xiàn)里面也只是一些符號(hào)表,我懷疑是否可以自己創(chuàng)建一個(gè)符號(hào)表。結(jié)果網(wǎng)上的一篇資料證實(shí)了我的想法,于是我創(chuàng)建一個(gè)名為StaticLinkScript的文件,輸入:
#!
encrypted_pw_passlen
crypt_r
max_history_size
getpass_auto
max_pw_passlen
接著運(yùn)行:
# ld -o hello_s -bstatic hello.o -lc /usr/lib/crt0.o -bI:/lib/syscalls.exp -bI:StaticLinkScript
雖然有些警告,但是hello_s還是生出來(lái)了。運(yùn)行
# ./hello_s
Hello, world!成功出現(xiàn),然后再運(yùn)行
# ls -l
看到這個(gè)文件近3M,僅僅一個(gè)printf語(yǔ)句,可以估計(jì)這個(gè)是靜態(tài)鏈接出來(lái)的文件了
-rw-r--r--    1 root     system           78 Nov 30 04:41 StaticLinkScript
-rw-r--r--    1 root     system         1812 Dec 02 07:52 crt0.syms
-rw-r--r--    1 root     system           64 Nov 29 09:39 hello.c
-rw-r--r--    1 root     system         1100 Dec 02 07:28 hello.o
-rwxr-xr-x    1 root     system      2963741 Dec 02 08:28 hello_s
-rw-r--r--    1 root     system        36438 Dec 02 08:00 out.txt
-r-xr-xr-x    1 root     system      5111233 Dec 02 08:03 shr.o
-rw-r--r--    1 root     system       657423 Nov 30 03:41 shr.syms
在運(yùn)行
ldd hello_s
結(jié)果
hello_s needs:
         /unix
這充分證明hello_s是靜態(tài)出鏈接出來(lái)的。好了,有了上面的經(jīng)歷,后面就簡(jiǎn)單了

2,使用庫(kù)文件libc.a,動(dòng)態(tài)鏈接成可執(zhí)行程序
我們?nèi)サ?bstatic選項(xiàng),運(yùn)行
# ld -o hello_d hello.o -lc /usr/lib/crt0.o -bI:/lib/syscalls.exp -bI:StaticLinkScript
生成可以成功運(yùn)行的可執(zhí)行文件hello_d,我們?cè)?nbsp;運(yùn)行
# ldd hello_d
輸出
hello_d needs:
         /usr/lib/libc.a(shr.o)
         /unix
         /usr/lib/libcrypt.a(shr.o)
這說(shuō)明hello_d是動(dòng)態(tài)鏈接出來(lái)的。或者運(yùn)行
# ls -l
得到
-rwxr-xr-x    1 root     system         4402 Dec 02 08:37 hello_d
-rwxr-xr-x    1 root     system      2963741 Dec 02 08:28 hello_s


這里我們得到一個(gè)結(jié)論,Aix上其實(shí)沒(méi)有動(dòng)態(tài)鏈接庫(kù)和靜態(tài)鏈接庫(kù)的概念,只有共享對(duì)象的概念: shared object,即so,拿到一個(gè).so,你可以將它靜態(tài)鏈接到某個(gè)可執(zhí)行程序上去,也可將它靜態(tài)鏈接到某個(gè)可執(zhí)行程序上去。

3,關(guān)于-bstatic選項(xiàng)和-nso選項(xiàng)
手冊(cè)上說(shuō),它只將它之后的共享對(duì)象以靜態(tài)鏈接的方式鏈接起來(lái),所以,我們來(lái)看看以下結(jié)果
# ld -o hello_s -bstatic hello.o -lc /usr/lib/crt0.o -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ld -o hello_s2 -lc -bstatic hello.o /usr/lib/crt0.o -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ld -o hello_s3 hello.o -bstatic -lc /usr/lib/crt0.o -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ld -o hello_s4 -lc -bnso hello.o /usr/lib/crt0.o -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ls -l
-rwxr-xr-x    1 root     system         4402 Dec 02 08:37 hello_d
-rwxr-xr-x    1 root     system      2963741 Dec 02 08:28 hello_s
-rwxr-xr-x    1 root     system         4402 Dec 02 08:38 hello_s2
-rwxr-xr-x    1 root     system      2963741 Dec 02 08:39 hello_s3
-rwxr-xr-x    1 root     system      2963741 Dec 02 09:13 hello_s4

這驗(yàn)證了-bstatic并不是讓所有共享對(duì)象以靜態(tài)方式鏈接。同樣,我們知道了.so和.o文件的區(qū)別,.so可以動(dòng)態(tài)或靜態(tài)鏈接到結(jié)果,而.o好像只能靜態(tài)鏈接到結(jié)果,或者說(shuō).o根本就不是共享文件,不能用上動(dòng)態(tài)鏈接的概念,只能說(shuō)被鏈接,那么這里的鏈接就只能是將.o文件的靜態(tài)鏈接了
另外,以上例子說(shuō)明-bnso選項(xiàng)是對(duì)全局有效的。

4,編寫(xiě)“靜態(tài)鏈接庫(kù)”,和使用“靜態(tài)鏈接庫(kù)”
按照我們第3步的分析,所謂的靜態(tài)鏈接庫(kù)可以認(rèn)為就是.o文件,aix上又可以把文件打包成.a文件。難怪有人會(huì)說(shuō).a就是靜態(tài)鏈接庫(kù)
我們先寫(xiě)源文件mylib.h和mylib.c
mylib.h
C代碼 復(fù)制代碼
  1. void hello();   
  2. mylib.c   
  3. #include <stdio.h>   
  4. int m1 = 1;   
  5. char m2[10];   
  6. char *m3 = "jjww";   
  7.   
  8. void hello(){   
  9.   int i = 0;   
  10.   char name[10];   
  11.   name[0] = 'l';   
  12.   name[1] = 'i';   
  13.   name[2] = 'u';   
  14.   name[3] = '\0';   
  15.   
  16.   printf("success call from perl to c library: i=%d, name=%s, m3=%s\n", i, name, m3);   
  17. }  

運(yùn)行
# xlc -o mylib.o -c mylib.c
得到mylib.o,打包成mylib.a,運(yùn)行
ar -r mylib.a mylib.o
好了,所謂的“靜態(tài)鏈接庫(kù)”就出來(lái)了
編寫(xiě)應(yīng)用程序test_lib.c
C代碼 復(fù)制代碼
  1. #include "mylib.h"   
  2. int main() {   
  3.   hello();   
  4. }  

運(yùn)行
# xlc -o test_lib.o -c test_lib.c
得到對(duì)象文件test_lib.o
運(yùn)行
# ld -o test_lib_s test_lib.o mylib.o -bnso /usr/lib/crt0.o -lc -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ld -o test_lib_s2 test_lib.o mylib.a -bnso /usr/lib/crt0.o -lc -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ld -o test_lib_d test_lib.o mylib.o /usr/lib/crt0.o -lc -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ld -o test_lib_d2 test_lib.o mylib.a /usr/lib/crt0.o -lc -bI:/lib/syscalls.exp -bI:StaticLinkScript
# mv mylib.a libmylib.a
# ld -o test_lib_s3 test_lib.o -L"." -lmylib /usr/lib/crt0.o -lc -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ls -l 
得到
-rwxr-xr-x    1 root     system         4868 Dec 02 09:22 test_lib_d
-rwxr-xr-x    1 root     system         4868 Dec 02 09:22 test_lib_d2
-rwxr-xr-x    1 root     system      2964203 Dec 02 09:19 test_lib_s
-rwxr-xr-x    1 root     system      2964203 Dec 02 09:19 test_lib_s2
-rwxr-xr-x    1 root     system         4870 Dec 02 09:28 test_lib_s3
前兩個(gè)語(yǔ)句我是靜態(tài)鏈接成可執(zhí)行程序,接下來(lái)的兩個(gè)采用動(dòng)態(tài)鏈接,最后一個(gè),我仿照l(shuí)ibc.a生成了一個(gè)libmylib.a,想動(dòng)態(tài)鏈接mylib.a,但是發(fā)現(xiàn)test_lib_s3比test_lib_d和test_lib_d2略大,而且
# ldd test_lib_s3
得到
test_lib_s3 needs:
         /usr/lib/libc.a(shr.o)
         /unix
         /usr/lib/libcrypt.a(shr.o)
依賴(lài)列表中沒(méi)有/libmylib.a,可以說(shuō)明/libmylib.a還是被靜態(tài)鏈接的,就和其他的test_lib.o一樣

5,編寫(xiě)共享對(duì)象.so,和使用.so
# xlc -o libmylib.so  -qmkshrobj mylib.c
# xlc -o libmylib2.so -qmkshrobj -c mylib.c
生成共享對(duì)象libmylib.so,注意前者沒(méi)有-c而后者有,libmylib2.so被生成為一般的oject文件,雖然其后綴是.so,比如
# ldd libmylib.so
輸出
libmylib.so needs:
         /usr/lib/libc.a(shr.o)
         /unix
         /usr/lib/libcrypt.a(shr.o)
# ldd libmylib2.so
輸出
libmylib2.so needs:
除了大小和mylib.o一樣外,libmylib2.so同樣不依賴(lài)任何庫(kù)
運(yùn)行
# ld -o test_lib_ss  -lc libmylib.so test_lib.o -bnso /usr/lib/crt0.o -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ld -o test_lib_dd  -lc libmylib.so test_lib.o /usr/lib/crt0.o -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ld -o test_lib_dd2 -lc -L"." libmylib.so test_lib.o /usr/lib/crt0.o -bI:/lib/syscalls.exp -bI:StaticLinkScript
# ldd test_lib_dd
test_lib_dd needs:
         /usr/lib/libc.a(shr.o)
Cannot find libmylib.so
         /unix
         /usr/lib/libcrypt.a(shr.o)
# ldd test_lib_dd2
test_lib_dd2 needs:
         /usr/lib/libc.a(shr.o)
         ./libmylib.so
         /unix
         /usr/lib/libcrypt.a(shr.o)
test_lib_dd雖然成功生成,但是文件有問(wèn)題,從ldd test_lib_dd2的結(jié)果看出,/libmylib.so是被動(dòng)態(tài)鏈接了

參考資料
ld手冊(cè)
xlc手冊(cè)
http://linux.chinaitlab.com/c/769617_2.html
http://faq.csdn.net/read/201458.html
http://post.doit.wisc.edu/library/aix51/usr/share/man/info/en_US/a_doc_lib/libs/basetrf1/crypt.htm
http://blog.163.com/cn_prince/blog/static/638790120078289170781/
http://blog.solrex.cn/articles/the-true-story-of-hello-world.html

Feedback

# re: Aix上使用庫(kù)文件和編寫(xiě)庫(kù)文件[未登錄](méi)  回復(fù)  更多評(píng)論   

2015-10-27 21:50 by 東東
很好的講解,學(xué)習(xí)了,感謝分享

# re: Aix上使用庫(kù)文件和編寫(xiě)庫(kù)文件  回復(fù)  更多評(píng)論   

2015-12-01 15:00 by 藍(lán)藍(lán)
真的很不錯(cuò),學(xué)習(xí)到很多
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            欧美一区亚洲一区| 久久婷婷国产综合国色天香| 亚洲影院免费观看| 欧美日韩国产三区| 亚洲欧美激情视频| 欧美一区二区视频97| 狠狠干狠狠久久| 亚洲大胆人体在线| 久久香蕉精品| 一区二区av在线| 香蕉av福利精品导航| 91久久精品日日躁夜夜躁国产| 亚洲黄色免费| 国产视频久久| 亚洲国产日韩欧美在线图片| 欧美性猛片xxxx免费看久爱| 欧美freesex8一10精品| 久久久久成人精品| 欧美成人免费小视频| 久久精品男女| 国产精品国产三级国产aⅴ入口| 美女亚洲精品| 国产欧美日韩不卡免费| 亚洲国产精品成人| 国内精品模特av私拍在线观看| 亚洲高清在线精品| 国产欧美一区二区精品性色| 亚洲激情在线观看| 日韩一级精品视频在线观看| 亚洲精品自在在线观看| 久久婷婷人人澡人人喊人人爽| 篠田优中文在线播放第一区| 欧美激情中文字幕乱码免费| 亚洲激情影院| 亚洲一二三区精品| 欧美日韩一区在线观看| 亚洲国产91| 亚洲精品网站在线播放gif| 久久久国产一区二区| 蜜臀av性久久久久蜜臀aⅴ四虎| 国产综合av| 欧美激情影音先锋| 一区二区三区高清在线观看| 亚洲天堂激情| 国产精品久久久久影院色老大| 亚洲美女av网站| 久久精品二区亚洲w码| 在线观看亚洲精品| 欧美日韩综合另类| 欧美r片在线| 欧美在线播放高清精品| 91久久精品日日躁夜夜躁国产| 亚洲欧美精品suv| 亚洲欧洲美洲综合色网| 国产精品v欧美精品v日韩| 亚洲一区二区三区在线看| 国内揄拍国内精品少妇国语| 欧美高清成人| 久久经典综合| 欧美一区二区三区播放老司机| 亚洲电影在线播放| 另类春色校园亚洲| 久久精品国产99国产精品| 亚洲手机在线| 亚洲欧美日本国产有色| 亚洲图色在线| 99精品欧美一区二区三区综合在线| 国产人妖伪娘一区91| 国产精品久久久久久久久久ktv| 久久午夜影视| 久久久噜噜噜久久中文字免| 亚洲欧美精品伊人久久| 日韩亚洲欧美一区| 亚洲精品综合精品自拍| 亚洲人成网站色ww在线| 亚洲国产精品久久久久婷婷老年 | 欧美三级乱人伦电影| 欧美成人一区二区三区在线观看| 欧美一区二区三区精品电影| 99在线精品观看| 亚洲视频精选| 午夜激情久久久| 午夜精品福利在线| 久久精品视频在线| 久久人人97超碰国产公开结果| 久久字幕精品一区| 欧美国产乱视频| 国产精品成人免费| 国产欧美精品xxxx另类| 亚洲国产精品ⅴa在线观看| 亚洲欧洲在线看| 亚洲深夜激情| 亚洲福利国产精品| 亚洲伊人网站| 亚洲福利小视频| 亚洲视频中文字幕| 久久免费视频网| 国产精品久久久久久久久久久久| 国产一区亚洲| 一区二区三区日韩精品视频| 欧美尤物巨大精品爽| 欧美国产日韩一区| 欧美在线观看视频一区二区三区 | 国内外成人在线| 亚洲激情电影中文字幕| 久久国产直播| 欧美日韩国产色站一区二区三区| 国产亚洲一级高清| 亚洲欧美日韩中文视频| 亚洲国产成人久久综合一区| 亚洲午夜视频在线观看| 欧美日韩系列| 亚洲人屁股眼子交8| 国产一区二区三区无遮挡| 蜜桃av一区二区| 中文欧美日韩| 欧美日韩美女一区二区| 夜夜夜久久久| 亚洲日本欧美日韩高观看| 亚洲三级性片| 麻豆国产va免费精品高清在线| 老司机aⅴ在线精品导航| 亚洲国产一区在线观看| 99re亚洲国产精品| 黄色小说综合网站| 亚洲成人在线网站| 国产精品theporn88| 中日韩视频在线观看| 亚洲午夜精品一区二区| 久久成人av少妇免费| 亚洲欧美日韩一区在线| 久久久久一区二区三区四区| 在线综合欧美| 鲁大师影院一区二区三区| 亚洲理伦电影| 久久久国产精品一区二区中文| 欧美国产高清| 中日韩午夜理伦电影免费| 欧美怡红院视频| 亚洲综合色噜噜狠狠| 久久综合给合| 久久人人97超碰人人澡爱香蕉| 欧美精品三级日韩久久| 久久亚洲午夜电影| 国产午夜精品福利| 久久精品盗摄| 欧美肥婆bbw| 亚洲另类一区二区| 亚洲影视九九影院在线观看| 黄网站色欧美视频| 性欧美video另类hd性玩具| 亚洲精品一区中文| 麻豆国产精品777777在线| 久久九九99| 国产精品视频在线观看| 艳妇臀荡乳欲伦亚洲一区| 亚洲国产精品va在线看黑人动漫| 午夜在线a亚洲v天堂网2018| 亚洲自拍偷拍色片视频| 欧美日本免费| 亚洲乱码国产乱码精品精| 亚洲精品婷婷| 欧美三级网址| 欧美一级大片在线免费观看| 久久久久久久欧美精品| 久久久久久久97| 激情综合网址| 老司机亚洲精品| 亚洲国产精品久久久久婷婷老年| 精品成人在线视频| 欧美激情亚洲视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 亚洲一区二区三区久久| 久久精品国产2020观看福利| 国产精品一区在线观看| 欧美一级专区| 亚洲美女诱惑| 国产日韩欧美精品综合| 久久久久青草大香线综合精品| 亚洲高清视频在线观看| 午夜天堂精品久久久久| 国内精品久久久久影院优 | 欧美国产综合| 免费视频亚洲| 性18欧美另类| 亚洲精品影院在线观看| 欧美一级大片在线免费观看| **欧美日韩vr在线| 国产精品日韩一区二区三区| 久久综合999| 欧美一区二区三区视频在线| 欧美高潮视频| 久久一区二区三区超碰国产精品| 一本久道久久久| 精品99一区二区| 国产欧美视频在线观看| 欧美香蕉视频| 欧美日韩一区高清| 欧美日韩国产在线观看| 欧美承认网站|