久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

gcc选项 和 gdb 使用

發(fā)布時間:2025/3/15 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gcc选项 和 gdb 使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

CC 編譯詳解

GNU CC(簡稱為Gcc)是GNU項目中符合ANSI C標準的編譯系統(tǒng),能夠編譯用C、C++和Object C等語言編寫的程序。Gcc不僅功能強大,而且可以編譯如C、C++、Object C、Java、Fortran、Pascal、Modula-3和Ada等多種語言,而且Gcc又是一個交叉平臺編譯器,它能夠在當前CPU平臺上為多種不同體系結構的硬件平臺開發(fā)軟件,因此尤其適合在嵌入式領域的開發(fā)編譯。本章中的示例,除非特別注明,否則均采用Gcc版本為4.0.0。

?

?

GCC入門基礎

表3.6 Gcc所支持后綴名解釋

后 綴 名

所對應的語言

后 綴 名

所對應的語言

.c

C原始程序

.s/.S

匯編語言原始程序

.C/.cc/.cxx

C++原始程序

.h

預處理文件(頭文件)

.m

Objective-C原始程序

.o

目標文件

.i

已經過預處理的C原始程序

.a/.so

編譯后的庫文件

.ii

已經過預處理的C++原始程序

? ?

如本章開頭提到的,Gcc的編譯流程分為了四個步驟,分別為:

· 預處理(Pre-Processing)

· 編譯(Compiling)

· 匯編(Assembling)

· 鏈接(Linking)

下面就具體來查看一下Gcc是如何完成四個步驟的。

首先,有以下hello.c源代碼

#include<stdio.h>

int main()

{

printf("Hello! This is our embedded world!n");

return 0;

}

(1)預處理階段

在該階段,編譯器將上述代碼中的stdio.h編譯進來,并且用戶可以使用Gcc的選項”-E”進行查看,該選項的作用是讓Gcc在預處理結束后停止編譯過程。

?

注意

Gcc指令的一般格式為:Gcc [選項] 要編譯的文件 [選項] [目標文件]

其中,目標文件可缺省,Gcc默認生成可執(zhí)行的文件,命為:編譯文件.out

?

[root@localhost Gcc]#?Gcc –E hello.c –o hello.i

?

在此處,選項”-o”是指目標文件,由表3.6可知,”.i”文件為已經過預處理的C原始程序。以下列出了hello.i文件的部分內容:

?

typedef int (*__gconv_trans_fct) (struct __gconv_step *,

struct __gconv_step_data *, void *,

__const unsigned char *,

__const unsigned char **,

__const unsigned char *, unsigned char **,

size_t *);

# 2 "hello.c" 2

int main()

{

printf("Hello! This is our embedded world!n");

return 0;

}

?

由此可見,Gcc確實進行了預處理,它把”stdio.h”的內容插入到hello.i文件中。

(2)編譯階段

接下來進行的是編譯階段,在這個階段中,Gcc首先要檢查代碼的規(guī)范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤后,Gcc把代碼翻譯成匯編語言。用戶可以使用”-S”選項來進行查看,該選項只進行編譯而不進行匯編,生成匯編代碼。

?

[root@localhost Gcc]# Gcc –S hello.i –o hello.s

?

以下列出了hello.s的內容,可見Gcc已經將其轉化為匯編了,感興趣的讀者可以分析一下這一行簡單的C語言小程序是如何用匯編代碼實現的。

?

.file "hello.c"

.section .rodata

.align 4

.LC0:

.string"Hello! This is our embedded world!"

.text

.globl main

.type main, @function

main:

pushl �p

movl %esp, �p

subl $8, %esp

andl $-16, %esp

movl $0, �x

addl $15, �x

addl $15, �x

shrl $4, �x

sall $4, �x

subl �x, %esp

subl $12, %esp

pushl $.LC0

call puts

addl $16, %esp

movl $0, �x

leave

ret

.size main, .-main

.ident "GCC: (GNU) 4.0.0 20050519 (Red Hat 4.0.0-8)"

.section .note.GNU-stack,"",@progbits

?

(3)匯編階段

匯編階段是把編譯階段生成的”.s”文件轉成目標文件,讀者在此可使用選項”-c”就可看到匯編代碼已轉化為”.o”的二進制目標代碼了。如下所示:

?

[root@localhost Gcc]# Gcc –c?hello.s –o hello.o

?

(4)鏈接階段

在成功編譯之后,就進入了鏈接階段。在這里涉及到一個重要的概念:函數庫。

讀者可以重新查看這個小程序,在這個程序中并沒有定義”printf”的函數實現,且在預編譯中包含進的”stdio.h”中也只有該函數的聲明,而沒有定義函數的實現,那么,是在哪里實現”printf”函數的呢?最后的答案是:系統(tǒng)把這些函數實現都被做到名為libc.so.6的庫文件中去了,在沒有特別指定時,Gcc會到系統(tǒng)默認的搜索路徑”/usr/lib”下進行查找,也就是鏈接到libc.so.6庫函數中去,這樣就能實現函數”printf”了,而這也就是鏈接的作用。

函數庫一般分為靜態(tài)庫和動態(tài)庫兩種。靜態(tài)庫是指編譯鏈接時,把庫文件的代碼全部加入到可執(zhí)行文件中,因此生成的文件比較大,但在運行時也就不再需要庫文件了。其后綴名一般為”.a”。動態(tài)庫與之相反,在編譯鏈接時并沒有把庫文件的代碼加入到可執(zhí)行文件中,而是在程序執(zhí)行時由運行時鏈接文件加載庫,這樣可以節(jié)省系統(tǒng)的開銷。動態(tài)庫一般后綴名為”.so”,如前面所述的libc.so.6就是動態(tài)庫。Gcc在編譯時默認使用動態(tài)庫。

完成了鏈接之后,Gcc就可以生成可執(zhí)行文件,如下所示。

?

[root@localhost Gcc]# Gcc hello.o –o hello

?

運行該可執(zhí)行文件,出現正確的結果如下。

?

[root@localhost Gcc]# ./hello

Hello! This is our embedded world!

Gcc編譯選項分析

Gcc有超過100個的可用選項,主要包括總體選項、告警和出錯選項、優(yōu)化選項和體系結構相關選項。以下對每一類中最常用的選項進行講解。

(1)總體選項

Gcc的總結選項如表3.7所示,很多在前面的示例中已經有所涉及。

表3.7 Gcc總體選項列表

后綴名

所對應的語言

-c

只是編譯不鏈接,生成目標文件“.o”

-S

只是編譯不匯編,生成匯編代碼

-E

只進行預編譯,不做其他處理

-g

在可執(zhí)行程序中包含標準調試信息

-o file

把輸出文件輸出到file里

-v

打印出編譯器內部編譯各過程的命令行信息和編譯器的版本

-I dir

在頭文件的搜索路徑列表中添加dir目錄

-L dir

在庫文件的搜索路徑列表中添加dir目錄

-static

鏈接靜態(tài)庫

-llibrary

連接名為library的庫文件

?

對于“-c”、“-E”、“-o”、“-S”選項在前一小節(jié)中已經講解了其使用方法,在此主要講解另外兩個非常常用的庫依賴選項“-I dir”和“-L dir”。

· “-I dir”

正如上表中所述,“-I dir”選項可以在頭文件的搜索路徑列表中添加dir目錄。由于Linux中頭文件都默認放到了“/usr/include/”目錄下,因此,當用戶希望添加放置在其他位置的頭文件時,就可以通過“-I dir”選項來指定,這樣,Gcc就會到相應的位置查找對應的目錄。

比如在“/root/workplace/Gcc”下有兩個文件:

?

?

#include<my.h>

int main()

{

printf(“Hello!!n”);

return 0;

}

?

#include<stdio.h>

?

這樣,就可在Gcc命令行中加入“-I”選項:

?

[root@localhost Gcc] Gcc?hello1.c –I /root/workplace/Gcc/ -o hello1

?

這樣,Gcc就能夠執(zhí)行出正確結果。

?

小知識

在include語句中,“<>”表示在標準路徑中搜索頭文件,““””表示在本目錄中搜索。故在上例中,可把hello1.c的“#include<my.h>”改為“#include “my.h””,就不需要加上“-I”選項了。

?

· “-L dir”

選項“-L dir”的功能與“-I dir”類似,能夠在庫文件的搜索路徑列表中添加dir目錄。例如有程序hello_sq.c需要用到目錄“/root/workplace/Gcc/lib”下的一個動態(tài)庫libsunq.so,則只需鍵入如下命令即可:

?

[root@localhost Gcc]?Gcc hello_sq.c –L /root/workplace/Gcc/lib –lsunq –o hello_sq

?

需要注意的是,“-I dir”和“-L dir”都只是指定了路徑,而沒有指定文件,因此不能在路徑中包含文件名。

另外值得詳細解釋一下的是“-l”選項,它指示Gcc去連接庫文件libsunq.so。由于在Linux下的庫文件命名時有一個規(guī)定:必須以lib三個字母開頭。因此在用-l選項指定鏈接的庫文件名時可以省去lib三個字母。也就是說Gcc在對”-lsunq”進行處理時,會自動去鏈接名為libsunq.so的文件。

(2)告警和出錯選項

Gcc的告警和出錯選項如表3.8所示。

表3.8 Gcc總體選項列表

選項

含義

-ansi

支持符合ANSI標準的C程序

-pedantic

允許發(fā)出ANSI C標準所列的全部警告信息

選項

含義

-pedantic-error

允許發(fā)出ANSI C標準所列的全部錯誤信息

-w

關閉所有告警

-Wall

允許發(fā)出Gcc提供的所有有用的報警信息

-werror

把所有的告警信息轉化為錯誤信息,并在告警發(fā)生時終止編譯過程

?

下面結合實例對這幾個告警和出錯選項進行簡單的講解。

如有以下程序段:

?

#include<stdio.h>

?

void main()

{

long long tmp = 1;

printf(“This is a bad code!n”);

return 0;

}

?

這是一個很糟糕的程序,讀者可以考慮一下有哪些問題?

· “-ansi”

該選項強制Gcc生成標準語法所要求的告警信息,盡管這還并不能保證所有沒有警告的程序都是符合ANSI C標準的。運行結果如下所示:

?

[root@localhost Gcc]# Gcc?–ansi warning.c –o warning

warning.c: 在函數“main”中:

warning.c:7 警告:在無返回值的函數中,“return”帶返回值

warning.c:4 警告:“main”的返回類型不是“int”

?

可以看出,該選項并沒有發(fā)現”long long”這個無效數據類型的錯誤。

· “-pedantic”

允許發(fā)出ANSI C標準所列的全部警告信息,同樣也保證所有沒有警告的程序都是符合ANSI C標準的。其運行結果如下所示:

?

[root@localhost Gcc]# Gcc –pedantic warning.c –o warning

warning.c: 在函數“main”中:

warning.c:5 警告:ISO C90不支持“l(fā)ong long”

warning.c:7 警告:在無返回值的函數中,“return”帶返回值

warning.c:4 警告:“main”的返回類型不是“int”

?

可以看出,使用該選項查看出了”long long”這個無效數據類型的錯誤。

· “-Wall”

允許發(fā)出Gcc能夠提供的所有有用的報警信息。該選項的運行結果如下所示:

[root@localhost Gcc]# Gcc?–Wall warning.c –o warning

warning.c:4 警告:“main”的返回類型不是“int”

warning.c: 在函數”main”中:

warning.c:7 警告:在無返回值的函數中,”return”帶返回值

warning.c:5 警告:未使用的變量“tmp”

?

使用“-Wall”選項找出了未使用的變量tmp,但它并沒有找出無效數據類型的錯誤。

另外,Gcc還可以利用選項對單獨的常見錯誤分別指定警告,有關具體選項的含義感興趣的讀者可以查看Gcc手冊進行學習。

(3)優(yōu)化選項

Gcc可以對代碼進行優(yōu)化,它通過編譯選項“-On”來控制優(yōu)化代碼的生成,其中n是一個代表優(yōu)化級別的整數。對于不同版本的Gcc來講,n的取值范圍及其對應的優(yōu)化效果可能并不完全相同,比較典型的范圍是從0變化到2或3。

不同的優(yōu)化級別對應不同的優(yōu)化處理工作。如使用優(yōu)化選項“-O”主要進行線程跳轉(Thread Jump)和延遲退棧(Deferred Stack Pops)兩種優(yōu)化。使用優(yōu)化選項“-O2”除了完成所有“-O1”級別的優(yōu)化之外,同時還要進行一些額外的調整工作,如處理器指令調度等。選項“-O3”則還包括循環(huán)展開和其他一些與處理器特性相關的優(yōu)化工作。

雖然優(yōu)化選項可以加速代碼的運行速度,但對于調試而言將是一個很大的挑戰(zhàn)。因為代碼在經過優(yōu)化之后,原先在源程序中聲明和使用的變量很可能不再使用,控制流也可能會突然跳轉到意外的地方,循環(huán)語句也有可能因為循環(huán)展開而變得到處都有,所有這些對調試來講都將是一場噩夢。所以筆者建議在調試的時候最好不使用任何優(yōu)化選項,只有當程序在最終發(fā)行的時候才考慮對其進行優(yōu)化。

(4)體系結構相關選項

Gcc的體系結構相關選項如表3.9所示。

表3.9Gcc體系結構相關選項列表

選項

含義

-mcpu=type

針對不同的CPU使用相應的CPU指令。可選擇的type有i386、i486、pentium及i686等

-mieee-fp

使用IEEE標準進行浮點數的比較

-mno-ieee-fp

不使用IEEE標準進行浮點數的比較

-msoft-float

輸出包含浮點庫調用的目標代碼

-mshort

把int類型作為16位處理,相當于short int

-mrtd

強行將函數參數個數固定的函數用ret NUM返回,節(jié)省調用函數的一條指令

?

這些體系結構相關選項在嵌入式的設計中會有較多的應用,讀者需根據不同體系結構將對應的選項進行組合處理。在本書后面涉及到具體實例會有針對性的講解。

Gdb調試器

調試是所有程序員都會面臨的問題。如何提高程序員的調試效率,更好更快地定位程序中的問題從而加快程序開發(fā)的進度,是大家共同面對的。就如讀者熟知的Windows下的一些調試工具,如VC自帶的如設置斷點、單步跟蹤等,都受到了廣大用戶的贊賞。那么,在Linux下有什么很好的調試工具呢?

本文所介紹的Gdb調試器是一款GNU開發(fā)組織并發(fā)布的UNIX/Linux下的程序調試工具。雖然,它沒有圖形化的友好界面,但是它強大的功能也足以與微軟的VC工具等媲美。下面就請跟隨筆者一步步學習Gdb調試器。

Gdb使用流程

首先,筆者給出了一個短小的程序,由此帶領讀者熟悉一下Gdb的使用流程。強烈建議讀者能夠實際動手操作。

首先,打開Linux下的編輯器Vi或者Emacs,編輯如下代碼。(由于為了更好地熟悉Gdb的操作,筆者在此使用Vi編輯,希望讀者能夠參見3.3節(jié)中對Vi的介紹,并熟練使用Vi)。

?

?

#include <stdio.h>

int sum(int m);

int main()

{

int i,n=0;

sum(50);

for(i=1; i<=50; i++)

{

n += i;

}

printf("The sum of 1-50 is %d n", n );

?

}

int sum(int m)

{

int i,n=0;

for(i=1; i<=m;i++)

n += i;

printf("The sum of 1-m is %dn", n);

}

?

在保存退出后首先使用Gcc對test.c進行編譯,注意一定要加上選項”-g”,這樣編譯出的可執(zhí)行代碼中才包含調試信息,否則之后Gdb無法載入該可執(zhí)行文件。

?

[root@localhost Gdb]#?gcc -g test.c -o test

?

雖然這段程序沒有錯誤,但調試完全正確的程序可以更加了解Gdb的使用流程。接下來就啟動Gdb進行調試。注意,Gdb進行調試的是可執(zhí)行文件,而不是如”.c”的源代碼,因此,需要先通過Gcc編譯生成可執(zhí)行文件才能用Gdb進行調試。

?

[root@localhost Gdb]#?gdb test

GNU Gdb Red Hat Linux (6.3.0.0-1.21rh)

Copyright 2004 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public License, and you are

welcome to change it and/or distribute copies of it under certain conditions.

Type "show copying" to see the conditions.

There is absolutely no warranty for GDB. Type "show warranty" for details.

This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

(gdb)

?

可以看出,在Gdb的啟動畫面中指出了Gdb的版本號、使用的庫文件等信息,接下來就進入了由“(gdb)”開頭的命令行界面了。

(1)查看文件

在Gdb中鍵入”l”(list)就可以查看所載入的文件,如下所示:

?

?

注意

在Gdb的命令中都可使用縮略形式的命令,如“l(fā)”代便“l(fā)ist”,“b”代表“breakpoint”,“p”代表“print”等,讀者也可使用“help”命令查看幫助信息。

?

(Gdb)?l

1 #include <stdio.h>

2 int sum(int m);

3 int main()

4 {

5 int i,n=0;

6 sum(50);

7 for(i=1; i<=50; i++)

8 {

9 n += i;

10 }

(Gdb)?l

11 printf("The sum of 1~50 is %d n", n );

12

13 }

14 int sum(int m)

15 {

16 int i,n=0;

17 for(i=1; i<=m;i++)

18 n += i;

19 printf("The sum of 1~m is = %dn", n);

20 }

?

可以看出,Gdb列出的源代碼中明確地給出了對應的行號,這樣就可以大大地方便代碼的定位。

(2)設置斷點

設置斷點是調試程序中是一個非常重要的手段,它可以使程序到一定位置暫停它的運行。因此,程序員在該位置處可以方便地查看變量的值、堆棧情況等,從而找出代碼的癥結所在。

在Gdb中設置斷點非常簡單,只需在”b”后加入對應的行號即可(這是最常用的方式,另外還有其他方式設置斷點)。如下所示:

?

(Gdb)?b 6

Breakpoint 1 at 0x804846d: file test.c, line 6.

?

要注意的是,在Gdb中利用行號設置斷點是指代碼運行到對應行之前將其停止,如上例中,代碼運行到第五行之前暫停(并沒有運行第五行)。

(3)查看斷點情況

在設置完斷點之后,用戶可以鍵入”info b”來查看設置斷點情況,在Gdb中可以設置多個斷點。

?

(Gdb)?info b

Num Type Disp Enb Address What

1 breakpoint keep y 0x0804846d in main at test.c:6

?

(4)運行代碼

接下來就可運行代碼了,Gdb默認從首行開始運行代碼,可鍵入”r”(run)即可(若想從程序中指定行開始運行,可在r后面加上行號)。

?

(Gdb)?r

Starting program: /root/workplace/Gdb/test

Reading symbols from shared object read from target memory...done.

Loaded system supplied DSO at 0x5fb000

?

Breakpoint 1, main () at test.c:6

6 sum(50);

?

可以看到,程序運行到斷點處就停止了。

(5)查看變量值

在程序停止運行之后,程序員所要做的工作是查看斷點處的相關變量值。在Gdb中只需鍵入”p”+變量值即可,如下所示:

?

(Gdb)?p n

$1 = 0

(Gdb)?p i

$2 = 134518440

?

在此處,為什么變量”i”的值為如此奇怪的一個數字呢?原因就在于程序是在斷點設置的對應行之前停止的,那么在此時,并沒有把”i”的數值賦為零,而只是一個隨機的數字。但變量”n”是在第四行賦值的,故在此時已經為零。

?

小技巧

Gdb在顯示變量值時都會在對應值之前加上”$N”標記,它是當前變量值的引用標記,所以以后若想再次引用此變量就可以直接寫作”$N”,而無需寫冗長的變量名。

?

(6)單步運行

單步運行可以使用命令”n”(next)或”s”(step),它們之間的區(qū)別在于:若有函數調用的時候,”s”會進入該函數而”n”不會進入該函數。因此,”s”就類似于VC等工具中的”step in”,”n”類似與VC等工具中的”step over”。它們的使用如下所示:

?

(Gdb)?n

The sum of 1-m is 1275

7 for(i=1; i<=50; i++)

(Gdb)?s

sum (m=50) at test.c:16

16 int i,n=0;

?

可見,使用”n”后,程序顯示函數sum的運行結果并向下執(zhí)行,而使用”s”后則進入到sum函數之中單步運行。

(7)恢復程序運行

在查看完所需變量及堆棧情況后,就可以使用命令”c”(continue)恢復程序的正常運行了。這時,它會把剩余還未執(zhí)行的程序執(zhí)行完,并顯示剩余程序中的執(zhí)行結果。以下是之前使用”n”命令恢復后的執(zhí)行結果:

?

(Gdb)?c

Continuing.

The sum of 1-50 is :1275

?

Program exited with code 031.

?

可以看出,程序在運行完后退出,之后程序處于“停止狀態(tài)”。

?

小知識

在Gdb中,程序的運行狀態(tài)有“運行”、“暫?!焙汀巴V埂比N,其中“暫?!睜顟B(tài)為程序遇到了斷點或觀察點之類的,程序暫時停止運行,而此時函數的地址、函數參數、函數內的局部變量都會被壓入“?!?#xff08;Stack)中。故在這種狀態(tài)下可以查看函數的變量值等各種屬性。但在函數處于“停止”狀態(tài)之后,“棧”就會自動撤銷,它也就無法查看各種信息了。

Gdb基本命令

Gdb的命令可以通過查看help進行查找,由于Gdb的命令很多,因此Gdb的help將其分成了很多種類(class),用戶可以通過進一步查看相關class找到相應命令。如下所示:

?

(gdb)?help

List of classes of commands:

?

aliases -- Aliases of other commands

breakpoints -- Making program stop at certain points

data -- Examining data

files -- Specifying and examining files

internals -- Maintenance commands

Type "help" followed by a class name for a list of commands in that class.

Type "help" followed by command name for full documentation.

Command name abbreViations are allowed if unambiguous.

?

上述列出了Gdb各個分類的命令,注意底部的加粗部分說明其為分類命令。接下來可以具體查找各分類種的命令。如下所示:

?

(gdb) help data

Examining data.

?

List of commands:

?

call -- Call a function in the program

delete display -- Cancel some expressions to be displayed when program stops

delete mem -- Delete memory region

disable display -- Disable some expressions to be displayed when program stops

Type "help" followed by command name for full documentation.

Command name abbreViations are allowed if unambiguous.

?

至此,若用戶想要查找call命令,就可鍵入“help call”。

?

(gdb)?help call

Call a function in the program.

The argument is the function name and arguments, in the notation of the

current working language. The result is printed and saved in the value

history, if it is not void.

?

當然,若用戶已知命令名,直接鍵入“help [command]”也是可以的。

Gdb中的命令主要分為以下幾類:工作環(huán)境相關命令、設置斷點與恢復命令、源代碼查看命令、查看運行數據相關命令及修改運行參數命令。以下就分別對這幾類的命令進行講解。

1.工作環(huán)境相關命令

Gdb中不僅可以調試所運行的程序,而且還可以對程序相關的工作環(huán)境進行相應的設定,甚至還可以使用shell中的命令進行相關的操作,其功能極其強大。表3.10所示列出了Gdb常見工作環(huán)境相關命令。

表3.10 Gdb工作環(huán)境相關命令

命 令 格 式

含義

set args運行時的參數

指定運行時參數,如:set args 2

show args

查看設置好的運行參數

path dir

設定程序的運行路徑

show paths

查看程序的運行路徑

set enVironment var [=value]

設置環(huán)境變量

show enVironment [var]

查看環(huán)境變量

cd dir

進入到dir目錄,相當于shell中的cd命令

pwd

顯示當前工作目錄

shell command

運行shell的command命令

2.設置斷點與恢復命令

Gdb中設置斷點與恢復的常見命令如表3.11所示。

表3.11 Gdb設置斷點與恢復相關命令

命 令 格 式

含義

bnfo b

查看所設斷點

break 行號或函數名 <條件表達式>

設置斷點

tbreak 行號或函數名 <條件表達式>

設置臨時斷點,到達后被自動刪除

delete [斷點號]

刪除指定斷點,其斷點號為”info b”中的第一欄。若缺省斷點號則刪除所有斷點

disable [斷點號]]

停止指定斷點,使用”info b”仍能查看此斷點。同delete一樣,省斷點號則停止所有斷點

enable [斷點號]

激活指定斷點,即激活被disable停止的斷點

condition [斷點號] <條件表達式>

修改對應斷點的條件

ignore [斷點號]<num>

在程序執(zhí)行中,忽略對應斷點num次

step

單步恢復程序運行,且進入函數調用

next

單步恢復程序運行,但不進入函數調用

finish

運行程序,直到當前函數完成返回

c

繼續(xù)執(zhí)行函數,直到函數結束或遇到新的斷點

?

由于設置斷點在Gdb的調試中非常重要,所以在此再著重講解一下Gdb中設置斷點的方法。

Gdb中設置斷點有多種方式:其一是按行設置斷點,設置方法在3.5.1節(jié)已經指出,在此就不重復了。另外還可以設置函數斷點和條件斷點,在此結合上一小節(jié)的代碼,具體介紹后兩種設置斷點的方法。

① 函數斷點

Gdb中按函數設置斷點只需把函數名列在命令”b”之后,如下所示:

?

(gdb)?b sum

Breakpoint 1 at 0x80484ba: file test.c, line 16.

(gdb)?info b

Num Type Disp Enb Address What

1 breakpoint keep y 0x080484ba in sum at test.c:16

?

要注意的是,此時的斷點實際是在函數的定義處,也就是在16行處(注意第16行還未執(zhí)行)。

② 條件斷點

Gdb中設置條件斷點的格式為:b 行數或函數名 if 表達式。具體實例如下所示:

?

(gdb) b 8 if i==10

Breakpoint 1 at 0x804848c: file test.c, line 8.

(gdb) info b

Num Type Disp Enb Address What

1 breakpoint keep y 0x0804848c in main at test.c:8

stop only if i == 10

(gdb) r

Starting program: /home/yul/test

The sum of 1-m is 1275

?

Breakpoint 1, main () at test.c:9

9 n += i;

(gdb) p i

$1 = 10

?

可以看到,該例中在第8行(也就是運行完第7行的for循環(huán))設置了一個“i==0”的條件斷點,在程序運行之后可以看出,程序確實在i為10時暫停運行。

3.Gdb中源碼查看相關命令

在Gdb中可以查看源碼以方便其他操作,它的常見相關命令如表3.12所示:

表3.12 Gdb源碼查看相關相關命令

命 令 格 式

含義

list <行號>|<函數名>

查看指定位置代碼

file [文件名]

加載指定文件

forward-search 正則表達式

源代碼前向搜索

reverse-search 正則表達式

源代碼后向搜索

dir dir

停止路徑名

show directories

顯示定義了的源文件搜索路徑

info line

顯示加載到Gdb內存中的代碼

4.Gdb中查看運行數據相關命令

Gdb中查看運行數據是指當程序處于“運行”或“暫?!睜顟B(tài)時,可以查看的變量及表達式的信息,其常見命令如表3.13所示:

表3.13 Gdb查看運行數據相關命令

命 令 格 式

含義

print 表達式|變量

查看程序運行時對應表達式和變量的值

x <n/f/u>

查看內存變量內容。其中n為整數表示顯示內存的長度,f表示顯示的格式,u表示從當前地址往后請求顯示的字節(jié)數

display 表達式

設定在單步運行或其他情況中,自動顯示的對應表達式的內容

5.Gdb中修改運行參數相關命令

Gdb還可以修改運行時的參數,并使該變量按照用戶當前輸入的值繼續(xù)運行。它的設置方法為:在單步執(zhí)行的過程中,鍵入命令“set 變量=設定值”。這樣,在此之后,程序就會按照該設定的值運行了。下面,筆者結合上一節(jié)的代碼將n的初始值設為4,其代碼如下所示:

?

(Gdb)?b 7

Breakpoint 5 at 0x804847a: file test.c, line 7.

(Gdb)?r

Starting program: /home/yul/test

The sum of 1-m is 1275

?

Breakpoint 5, main () at test.c:7

7 for(i=1; i<=50; i++)

(Gdb)?set n=4

(Gdb)?c

Continuing.

The sum of 1-50 is 1279

?

Program exited with code 031.

?

可以看到,最后的運行結果確實比之前的值大了4。

?

?

Gdb的使用切記點:

· 在Gcc編譯選項中一定要加入”-g”。

· 只有在代碼處于“運行”或“暫?!睜顟B(tài)時才能查看變量值。

· 設置斷點后程序在指定行之前停止。

Make工程管理器

到此為止,讀者已經了解了如何在Linux下使用編輯器編寫代碼,如何使用Gcc把代碼編譯成可執(zhí)行文件,還學習了如何使用Gdb來調試程序,那么,所有的工作看似已經完成了,為什么還需要Make這個工程管理器呢?

所謂工程管理器,顧名思義,是指管理較多的文件的。讀者可以試想一下,有一個上百個文件的代碼構成的項目,如果其中只有一個或少數幾個文件進行了修改,按照之前所學的Gcc編譯工具,就不得不把這所有的文件重新編譯一遍,因為編譯器并不知道哪些文件是最近更新的,而只知道需要包含這些文件才能把源代碼編譯成可執(zhí)行文件,于是,程序員就不能不再重新輸入數目如此龐大的文件名以完成最后的編譯工作。

但是,請讀者仔細回想一下本書在3.1.2節(jié)中所闡述的編譯過程,編譯過程是分為編譯、匯編、鏈接不同階段的,其中編譯階段僅檢查語法錯誤以及函數與變量的聲明是否正確聲明了,在鏈接階段則主要完成是函數鏈接和全局變量的鏈接。因此,那些沒有改動的源代碼根本不需要重新編譯,而只要把它們重新鏈接進去就可以了。所以,人們就希望有一個工程管理器能夠自動識別更新了的文件代碼,同時又不需要重復輸入冗長的命令行,這樣,Make工程管理器也就應運而生了。

實際上,Make工程管理器也就是個“自動編譯管理器”,這里的“自動”是指它能夠根據文件時間戳自動發(fā)現更新過的文件而減少編譯的工作量,同時,它通過讀入Makefile文件的內容來執(zhí)行大量的編譯工作。用戶只需編寫一次簡單的編譯語句就可以了。它大大提高了實際項目的工作效率,而且?guī)缀跛蠰inux下的項目編程均會涉及到它,希望讀者能夠認真學習本節(jié)內容。

Makefile基本結構

Makefile是Make讀入的惟一配置文件,因此本節(jié)的內容實際就是講述Makefile的編寫規(guī)則。在一個Makefile中通常包含如下內容:

· 需要由make工具創(chuàng)建的目標體(target),通常是目標文件或可執(zhí)行文件;

· 要創(chuàng)建的目標體所依賴的文件(dependency_file);

· 創(chuàng)建每個目標體時需要運行的命令(command)。

它的格式為:

?

target: dependency_files

command

?

例如,有兩個文件分別為hello.c和hello.h,創(chuàng)建的目標體為hello.o,執(zhí)行的命令為gcc編譯指令:gcc –c hello.c,那么,對應的Makefile就可以寫為:

?

#The simplest example

hello.o: hello.c hello.h

gcc –c hello.c –o hello.o

?

接著就可以使用make了。使用make的格式為:make target,這樣make就會自動讀入Makefile(也可以是首字母小寫makefile)并執(zhí)行對應target的command語句,并會找到相應的依賴文件。如下所示:

?

[root@localhost makefile]#?make hello.o

gcc –c hello.c –o hello.o

[root@localhost makefile]# ls

hello.c hello.h?hello.o?Makefile

?

可以看到,Makefile執(zhí)行了“hello.o”對應的命令語句,并生成了“hello.o”目標體。

?

?

注意

在Makefile中的每一個command前必須有“Tab”符,否則在運行make命令時會出錯。

Makefile變量

上面示例的Makefile在實際中是幾乎不存在的,因為它過于簡單,僅包含兩個文件和一個命令,在這種情況下完全不必要編寫Makefile而只需在Shell中直接輸入即可,在實際中使用的Makefile往往是包含很多的文件和命令的,這也是Makefile產生的原因。下面就可給出稍微復雜一些的Makefile進行講解:

?

sunq:kang.o yul.o

Gcc kang.o bar.o -o myprog

kang.o?: kang.c kang.h head.h

Gcc –Wall –O -g –c kang.c -o kang.o

yul.o?: bar.c head.h

Gcc - Wall –O -g –c yul.c -o yul.o

?

在這個Makefile中有三個目標體(target),分別為sunq、kang.o和yul.o,其中第一個目標體的依賴文件就是后兩個目標體。如果用戶使用命令“make sunq”,則make管理器就是找到sunq目標體開始執(zhí)行。

這時,make會自動檢查相關文件的時間戳。首先,在檢查“kang.o”、“yul.o”和“sunq”三個文件的時間戳之前,它會向下查找那些把“kang.o”或“yul.o”做為目標文件的時間戳。比如,“kang.o”的依賴文件為:“kang.c”、“kang.h”、“head.h”。如果這些文件中任何一個的時間戳比“kang.o”新,則命令“gcc –Wall –O -g –c kang.c -o kang.o”將會執(zhí)行,從而更新文件“kang.o”。在更新完“kang.o”或“yul.o”之后,make會檢查最初的“kang.o”、“yul.o”和“sunq”三個文件,只要文件“kang.o”或“yul.o”中的任比文件時間戳比“sunq”新,則第二行命令就會被執(zhí)行。這樣,make就完成了自動檢查時間戳的工作,開始執(zhí)行編譯工作。這也就是Make工作的基本流程。

接下來,為了進一步簡化編輯和維護Makefile,make允許在Makefile中創(chuàng)建和使用變量。變量是在Makefile中定義的名字,用來代替一個文本字符串,該文本字符串稱為該變量的值。在具體要求下,這些值可以代替目標體、依賴文件、命令以及makefile文件中其它部分。在Makefile中的變量定義有兩種方式:一種是遞歸展開方式,另一種是簡單方式。

遞歸展開方式定義的變量是在引用在該變量時進行替換的,即如果該變量包含了對其他變量的應用,則在引用該變量時一次性將內嵌的變量全部展開,雖然這種類型的變量能夠很好地完成用戶的指令,但是它也有嚴重的缺點,如不能在變量后追加內容(因為語句:CFLAGS = $(CFLAGS) -O在變量擴展過程中可能導致無窮循環(huán))。

為了避免上述問題,簡單擴展型變量的值在定義處展開,并且只展開一次,因此它不包含任何對其它變量的引用,從而消除變量的嵌套引用。

遞歸展開方式的定義格式為:VAR=var

簡單擴展方式的定義格式為:VAR:=var

Make中的變量使用均使用格式為:$(VAR)

?

?

注意

變量名是不包括“:”、“#”、“=”結尾空格的任何字符串。同時,變量名中包含字母、數字以及下劃線以外的情況應盡量避免,因為它們可能在將來被賦予特別的含義。

變量名是大小寫敏感的,例如變量名“foo”、“FOO”、和“Foo”代表不同的變量。

推薦在makefile內部使用小寫字母作為變量名,預留大寫字母作為控制隱含規(guī)則參數或用戶重載命令選項參數的變量名。

?

下面給出了上例中用變量替換修改后的Makefile,這里用OBJS代替kang.o和yul.o,用CC代替Gcc,用CFLAGS代替“-Wall -O –g”。這樣在以后修改時,就可以只修改變量定義,而不需要修改下面的定義實體,從而大大簡化了Makefile維護的工作量。

經變量替換后的Makefile如下所示:

?

OBJS = kang.o yul.o

CC = Gcc

CFLAGS = -Wall -O -g

sunq : $(OBJS)

$(CC) $(OBJS) -o sunq

kang.o : kang.c kang.h

$(CC) $(CFLAGS) -c kang.c -o kang.o

yul.o : yul.c yul.h

$(CC) $(CFLAGS) -c yul.c -o yul.o

?

可以看到,此處變量是以遞歸展開方式定義的。

Makefile中的變量分為用戶自定義變量、預定義變量、自動變量及環(huán)境變量。如上例中的OBJS就是用戶自定義變量,自定義變量的值由用戶自行設定,而預定義變量和自動變量為通常在Makefile都會出現的變量,其中部分有默認值,也就是常見的設定值,當然用戶可以對其進行修改。

預定義變量包含了常見編譯器、匯編器的名稱及其編譯選項。下表3.14列出了Makefile中常見預定義變量及其部分默認值。

表3.14 Makefile中常見預定義變量

命 令 格 式

含義

AR

庫文件維護程序的名稱,默認值為ar

AS

匯編程序的名稱,默認值為as

CC

C編譯器的名稱,默認值為cc

CPP

C預編譯器的名稱,默認值為$(CC) –E

CXX

C++編譯器的名稱,默認值為g++

FC

FORTRAN編譯器的名稱,默認值為f77

RM

文件刪除程序的名稱,默認值為rm –f

ARFLAGS

庫文件維護程序的選項,無默認值

ASFLAGS

匯編程序的選項,無默認值

CFLAGS

C編譯器的選項,無默認值

CPPFLAGS

C預編譯的選項,無默認值

CXXFLAGS

C++編譯器的選項,無默認值

FFLAGS

FORTRAN編譯器的選項,無默認值

?

可以看出,上例中的CC和CFLAGS是預定義變量,其中由于CC沒有采用默認值,因此,需要把“CC=Gcc”明確列出來。

由于常見的Gcc編譯語句中通常包含了目標文件和依賴文件,而這些文件在Makefile文件中目標體的一行已經有所體現,因此,為了進一步簡化Makefile的編寫,就引入了自動變量。自動變量通常可以代表編譯語句中出現目標文件和依賴文件等,并且具有本地含義(即下一語句中出現的相同變量代表的是下一語句的目標文件和依賴文件)。下表3.15列出了Makefile中常見自動變量。

表3.15Makefile中常見自動變量

命令格式

含義

$*

不包含擴展名的目標文件名稱

$+

所有的依賴文件,以空格分開,并以出現的先后為序,可能包含重復的依賴文件

$<

第一個依賴文件的名稱

$?

所有時間戳比目標文件晚的依賴文件,并以空格分開

命令格式

含義

$@

目標文件的完整名稱

$^

所有不重復的依賴文件,以空格分開

$%

如果目標是歸檔成員,則該變量表示目標的歸檔成員名稱

?

自動變量的書寫比較難記,但是在熟練了之后會非常的方便,請讀者結合下例中的自動變量改寫的Makefile進行記憶。

?

OBJS = kang.o yul.o

CC = Gcc

CFLAGS = -Wall -O -g

sunq : $(OBJS)

$(CC)?$^?-o?$@

kang.o : kang.c kang.h

$(CC) $(CFLAGS) -c?$<?-o?$@

yul.o : yul.c yul.h

$(CC) $(CFLAGS) -c?$<?-o?$@

?

另外,在Makefile中還可以使用環(huán)境變量。使用環(huán)境變量的方法相對比較簡單,make在啟動時會自動讀取系統(tǒng)當前已經定義了的環(huán)境變量,并且會創(chuàng)建與之具有相同名稱和數值的變量。但是,如果用戶在Makefile中定義了相同名稱的變量,那么用戶自定義變量將會覆蓋同名的環(huán)境變量。

Makefile規(guī)則

Makefile的規(guī)則是Make進行處理的依據,它包括了目標體、依賴文件及其之間的命令語句。一般的,Makefile中的一條語句就是一個規(guī)則。在上面的例子中,都顯示地指出了Makefile中的規(guī)則關系,如“$(CC) $(CFLAGS) -c $< -o $@”,但為了簡化Makefile的編寫,make還定義了隱式規(guī)則和模式規(guī)則,下面就分別對其進行講解。

1.隱式規(guī)則

隱含規(guī)則能夠告訴make怎樣使用傳統(tǒng)的技術完成任務,這樣,當用戶使用它們時就不必詳細指定編譯的具體細節(jié),而只需把目標文件列出即可。Make會自動搜索隱式規(guī)則目錄來確定如何生成目標文件。如上例就可以寫成:

?

OBJS = kang.o yul.o

CC = Gcc

CFLAGS = -Wall -O -g

sunq : $(OBJS)

$(CC) $^ -o $@

?

為什么可以省略后兩句呢?因為Make的隱式規(guī)則指出:所有“.o”文件都可自動由“.c”文件使用命令“$(CC) $(CPPFLAGS) $(CFLAGS) -c file.c –o file.o”生成。這樣“kang.o”和“yul.o”就會分別調用“$(CC) $(CFLAGS) -c kang.c -o kang.o”和“$(CC) $(CFLAGS) -c yul.c -o yul.o”生成。

?

?

注意

在隱式規(guī)則只能查找到相同文件名的不同后綴名文件,如”kang.o”文件必須由”kang.c”文件生成。

?

下表3.16給出了常見的隱式規(guī)則目錄:

表3.16 Makefile中常見隱式規(guī)則目錄

對應語言后綴名

規(guī)則

C編譯:.c變?yōu)?span style="margin:0px; padding:0px">.o

$(CC) –c $(CPPFLAGS) $(CFLAGS)

C++編譯:.cc或.C變?yōu)?span style="margin:0px; padding:0px">.o

$(CXX) -c $(CPPFLAGS) $(CXXFLAGS)

Pascal編譯:.p變?yōu)?span style="margin:0px; padding:0px">.o

$(PC) -c $(PFLAGS)

Fortran編譯:.r變?yōu)?span style="margin:0px; padding:0px">-o

$(FC) -c $(FFLAGS)

2.模式規(guī)則

模式規(guī)則是用來定義相同處理規(guī)則的多個文件的。它不同于隱式規(guī)則,隱式規(guī)則僅僅能夠用make默認的變量來進行操作,而模式規(guī)則還能引入用戶自定義變量,為多個文件建立相同的規(guī)則,從而簡化Makefile的編寫。

模式規(guī)則的格式類似于普通規(guī)則,這個規(guī)則中的相關文件前必須用“%”標明。使用模式規(guī)則修改后的Makefile的編寫如下:

?

OBJS = kang.o yul.o

CC = Gcc

CFLAGS = -Wall -O -g

sunq : $(OBJS)

$(CC)?$^?-o?$@

%.o : %.c

$(CC) $(CFLAGS) -c?$<?-o?$@

Make使用

使用make管理器非常簡單,只需在make命令的后面鍵入目標名即可建立指定的目標,如果直接運行make,則建立Makefile中的第一個目標。

此外make還有豐富的命令行選項,可以完成各種不同的功能。下表3.17列出了常用的make命令行選項。

表3.17 make的命令行選項

命令格式

含 義

-C dir

讀入指定目錄下的Makefile

-f file

讀入當前目錄下的file文件作為Makefile

命令格式

含 義

-i

忽略所有的命令執(zhí)行錯誤

-I dir

指定被包含的Makefile所在目錄

-n

只打印要執(zhí)行的命令,但不執(zhí)行這些命令

-p

顯示make變量數據庫和隱含規(guī)則

-s

在執(zhí)行命令時不顯示命令

-w

如果make在執(zhí)行過程中改變目錄,則打印當前目錄名

使用autotools

在上一小節(jié),讀者已經了解到了make項目管理器的強大功能。的確,Makefile可以幫助make完成它的使命,但要承認的是,編寫Makefile確實不是一件輕松的事,尤其對于一個較大的項目而言更是如此。那么,有沒有一種輕松的手段生成Makefile而同時又能讓用戶享受make的優(yōu)越性呢?本節(jié)要講的autotools系列工具正是為此而設的,它只需用戶輸入簡單的目標文件、依賴文件、文件目錄等就可以輕松地生成Makefile了,這無疑是廣大用戶的所希望的。另外,這些工具還可以完成系統(tǒng)配置信息的收集,從而可以方便地處理各種移植性的問題。也正是基于此,現在Linux上的軟件開發(fā)一般都用autotools來制作Makefile,讀者在后面的講述中就會了解到。

autotools使用流程

正如前面所言,autotools是系列工具,讀者首先要確認系統(tǒng)是否裝了以下工具(可以用which命令進行查看)。

· aclocal

· autoscan

· autoconf

· autoheader

· automake

使用autotools主要就是利用各個工具的腳本文件以生成最后的Makefile。其總體流程是這樣的:

· 使用aclocal生成一個“aclocal.m4”文件,該文件主要處理本地的宏定義;

· 改寫“configure.scan”文件,并將其重命名為“configure.in”,并使用autoconf文件生成configure文件。

接下來,筆者將通過一個簡單的hello.c例子帶領讀者熟悉autotools生成makefile的過程,由于在這過程中有涉及到較多的腳本文件,為了更清楚地了解相互之間的關系,強烈建議讀者實際動手操作以體會其整個過程。

1.autoscan

它會在給定目錄及其子目錄樹中檢查源文件,若沒有給出目錄,就在當前目錄及其子目錄樹中進行檢查。它會搜索源文件以尋找一般的移植性問題并創(chuàng)建一個文件“configure.scan”,該文件就是接下來autoconf要用到的“configure.in”原型。如下所示:

?

[root@localhost automake]#?autoscan

autom4te: configure.ac: no such file or directory

autoscan: /usr/bin/autom4te failed with exit status: 1

[root@localhost automake]# ls

autoscan.log?configure.scan?hello.c

?

如上所示,autoscan首先會嘗試去讀入“configure.ac”(同configure.in的配置文件)文件,此時還沒有創(chuàng)建該配置文件,于是它會自動生成一個“configure.in”的原型文件“configure.scan”。

2.autoconf

configure.in是autoconf的腳本配置文件,它的原型文件“configure.scan”如下所示:

?

# -*- Autoconf -*-

# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.59)

#The next one is modified by sunq

#AC_INIT(FULL-PACKAGE-NAME,VERSION,BUG-REPORT-ADDRESS)

AC_INIT(hello,1.0)

# The next one is added by sunq

AM_INIT_AUTOMAKE(hello,1.0)

AC_CONFIG_SRCDIR([hello.c])

AC_CONFIG_HEADER([config.h])

# 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_CONFIG_FILES([Makefile])

AC_OUTPUT

?

下面對這個腳本文件進行解釋:

· 以“#”號開始的行為注釋。

· AC_PREREQ宏聲明本文件要求的autoconf版本,如本例使用的版本2.59。

· AC_INIT宏用來定義軟件的名稱和版本等信息,在本例中省略了BUG-REPORT-ADDRESS,一般為作者的e-mail。

· AM_INIT_AUTOMAKE是筆者另加的,它是automake所必備的宏,也同前面一樣,PACKAGE是所要產生軟件套件的名稱,VERSION是版本編號。

· AC_CONFIG_SRCDIR宏用來偵測所指定的源碼文件是否存在,來確定源碼目錄的有

效性。在此處為當前目錄下的hello.c。

· AC_CONFIG_HEADER宏用于生成config.h文件,以便autoheader使用。

· AC_CONFIG_FILES宏用于生成相應的Makefile文件。

· 中間的注釋間可以添加分別用戶測試程序、測試函數庫、測試頭文件等宏定義。

接下來首先運行aclocal,生成一個“aclocal.m4”文件,該文件主要處理本地的宏定義。如下所示:

?

[root@localhost automake]#?aclocal

?

再接著運行autoconf,生成“configure”可執(zhí)行文件。如下所示:

?

[root@localhost automake]#?autoconf

[root@localhost automake]#?ls

aclocal.m4 autom4te.cache autoscan.log?configure?configure.in hello.c

3.autoheader

接著使用autoheader命令,它負責生成config.h.in文件。該工具通常會從“acconfig.h”文件中復制用戶附加的符號定義,因此此處沒有附加符號定義,所以不需要創(chuàng)建“acconfig.h”文件。如下所示:

?

[root@localhost automake]#?autoheader

4.automake

這一步是創(chuàng)建Makefile很重要的一步,automake要用的腳本配置文件是Makefile.am,用戶需要自己創(chuàng)建相應的文件。之后,automake工具轉換成Makefile.in。在該例中,筆者創(chuàng)建的文件為Makefile.am如下所示:

?

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS= hello

hello_SOURCES= hello.c

?

下面對該腳本文件的對應項進行解釋。

· 其中的AUTOMAKE_OPTIONS為設置automake的選項。由于GNU(在第1章中已經有所介紹)對自己發(fā)布的軟件有嚴格的規(guī)范,比如必須附帶許可證聲明文件COPYING等,否則automake執(zhí)行時會報錯。automake提供了三種軟件等級:foreign、gnu和gnits,讓用戶選擇采用,默認等級為gnu。在本例使用foreign等級,它只檢測必須的文件。

· bin_PROGRAMS定義要產生的執(zhí)行文件名。如果要產生多個執(zhí)行文件,每個文件名用空格隔開。

· hello_SOURCES定義“hello”這個執(zhí)行程序所需要的原始文件。如果”hello”這個程序是由多個原始文件所產生的,則必須把它所用到的所有原始文件都列出來,并用空格隔開。例如:若目標體“hello”需要“hello.c”、“sunq.c”、“hello.h”三個依賴文件,則定義hello_SOURCES=hello.c sunq.c hello.h。要注意的是,如果要定義多個執(zhí)行文件,則對每個執(zhí)行程序都要定義相應的file_SOURCES。

接下來可以使用automake對其生成“configure.in”文件,在這里使用選項“—adding-missing”可以讓automake自動添加有一些必需的腳本文件。如下所示:

?

[root@localhost automake]#?automake --add-missing

configure.in: installing './install-sh'

configure.in: installing './missing'

Makefile.am: installing 'depcomp'

[root@localhost automake]#?ls

aclocal.m4 autoscan.log?configure.in?hello.c Makefile.am missing

autom4te.cache configure depcomp install-sh Makefile.in config.h.in

?

可以看到,在automake之后就可以生成configure.in文件。

5.運行configure

在這一步中,通過運行自動配置設置文件configure,把Makefile.in變成了最終的Makefile。如下所示:

?

[root@localhost automake]#?./configure

checking for a BSD-compatible install... /usr/bin/install -c

checking whether build enVironment is sane... yes

checking for gawk... gawk

checking whether make sets $(MAKE)... yes

checking for Gcc... Gcc

checking for C compiler default output file name... a.out

checking whether the C compiler works... yes

checking whether we are cross compiling... no

checking for suffix of executables...

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether Gcc accepts -g... yes

checking for Gcc option to accept ANSI C... none needed

checking for style of include used by make... GNU

checking dependency style of Gcc... Gcc3

configure: creating ./config.status

config.status:?creating Makefile

config.status: executing depfiles commands

可以看到,在運行configure時收集了系統(tǒng)的信息,用戶可以在configure命令中對其進行方便地配置。在./configure的自定義參數有兩種,一種是開關式(--enable-XXX或--disable-XXX),另一種是開放式,即后面要填入一串字符(--with-XXX=yyyy)參數。讀者可以自行嘗試其使用方法。另外,讀者可以查看同一目錄下的”config.log”文件,以方便調試之用。

到此為止,makefile就可以自動生成了?;貞浾麄€步驟,用戶不再需要定制不同的規(guī)則,而只需要輸入簡單的文件及目錄名即可,這樣就大大方便了用戶的使用。下面的圖3.9總結了上述過程:

?

圖3.9 autotools生成Makefile流程圖

使用autotools所生成的Makefile

autotools生成的Makefile除具有普通的編譯功能外,還具有以下主要功能(感興趣的讀者可以查看這個簡單的hello.c程序的makefile):

1.make

鍵入make默認執(zhí)行”make all”命令,即目標體為all,其執(zhí)行情況如下所示:

?

[root@localhost automake]#?make

if Gcc -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DPACKAGE="hello" -DVERSION="1.0" -I. -I. -g -O2 -MT hello.o -MD -MP -MF ".deps/hello.Tpo" -c -o hello.o hello.c;

then mv -f ".deps/hello.Tpo" ".deps/hello.Po"; else rm -f ".deps/hello.Tpo"; exit 1; fi

Gcc -g -O2 -o hello hello.o

此時在本目錄下就生成了可執(zhí)行文件“hello”,運行“./hello”能出現正常結果,如下所示:

?

[root@localhost automake]#?./hello

Hello!Autoconf!

2.make install

此時,會把該程序安裝到系統(tǒng)目錄中去,如下所示:

?

[root@localhost automake]#?make install

if Gcc -DPACKAGE_NAME="" -DPACKAGE_TARNAME="" -DPACKAGE_VERSION="" -DPACKAGE_STRING="" -DPACKAGE_BUGREPORT="" -DPACKAGE="hello" -DVERSION="1.0" -I. -I. -g -O2 -MT hello.o -MD -MP -MF ".deps/hello.Tpo" -c -o hello.o hello.c;

then mv -f ".deps/hello.Tpo" ".deps/hello.Po"; else rm -f ".deps/hello.Tpo"; exit 1; fi

Gcc -g -O2 -o hello hello.o

make[1]: Entering directory '/root/workplace/automake'

test -z "/usr/local/bin" || mkdir -p -- "/usr/local/bin"

/usr/bin/install -c 'hello' '/usr/local/bin/hello'

make[1]: Nothing to be done for 'install-data-am'.

make[1]: LeaVing directory '/root/workplace/automake'

?

此時,若直接運行hello,也能出現正確結果,如下所示:

?

[root@localhost automake]#?hello

Hello!Autoconf!

3.make clean

此時,make會清除之前所編譯的可執(zhí)行文件及目標文件(object file, *.o),如下所示:

?

[root@localhost automake]#?make clean

test -z "hello" || rm -f hello

rm -f *.o

4.make dist

此時,make將程序和相關的文檔打包為一個壓縮文檔以供發(fā)布,如下所示:

?

[root@localhost automake]#?make dist

[root@localhost automake]# ls hello-1.0-tar.gz

hello-1.0-tar.gz

?

可見該命令生成了一個hello-1.0-tar.gz的壓縮文件。

由上面的講述讀者不難看出,autotools確實是軟件維護與發(fā)布的必備工具,也鑒于此,如今GUN的軟件一般都是由automake來制作的。

?

?

想一想

對于automake制作的這類軟件,應如何安裝呢?

Vi使用練習

1.實驗目的

通過指定指令的Vi操作練習,使讀者能夠熟練使用Vi中的常見操作,并且熟悉Vi的三種模式,如果讀者能夠熟練掌握實驗內容中所要求的內容,則表明對Vi的操作已經很熟練了。

2.實驗內容

(1)在“/root”目錄下建一個名為“/Vi”的目錄。

(2)進入“/Vi”目錄。

(3)將文件“/etc/inittab”復制到“/Vi”目錄下。

(4)使用Vi打開“/Vi”目錄下的inittab。

(5)設定行號,指出設定initdefault(類似于“id:5:initdefault”)的所在行號。

(6)將光標移到該行。

(7)復制該行內容。

(8)將光標移到最后一行行首。

(9)粘貼復制行的內容。

(10)撤銷第9步的動作。

(11)將光標移動到最后一行的行尾。

(12)粘貼復制行的內容。

(13)光標移到“si::sysinit:/etc/rc.d/rc.sysinit”。

(14)刪除該行。

(15)存盤但不退出。

(16)將光標移到首行。

(17)插入模式下輸入“Hello,this is Vi world!”。

(18)返回命令行模式。

(19)向下查找字符串“0:wait”。

(20)再向上查找字符串“halt”。

(21)強制退出Vi,不存盤。

分別指出每個命令處于何種模式下?

3.實驗步驟

(1)mkdir /root/Vi

(2)cd /root/Vi

(3)cp /etc/inittab ./

(4)Vi ./inittab

(5):set nu(底行模式)

(6)17<enter>(命令行模式)

(7)yy

(8)G

(9)p

(10)u

(11)$

(12)p

(13)21G

(14)dd

(15):w(底行模式)

(16)1G

(17)i 并輸入“Hello,this is Vi world!”(插入模式)

(18)Esc

(19)/0:wait(命令行模式)

(20)?halt

(21):q!(底行模式)

4.實驗結果

該實驗最后的結果只對“/root/inittab”增加了一行復制的內容:“id:5:initdefault”。

用Gdb調試有問題的程序

1.實驗目的

通過調試一個有問題的程序,使讀者進一步熟練使用Vi操作,而且熟練掌握Gcc編譯命令及Gdb的調試命令,通過對有問題程序的跟蹤調試,進一步提高發(fā)現問題和解決問題的能力。這是一個很小的程序,只有35行,希望讀者認真調試。

2.實驗內容

(1)使用Vi編輯器,將以下代碼輸入到名為greet.c的文件中。此代碼的原意為輸出倒序main函數中定義的字符串,但結果顯示沒有輸出。代碼如下所示:

?

#include <stdio.h>

int display1(char *string);

int display2(char *string);

?

int main ()

{

char string[] = "Embedded Linux";

display1 (string);

display2 (string);

}

int display1 (char *string)

{

printf ("The original string is %s n", string);

}

int display2 (char *string1)

{

char *string2;

int size,i;

size = strlen (string1);

string2 = (char *) malloc (size + 1);

for (i = 0; i < size; i++)

string2[size - i] = string1[i];

string2[size+1] = ' ';

printf("The string afterward is %sn",string2);

}

?

(2)使用Gcc編譯這段代碼,注意要加上“-g”選項以方便之后的調試。

(3)運行生成的可執(zhí)行文件,觀察運行結果。

(4)使用Gdb調試程序,通過設置斷點、單步跟蹤,一步步找出錯誤所在。

(5)糾正錯誤,更改源程序并得到正確的結果。

3.實驗步驟

(1)在工作目錄上新建文件greet.c,并用Vi啟動:vi greet.c。

(2)在Vi中輸入以上代碼。

(3)在Vi中保存并退出:wq。

(4)用Gcc編譯:gcc -g greet.c -o greet。

(5)運行greet:./greet,輸出為:

?

The original string is Embedded Linux

The string afterward is

?

可見,該程序沒有能夠倒序輸出。

(6)啟動Gdb調試:gdb greet。

(7)查看源代碼,使用命令“l(fā)”。

(8)在30行(for循環(huán)處)設置斷點,使用命令“b 30”。

(9)在33行(printf函數處)設置斷點,使用命令“b 33”。

(10)查看斷點設置情況,使用命令“info b”。

(11)運行代碼,使用命令“r”。

(12)單步運行代碼,使用命令“n”。

(13)查看暫停點變量值,使用命令“p string2[size - i]”。

(14)繼續(xù)單步運行代碼數次,并使用命令查看,發(fā)現string2[size-1]的值正確。

(15)繼續(xù)程序的運行,使用命令“c”。

(16)程序在printf前停止運行,此時依次查看string2[0]、string2[1]…,發(fā)現string[0]沒有被正確賦值,而后面的復制都是正確的,這時,定位程序第31行,發(fā)現程序運行結果錯誤的原因在于“size-1”。由于i只能增到“size-1”,這樣string2[0]就永遠不能被賦值而保持NULL,故輸不出任何結果。

(17)退出Gdb,使用命令q。

(18)重新編輯greet.c,把其中的“string2[size - i] = string1[i]”改為“string2[size – i - 1] = string1[i];”即可。

(19)使用Gcc重新編譯:gcc -g greet.c -o greet。

(20)查看運行結果:./greet

?

The original string is Embedded Linux

The string afterward is xuniL deddedbmE

?

這時,輸入結果正確。

4.實驗結果

將原來有錯的程序經過Gdb調試,找出問題所在,并修改源代碼,輸出正確的倒序顯示字符串的結果。

編寫包含多文件的Makefile

1.實驗目的

通過對包含多文件的Makefile的編寫,熟悉各種形式的Makefile,并且進一步加深對Makefile中用戶自定義變量、自動變量及預定義變量的理解。

2.實驗過程

(1)用Vi在同一目錄下編輯兩個簡單的Hello程序,如下所示:

?

#hello.c

#include "hello.h"

int main()

{

printf("Hello everyone!n");

}

#hello.h

#include <stdio.h>

?

(2)仍在同一目錄下用Vi編輯Makefile,且不使用變量替換,用一個目標體實現(即直接將hello.c和hello.h編譯成hello目標體)。然后用make驗證所編寫的Makefile是否正確。

(3)將上述Makefile使用變量替換實現。同樣用make驗證所編寫的Makefile是否正確

(4)用編輯另一Makefile,取名為Makefile1,不使用變量替換,但用兩個目標體實現(也就是首先將hello.c和hello.h編譯為hello.o,再將hello.o編譯為hello),再用make的”-f”選項驗證這個Makefile1的正確性。

(5)將上述Makefile1使用變量替換實現。

3.實驗步驟

(1)用Vi打開上述兩個代碼文件“hello.c”和“hello.h”。

(2)在shell命令行中用Gcc嘗試編譯,使用命令:”Gcc hello.c –o hello”,并運行hello可執(zhí)行文件查看結果。

(3)刪除此次編譯的可執(zhí)行文件:rm hello。

(4)用Vi編輯Makefile,如下所示:

?

hello:hello.c hello.h

Gcc hello.c -o hello

?

(5)退出保存,在shell中鍵入:make,查看結果。

(6)再次用Vi打開Makefile,用變量進行替換,如下所示:

?

OBJS :=hello.o

CC :=Gcc

hello:$(OBJS)

$(CC) $^ -o $@

?

(7)退出保存,在shell中鍵入:make,查看結果。

(8)用Vi編輯Makefile1,如下所示:

?

hello:hello.o

Gcc hello.o -o hello

hello.o:hello.c hello.h

Gcc -c hello.c -o hello.o

?

(9)退出保存,在shell中鍵入:make -f Makefile1,查看結果。

(10)再次用Vi編輯Makefile1,如下所示:

?

OBJS1 :=hello.o

OBJS2 :=hello.c hello.h

CC :=Gcc

hello:$(OBJS1)

$(CC) $^ -o $@

$(OBJS1):$(OBJS2)

$(CC) -c $< -o $@

?

在這里請注意區(qū)別“$^”和“$<”。

(11)退出保存,在shell中鍵入:make -f Makefile1,查看結果

4.實驗結果

各種不同形式的makefile都能完成其正確的功能。

使用autotools生成包含多文件的Makefile

1.實驗目的

通過使用autotools生成包含多文件的Makefile,進一步掌握autotools的正確使用方法。同時,掌握Linux下安裝軟件的常用方法。

2.實驗過程

(1)在原目錄下新建文件夾auto。

(2)利用上例的兩個代碼文件“hello.c”和“hello.h”,并將它們復制到該目錄下。

(3)使用autoscan生成configure.scan。

(4)編輯configure.scan,修改相關內容,并將其重命名為configure.in。

(5)使用aclocal生成aclocal.m4。

(6)使用autoconf生成configure。

(7)使用autoheader生成config.in.h。

(8)編輯Makefile.am。

(9)使用automake生成Makefile.in。

(10)使用configure生成Makefile。

(11)使用make生成hello可執(zhí)行文件,并在當前目錄下運行hello查看結果。

(12)使用make install將hello安裝到系統(tǒng)目錄下,并運行,查看結果。

(13)使用make dist生成hello壓縮包。

(14)解壓hello壓縮包。

(15)進入解壓目錄。

(16)在該目錄下安裝hello軟件。

3.實驗步驟

(1)mkdir ./auto。

(2)cp hello.* ./auto(假定原先在“hello.c”文件目錄下)。

(3)命令:autoscan。

(4)使用Vi編輯configure.scan為:

?

# -*- Autoconf -*-

# Process this file with autoconf to produce a configure script.

?

AC_PREREQ(2.59)

AC_INIT(hello, 1.0)

AM_INIT_AUTOMAKE(hello,1.0)

AC_CONFIG_SRCDIR([hello.h])

AC_CONFIG_HEADER([config.h])

# 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)

?

(5)保存退出,并重命名為configure.in。

(6)運行:aclocal。

(7)運行:autoconf,并用ls查看是否生成了configure可執(zhí)行文件。

(8)運行:autoheader。

(9)用Vi編輯Makefile.am文件為:

?

AUTOMAKE_OPTIONS=foreign

bin_PROGRAMS=hello

hello_SOURCES=hello.c hello.h

?

(10)運行:automake。

(11)運行:./configure。

(12)運行:make。

(13)運行:./hello,查看結果是否正確。

(14)運行:make install。

(15)運行:hello,查看結果是否正確。

(16)運行:make dist。

(17)在當前目錄下解壓hello-1.0.tar.gz:tar –zxvf hello-1.0.tar.gz。

(18)進入解壓目錄:cd ./hello-1.0。

(19)下面開始Linux下常見的安裝軟件步驟:./configure。

(20)運行:make。

(21)運行:./hello(在正常安裝時這一步可省略)。

(22)運行:make install。

(23)運行:hello,查看結果是否正確。

4.實驗結果

能夠正確使用autotools生成Makefile,并且能夠安裝成功短小的Hello軟件。

總結

以上是生活随笔為你收集整理的gcc选项 和 gdb 使用的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲精品一区二区三区四区五区 | 欧美性猛交内射兽交老熟妇 | 色爱情人网站 | 亚洲色大成网站www国产 | 国产美女极度色诱视频www | 麻豆国产丝袜白领秘书在线观看 | 亚洲第一无码av无码专区 | 人人妻人人澡人人爽人人精品浪潮 | 久久国产精品精品国产色婷婷 | 国产绳艺sm调教室论坛 | 无码纯肉视频在线观看 | 日韩在线不卡免费视频一区 | 7777奇米四色成人眼影 | 夜夜夜高潮夜夜爽夜夜爰爰 | 在线播放免费人成毛片乱码 | 亚洲综合在线一区二区三区 | 亚洲а∨天堂久久精品2021 | 熟妇人妻激情偷爽文 | 免费人成在线视频无码 | 成年美女黄网站色大免费视频 | 久久久久人妻一区精品色欧美 | 无码人妻出轨黑人中文字幕 | 青草视频在线播放 | 日韩精品a片一区二区三区妖精 | 蜜桃臀无码内射一区二区三区 | 久久国产自偷自偷免费一区调 | 熟妇激情内射com | 中文字幕亚洲情99在线 | 午夜理论片yy44880影院 | 久精品国产欧美亚洲色aⅴ大片 | 精品国产福利一区二区 | 色综合久久久久综合一本到桃花网 | 亚洲日韩av一区二区三区四区 | 扒开双腿疯狂进出爽爽爽视频 | 少女韩国电视剧在线观看完整 | 欧洲熟妇精品视频 | 亚洲成色www久久网站 | 午夜性刺激在线视频免费 | 性色av无码免费一区二区三区 | 亚洲色偷偷偷综合网 | 国产97人人超碰caoprom | 狠狠亚洲超碰狼人久久 | 午夜丰满少妇性开放视频 | 国产人妻精品午夜福利免费 | 亚洲娇小与黑人巨大交 | 黑人大群体交免费视频 | 欧美精品一区二区精品久久 | 在线成人www免费观看视频 | 亚洲aⅴ无码成人网站国产app | 欧美熟妇另类久久久久久多毛 | √天堂中文官网8在线 | 色情久久久av熟女人妻网站 | 欧洲极品少妇 | 婷婷五月综合缴情在线视频 | 97夜夜澡人人双人人人喊 | 欧美丰满少妇xxxx性 | 欧美精品国产综合久久 | 久久久久久a亚洲欧洲av冫 | 麻豆果冻传媒2021精品传媒一区下载 | 国产黄在线观看免费观看不卡 | 亚洲小说图区综合在线 | 成人影院yy111111在线观看 | 国产精品久久国产精品99 | 偷窥村妇洗澡毛毛多 | 樱花草在线播放免费中文 | 美女黄网站人色视频免费国产 | 十八禁真人啪啪免费网站 | 国产成人无码午夜视频在线观看 | 99久久婷婷国产综合精品青草免费 | 亚洲精品无码人妻无码 | 高中生自慰www网站 | 99精品视频在线观看免费 | 国产午夜无码视频在线观看 | 成人欧美一区二区三区 | 无码av岛国片在线播放 | 国内丰满熟女出轨videos | 在线看片无码永久免费视频 | 国产欧美精品一区二区三区 | 欧美黑人性暴力猛交喷水 | 国产亚洲精品久久久ai换 | 中文字幕无码日韩专区 | 久久综合九色综合97网 | 久久综合香蕉国产蜜臀av | 亚洲日韩一区二区 | 欧美 丝袜 自拍 制服 另类 | 亚洲码国产精品高潮在线 | 成年美女黄网站色大免费全看 | 中文字幕乱妇无码av在线 | 激情内射日本一区二区三区 | 欧美放荡的少妇 | 亚洲中文字幕av在天堂 | 欧美性生交活xxxxxdddd | 亚洲经典千人经典日产 | 亚洲性无码av中文字幕 | 熟女体下毛毛黑森林 | 国产97人人超碰caoprom | 又湿又紧又大又爽a视频国产 | 日产国产精品亚洲系列 | 亚洲乱码日产精品bd | 三级4级全黄60分钟 | 红桃av一区二区三区在线无码av | 欧美丰满熟妇xxxx性ppx人交 | 精品久久8x国产免费观看 | 久久久精品人妻久久影视 | 女人被男人躁得好爽免费视频 | 在线а√天堂中文官网 | 亚洲色欲色欲天天天www | av在线亚洲欧洲日产一区二区 | 国产精品久久久一区二区三区 | 国产精品无码成人午夜电影 | 人妻无码αv中文字幕久久琪琪布 | 高潮毛片无遮挡高清免费视频 | 无码国内精品人妻少妇 | 人人妻人人澡人人爽欧美精品 | 娇妻被黑人粗大高潮白浆 | 久久人人爽人人爽人人片ⅴ | 在线欧美精品一区二区三区 | 粗大的内捧猛烈进出视频 | av在线亚洲欧洲日产一区二区 | 夜精品a片一区二区三区无码白浆 | 天天躁日日躁狠狠躁免费麻豆 | 成人亚洲精品久久久久 | 永久免费观看国产裸体美女 | 亚洲国产精品一区二区第一页 | 久久综合九色综合欧美狠狠 | 日韩亚洲欧美中文高清在线 | 国产精品久免费的黄网站 | 呦交小u女精品视频 | 久久精品国产99久久6动漫 | 亚洲中文字幕无码中字 | 人妻人人添人妻人人爱 | 人妻夜夜爽天天爽三区 | 欧美日韩色另类综合 | 97人妻精品一区二区三区 | 国产人妻精品一区二区三区 | 性色欲情网站iwww九文堂 | 人妻人人添人妻人人爱 | 亚洲熟悉妇女xxx妇女av | 在线观看欧美一区二区三区 | 久久国语露脸国产精品电影 | 国产偷自视频区视频 | 无人区乱码一区二区三区 | 爱做久久久久久 | 自拍偷自拍亚洲精品10p | 澳门永久av免费网站 | 国产乱人无码伦av在线a | 国产精品久久久久久亚洲毛片 | 牲交欧美兽交欧美 | 日产国产精品亚洲系列 | 亚洲综合久久一区二区 | 国产精品va在线播放 | 人人妻人人澡人人爽人人精品 | 强伦人妻一区二区三区视频18 | a片免费视频在线观看 | 国产人妖乱国产精品人妖 | 扒开双腿吃奶呻吟做受视频 | 人妻无码αv中文字幕久久琪琪布 | 日韩精品一区二区av在线 | 六月丁香婷婷色狠狠久久 | 狂野欧美激情性xxxx | 少妇激情av一区二区 | 久久久中文久久久无码 | 丝袜足控一区二区三区 | 国产成人综合美国十次 | 国产人妻精品一区二区三区不卡 | 国产精品无码成人午夜电影 | 无码av最新清无码专区吞精 | 天堂一区人妻无码 | 十八禁真人啪啪免费网站 | 欧美大屁股xxxxhd黑色 | 久久精品一区二区三区四区 | 强开小婷嫩苞又嫩又紧视频 | 久久天天躁狠狠躁夜夜免费观看 | 国内老熟妇对白xxxxhd | 99精品国产综合久久久久五月天 | 精品偷拍一区二区三区在线看 | 日日摸天天摸爽爽狠狠97 | 国产无套内射久久久国产 | 人妻夜夜爽天天爽三区 | 999久久久国产精品消防器材 | 精品国产成人一区二区三区 | 2020最新国产自产精品 | 中文字幕无码热在线视频 | 欧美日韩在线亚洲综合国产人 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 一本久道高清无码视频 | 午夜精品久久久久久久 | 人妻少妇被猛烈进入中文字幕 | 大地资源中文第3页 | 蜜桃av蜜臀av色欲av麻 999久久久国产精品消防器材 | 欧美性生交活xxxxxdddd | 高中生自慰www网站 | 99国产欧美久久久精品 | 国内揄拍国内精品少妇国语 | 欧美黑人性暴力猛交喷水 | 亚洲の无码国产の无码影院 | 国产三级久久久精品麻豆三级 | 日韩精品无码免费一区二区三区 | 波多野结衣乳巨码无在线观看 | 日韩在线不卡免费视频一区 | 日韩亚洲欧美精品综合 | 国产精品久久久久久无码 | 国产高清av在线播放 | 狠狠色噜噜狠狠狠狠7777米奇 | 久久午夜无码鲁丝片午夜精品 | 久久精品女人天堂av免费观看 | 国产免费无码一区二区视频 | 久久久久久国产精品无码下载 | 亚洲 a v无 码免 费 成 人 a v | 久久久无码中文字幕久... | 久久久久亚洲精品中文字幕 | 东京热一精品无码av | 亚洲色欲久久久综合网东京热 | 一个人免费观看的www视频 | 好屌草这里只有精品 | 国产午夜福利亚洲第一 | 亚洲热妇无码av在线播放 | 天堂无码人妻精品一区二区三区 | 免费乱码人妻系列无码专区 | 亚洲狠狠色丁香婷婷综合 | 高潮毛片无遮挡高清免费视频 | 国产亚洲欧美日韩亚洲中文色 | 国产人妻人伦精品1国产丝袜 | 日韩人妻少妇一区二区三区 | 麻豆av传媒蜜桃天美传媒 | 国产成人久久精品流白浆 | 亚洲欧美日韩国产精品一区二区 | 欧美第一黄网免费网站 | 水蜜桃色314在线观看 | 免费无码肉片在线观看 | 精品无码一区二区三区的天堂 | 精品无码成人片一区二区98 | 亚洲爆乳精品无码一区二区三区 | 国产精品沙发午睡系列 | 又粗又大又硬毛片免费看 | 久久久久国色av免费观看性色 | 高中生自慰www网站 | 国产深夜福利视频在线 | 少妇人妻大乳在线视频 | 人人妻在人人 | 少妇的肉体aa片免费 | 台湾无码一区二区 | 无码国产色欲xxxxx视频 | 女人被爽到呻吟gif动态图视看 | 国产97在线 | 亚洲 | 狠狠躁日日躁夜夜躁2020 | 亚洲人成网站免费播放 | 亚洲精品久久久久中文第一幕 | 免费无码一区二区三区蜜桃大 | 免费无码av一区二区 | 亚洲国产av美女网站 | 国产激情一区二区三区 | 粗大的内捧猛烈进出视频 | 久久精品女人天堂av免费观看 | 俄罗斯老熟妇色xxxx | 无码一区二区三区在线观看 | 亚洲欧美日韩国产精品一区二区 | 国内丰满熟女出轨videos | 国产偷抇久久精品a片69 | 久久精品视频在线看15 | 伦伦影院午夜理论片 | 国产真实乱对白精彩久久 | 精品成人av一区二区三区 | 成 人影片 免费观看 | 国产熟女一区二区三区四区五区 | 久久久久se色偷偷亚洲精品av | 国产亚洲精品久久久久久久久动漫 | 中文字幕无码免费久久9一区9 | 午夜精品一区二区三区的区别 | 少妇无套内谢久久久久 | 鲁鲁鲁爽爽爽在线视频观看 | 亚洲国产综合无码一区 | 精品国产成人一区二区三区 | 色老头在线一区二区三区 | 亚洲午夜福利在线观看 | aⅴ亚洲 日韩 色 图网站 播放 | 亚洲va欧美va天堂v国产综合 | 性色欲情网站iwww九文堂 | 久久精品无码一区二区三区 | 国产va免费精品观看 | 成人aaa片一区国产精品 | 亚洲成av人在线观看网址 | 亚洲自偷自拍另类第1页 | 学生妹亚洲一区二区 | 久久精品人妻少妇一区二区三区 | 午夜精品一区二区三区的区别 | 亚洲成a人片在线观看无码 | 动漫av网站免费观看 | 日韩欧美群交p片內射中文 | 成人无码视频在线观看网站 | 国产精品亚洲专区无码不卡 | 免费观看又污又黄的网站 | 久久久久av无码免费网 | 国产美女极度色诱视频www | 午夜精品久久久久久久久 | 老熟妇乱子伦牲交视频 | 在线精品亚洲一区二区 | 欧美一区二区三区视频在线观看 | 2020最新国产自产精品 | 狠狠亚洲超碰狼人久久 | 人妻少妇精品视频专区 | 无码人妻久久一区二区三区不卡 | 老子影院午夜精品无码 | 亚洲狠狠婷婷综合久久 | 精品久久久久香蕉网 | 女高中生第一次破苞av | 免费网站看v片在线18禁无码 | 高清无码午夜福利视频 | 久久久久av无码免费网 | 日本饥渴人妻欲求不满 | 午夜无码人妻av大片色欲 | 亚洲 日韩 欧美 成人 在线观看 | 18精品久久久无码午夜福利 | 水蜜桃色314在线观看 | 亚洲精品一区二区三区在线观看 | 国产无套内射久久久国产 | 久久国产精品萌白酱免费 | 日欧一片内射va在线影院 | 成人精品一区二区三区中文字幕 | 中文字幕无码免费久久9一区9 | 波多野结衣高清一区二区三区 | 国产后入清纯学生妹 | 国产精品办公室沙发 | 亚洲精品美女久久久久久久 | 婷婷五月综合缴情在线视频 | 精品久久久中文字幕人妻 | 国产一区二区三区四区五区加勒比 | 鲁大师影院在线观看 | 亚洲中文字幕无码中字 | 99久久无码一区人妻 | 亚洲熟妇色xxxxx欧美老妇 | 人妻aⅴ无码一区二区三区 | 亚洲人成网站色7799 | 一本色道久久综合亚洲精品不卡 | 狠狠色欧美亚洲狠狠色www | 成在人线av无码免观看麻豆 | 国产亚洲精品久久久久久国模美 | 日日噜噜噜噜夜夜爽亚洲精品 | 天堂无码人妻精品一区二区三区 | 十八禁视频网站在线观看 | 午夜无码人妻av大片色欲 | 久久精品中文字幕一区 | 国产va免费精品观看 | 亚洲精品久久久久久一区二区 | 自拍偷自拍亚洲精品被多人伦好爽 | 日日麻批免费40分钟无码 | 影音先锋中文字幕无码 | 少妇无码吹潮 | 成人免费视频视频在线观看 免费 | 国产口爆吞精在线视频 | 国产色视频一区二区三区 | 色婷婷综合激情综在线播放 | 中文字幕av无码一区二区三区电影 | 日日摸天天摸爽爽狠狠97 | 国产人成高清在线视频99最全资源 | 日本精品少妇一区二区三区 | 亚洲人成人无码网www国产 | 无码人妻少妇伦在线电影 | 国产特级毛片aaaaaa高潮流水 | 亚洲理论电影在线观看 | 无码免费一区二区三区 | 性史性农村dvd毛片 | 免费无码一区二区三区蜜桃大 | 欧美人与物videos另类 | 免费中文字幕日韩欧美 | 久久精品女人的天堂av | 无遮挡啪啪摇乳动态图 | 色欲av亚洲一区无码少妇 | av无码久久久久不卡免费网站 | 装睡被陌生人摸出水好爽 | 熟妇女人妻丰满少妇中文字幕 | 日韩人妻少妇一区二区三区 | 亚洲爆乳精品无码一区二区三区 | 久久久久亚洲精品男人的天堂 | 一区二区传媒有限公司 | 熟女少妇在线视频播放 | 亚洲成av人综合在线观看 | 国产在线aaa片一区二区99 | 色五月丁香五月综合五月 | 亚洲精品国产a久久久久久 | 国产一区二区三区日韩精品 | 巨爆乳无码视频在线观看 | 国产高潮视频在线观看 | 奇米影视888欧美在线观看 | 激情国产av做激情国产爱 | 亚洲成av人综合在线观看 | 国产内射爽爽大片视频社区在线 | 国内精品人妻无码久久久影院 | 国产亚av手机在线观看 | 亚洲成av人在线观看网址 | 东京无码熟妇人妻av在线网址 | 欧美日本免费一区二区三区 | 人人超人人超碰超国产 | 色婷婷av一区二区三区之红樱桃 | 在线观看国产午夜福利片 | 国产办公室秘书无码精品99 | 久久久久久av无码免费看大片 | 76少妇精品导航 | 免费看男女做好爽好硬视频 | 国内精品一区二区三区不卡 | 精品人妻人人做人人爽 | 无遮无挡爽爽免费视频 | 色噜噜亚洲男人的天堂 | 日本免费一区二区三区最新 | 亚洲乱码日产精品bd | 黑人粗大猛烈进出高潮视频 | 免费无码午夜福利片69 | 午夜精品久久久久久久 | 久久久久久久久888 | 少妇无码av无码专区在线观看 | 亚洲精品一区三区三区在线观看 | 国产9 9在线 | 中文 | 日韩人妻少妇一区二区三区 | 国内揄拍国内精品人妻 | 国内精品人妻无码久久久影院 | 高中生自慰www网站 | 亚洲色欲久久久综合网东京热 | 中文精品久久久久人妻不卡 | 无套内谢的新婚少妇国语播放 | 亚洲国产精品毛片av不卡在线 | 亚洲人成无码网www | 日日躁夜夜躁狠狠躁 | 欧美国产日韩亚洲中文 | 欧美人妻一区二区三区 | 日本在线高清不卡免费播放 | 极品尤物被啪到呻吟喷水 | 国产麻豆精品精东影业av网站 | √天堂中文官网8在线 | 色一情一乱一伦一视频免费看 | 国产激情无码一区二区 | 精品久久8x国产免费观看 | 国产黄在线观看免费观看不卡 | 激情人妻另类人妻伦 | 亚洲精品久久久久中文第一幕 | 少妇高潮一区二区三区99 | 国色天香社区在线视频 | 人人妻人人澡人人爽欧美一区九九 | 国产在热线精品视频 | 亚洲成av人综合在线观看 | 国产无套粉嫩白浆在线 | 亚洲日韩av一区二区三区中文 | 天干天干啦夜天干天2017 | 欧美freesex黑人又粗又大 | 亚洲日韩精品欧美一区二区 | 丰满少妇弄高潮了www | 国产成人午夜福利在线播放 | 国产午夜精品一区二区三区嫩草 | 蜜臀av在线播放 久久综合激激的五月天 | 精品国产乱码久久久久乱码 | 一个人看的www免费视频在线观看 | 丰满肥臀大屁股熟妇激情视频 | 精品无码av一区二区三区 | 大地资源中文第3页 | 少妇激情av一区二区 | 精品无码一区二区三区的天堂 | 久久亚洲中文字幕无码 | 久久久婷婷五月亚洲97号色 | 成熟人妻av无码专区 | 18禁止看的免费污网站 | 国产成人精品久久亚洲高清不卡 | 精品厕所偷拍各类美女tp嘘嘘 | 九月婷婷人人澡人人添人人爽 | 1000部啪啪未满十八勿入下载 | 中文字幕精品av一区二区五区 | 亚洲国产精品毛片av不卡在线 | 日日碰狠狠丁香久燥 | 97精品国产97久久久久久免费 | 国产av一区二区精品久久凹凸 | 无码一区二区三区在线 | 国产精品无码成人午夜电影 | 欧美猛少妇色xxxxx | 中国大陆精品视频xxxx | 亚洲精品一区二区三区四区五区 | 亚洲啪av永久无码精品放毛片 | 亚洲精品美女久久久久久久 | 色综合久久久久综合一本到桃花网 | 国内丰满熟女出轨videos | 精品国偷自产在线视频 | 亚洲人成网站免费播放 | 国产无遮挡又黄又爽又色 | 国产成人无码av一区二区 | 人妻少妇精品无码专区二区 | 国产精品资源一区二区 | 日本熟妇大屁股人妻 | 无码乱肉视频免费大全合集 | 欧美丰满老熟妇xxxxx性 | 国产av久久久久精东av | 久久五月精品中文字幕 | 免费无码的av片在线观看 | 欧美午夜特黄aaaaaa片 | 久久国产精品精品国产色婷婷 | 中文字幕中文有码在线 | 中文字幕乱码人妻无码久久 | 精品无码av一区二区三区 | 精品无人区无码乱码毛片国产 | 国产精品-区区久久久狼 | 国产电影无码午夜在线播放 | 国内精品人妻无码久久久影院 | 久久精品丝袜高跟鞋 | 人妻少妇精品视频专区 | 曰韩无码二三区中文字幕 | 三级4级全黄60分钟 | 精品国产福利一区二区 | 无码任你躁久久久久久久 | 午夜福利试看120秒体验区 | 亚洲s色大片在线观看 | 色婷婷综合中文久久一本 | 一本一道久久综合久久 | 国产无遮挡又黄又爽免费视频 | 国产无遮挡又黄又爽又色 | 无码人中文字幕 | 国产无遮挡又黄又爽又色 | 日本www一道久久久免费榴莲 | 精品久久综合1区2区3区激情 | 水蜜桃色314在线观看 | 樱花草在线社区www | 夜先锋av资源网站 | 51国偷自产一区二区三区 | 婷婷色婷婷开心五月四房播播 | 中文字幕无码av波多野吉衣 | 人人澡人人透人人爽 | 婷婷丁香五月天综合东京热 | 欧美freesex黑人又粗又大 | 精品日本一区二区三区在线观看 | 超碰97人人做人人爱少妇 | 成在人线av无码免观看麻豆 | 亚洲人亚洲人成电影网站色 | 性色欲情网站iwww九文堂 | 久久成人a毛片免费观看网站 | 久久久国产一区二区三区 | 内射巨臀欧美在线视频 | 又大又黄又粗又爽的免费视频 | 欧美丰满老熟妇xxxxx性 | 人妻有码中文字幕在线 | 蜜臀av在线观看 在线欧美精品一区二区三区 | 国产成人无码av片在线观看不卡 | 性色欲情网站iwww九文堂 | 男女下面进入的视频免费午夜 | 久久久精品成人免费观看 | 成熟妇人a片免费看网站 | 婷婷色婷婷开心五月四房播播 | 在线播放亚洲第一字幕 | 国产精品香蕉在线观看 | 亚洲熟熟妇xxxx | 最新国产麻豆aⅴ精品无码 | 自拍偷自拍亚洲精品被多人伦好爽 | 精品aⅴ一区二区三区 | 一本一道久久综合久久 | 亚洲精品国产精品乱码不卡 | 中文字幕+乱码+中文字幕一区 | 国色天香社区在线视频 | 偷窥村妇洗澡毛毛多 | 亚洲国产精品毛片av不卡在线 | 国产精品鲁鲁鲁 | 国产亚洲欧美日韩亚洲中文色 | 一本久久a久久精品亚洲 | 久久午夜无码鲁丝片 | 国产真实乱对白精彩久久 | 性欧美videos高清精品 | 国产一区二区三区日韩精品 | 久久久久久av无码免费看大片 | 亚洲色www成人永久网址 | 国产激情综合五月久久 | 欧美性生交活xxxxxdddd | 久久人人爽人人爽人人片ⅴ | 亚洲大尺度无码无码专区 | 俺去俺来也在线www色官网 | 男女下面进入的视频免费午夜 | 欧洲vodafone精品性 | 少妇人妻大乳在线视频 | 强辱丰满人妻hd中文字幕 | 粉嫩少妇内射浓精videos | 55夜色66夜色国产精品视频 | 玩弄中年熟妇正在播放 | 在线a亚洲视频播放在线观看 | 国产精品久久久久9999小说 | 亚洲欧美日韩成人高清在线一区 | 无遮挡啪啪摇乳动态图 | 国产在线精品一区二区三区直播 | 亚洲码国产精品高潮在线 | 久久精品女人天堂av免费观看 | 国产av剧情md精品麻豆 | 国产亚洲美女精品久久久2020 | 国产精品99爱免费视频 | 人人妻人人澡人人爽欧美精品 | 亚洲爆乳精品无码一区二区三区 | 一个人看的www免费视频在线观看 | 亚洲精品一区二区三区在线观看 | 小泽玛莉亚一区二区视频在线 | 欧美国产亚洲日韩在线二区 | 国产精品.xx视频.xxtv | 亚洲精品午夜国产va久久成人 | yw尤物av无码国产在线观看 | 三级4级全黄60分钟 | 久久亚洲日韩精品一区二区三区 | 亚洲日本一区二区三区在线 | 国产亚洲欧美在线专区 | 亚洲精品久久久久久一区二区 | 日韩精品a片一区二区三区妖精 | 国产精品无码一区二区桃花视频 | 99er热精品视频 | 欧美人与物videos另类 | 51国偷自产一区二区三区 | 宝宝好涨水快流出来免费视频 | 欧美日韩在线亚洲综合国产人 | 伊在人天堂亚洲香蕉精品区 | 性欧美牲交xxxxx视频 | 久久人人爽人人爽人人片av高清 | 四虎影视成人永久免费观看视频 | 少妇无码av无码专区在线观看 | 国产精品va在线播放 | 国产97人人超碰caoprom | 国产人妻人伦精品1国产丝袜 | 玩弄人妻少妇500系列视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久久久av无码免费网 | 风流少妇按摩来高潮 | 国产人妻精品午夜福利免费 | 日韩av激情在线观看 | 天海翼激烈高潮到腰振不止 | 麻豆精品国产精华精华液好用吗 | 亚洲色大成网站www | 亚洲爆乳大丰满无码专区 | 免费观看又污又黄的网站 | 人人妻人人澡人人爽人人精品浪潮 | 2020久久香蕉国产线看观看 | 久久久久国色av免费观看性色 | 欧洲vodafone精品性 | 亚洲日本va中文字幕 | 亚洲精品久久久久久久久久久 | 日本精品高清一区二区 | 国产精品爱久久久久久久 | 国产精品嫩草久久久久 | 国产免费观看黄av片 | 国产情侣作爱视频免费观看 | 无码任你躁久久久久久久 | 天堂在线观看www | 熟妇女人妻丰满少妇中文字幕 | 天堂亚洲免费视频 | ass日本丰满熟妇pics | 色噜噜亚洲男人的天堂 | 国产精品人人爽人人做我的可爱 | 激情五月综合色婷婷一区二区 | 中文毛片无遮挡高清免费 | 亚洲区欧美区综合区自拍区 | 亚洲精品一区二区三区在线观看 | 麻豆果冻传媒2021精品传媒一区下载 | 久久久久99精品国产片 | 亚洲aⅴ无码成人网站国产app | 少妇的肉体aa片免费 | 四虎国产精品一区二区 | 国产特级毛片aaaaaaa高清 | 国产人妻精品一区二区三区不卡 | 好男人www社区 | 精品aⅴ一区二区三区 | 麻豆国产97在线 | 欧洲 | 5858s亚洲色大成网站www | 亚洲日本一区二区三区在线 | 我要看www免费看插插视频 | 国产免费久久久久久无码 | 无码人妻丰满熟妇区毛片18 | 国精产品一区二区三区 | 色一情一乱一伦一区二区三欧美 | 国产成人一区二区三区在线观看 | 极品尤物被啪到呻吟喷水 | 天堂а√在线中文在线 | 高清无码午夜福利视频 | 图片区 小说区 区 亚洲五月 | 日韩精品一区二区av在线 | 亚洲综合无码一区二区三区 | 国产精品对白交换视频 | 国产无套内射久久久国产 | 国产亚洲精品久久久久久久 | 免费观看又污又黄的网站 | 成人免费视频视频在线观看 免费 | 中文字幕日产无线码一区 | 中文字幕乱码人妻二区三区 | 老太婆性杂交欧美肥老太 | 色一情一乱一伦一视频免费看 | 最新国产乱人伦偷精品免费网站 | 中文字幕乱码亚洲无线三区 | 天天av天天av天天透 | 国产三级久久久精品麻豆三级 | 一本大道伊人av久久综合 | 无码国产色欲xxxxx视频 | 人人妻人人澡人人爽人人精品浪潮 | 久久精品国产日本波多野结衣 | 日日摸天天摸爽爽狠狠97 | 性色欲网站人妻丰满中文久久不卡 | 国产xxx69麻豆国语对白 | 三级4级全黄60分钟 | 国产成人精品视频ⅴa片软件竹菊 | 中文字幕无码乱人伦 | 天堂久久天堂av色综合 | 黑人粗大猛烈进出高潮视频 | 国产免费久久精品国产传媒 | 亚洲精品久久久久avwww潮水 | 亚洲熟妇自偷自拍另类 | 国产人妻精品一区二区三区 | 疯狂三人交性欧美 | 欧美激情一区二区三区成人 | 日韩欧美中文字幕公布 | 欧美日韩精品 | 亚洲第一无码av无码专区 | 午夜时刻免费入口 | 性生交大片免费看l | 娇妻被黑人粗大高潮白浆 | 精品久久久久久人妻无码中文字幕 | 日本一区二区三区免费高清 | 色噜噜亚洲男人的天堂 | 日韩欧美中文字幕公布 | 婷婷五月综合激情中文字幕 | 国产婷婷色一区二区三区在线 | 久青草影院在线观看国产 | 亚洲精品中文字幕久久久久 | 日日摸天天摸爽爽狠狠97 | 亚洲一区二区三区国产精华液 | 麻豆国产丝袜白领秘书在线观看 | 女人被爽到呻吟gif动态图视看 | 97色伦图片97综合影院 | 国产69精品久久久久app下载 | 狠狠综合久久久久综合网 | 黑森林福利视频导航 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 东北女人啪啪对白 | 欧美成人家庭影院 | 国产精品多人p群无码 | 中文字幕av无码一区二区三区电影 | 国产亚洲视频中文字幕97精品 | 欧美日本免费一区二区三区 | 人妻少妇精品久久 | 日韩欧美群交p片內射中文 | 一本久道久久综合婷婷五月 | 亚洲综合久久一区二区 | 久久午夜无码鲁丝片午夜精品 | 荡女精品导航 | 免费无码的av片在线观看 | 国产成人无码午夜视频在线观看 | 99国产欧美久久久精品 | 中文毛片无遮挡高清免费 | 国产偷抇久久精品a片69 | 国产激情艳情在线看视频 | 网友自拍区视频精品 | 亚洲中文字幕无码中文字在线 | 中文字幕无码日韩专区 | aⅴ亚洲 日韩 色 图网站 播放 | 欧美 日韩 人妻 高清 中文 | 99久久99久久免费精品蜜桃 | 欧美日本免费一区二区三区 | 在线成人www免费观看视频 | 国产成人久久精品流白浆 | 久久99精品久久久久久动态图 | 欧美激情综合亚洲一二区 | 国产内射爽爽大片视频社区在线 | 亚洲自偷自拍另类第1页 | 亚洲无人区午夜福利码高清完整版 | 在线视频网站www色 | 丰满人妻精品国产99aⅴ | 久久久久久国产精品无码下载 | 久久精品人人做人人综合试看 | 日韩欧美成人免费观看 | 性色欲情网站iwww九文堂 | 人人澡人人透人人爽 | 麻豆果冻传媒2021精品传媒一区下载 | 久久久久免费看成人影片 | 欧美性猛交xxxx富婆 | 亚洲天堂2017无码 | 日日夜夜撸啊撸 | 国产精品香蕉在线观看 | 纯爱无遮挡h肉动漫在线播放 | 丰满少妇熟乱xxxxx视频 | 亚洲午夜久久久影院 | 久久久久国色av免费观看性色 | 国产精品二区一区二区aⅴ污介绍 | 大肉大捧一进一出视频出来呀 | 永久免费精品精品永久-夜色 | 精品一二三区久久aaa片 | 亚洲国产精品久久人人爱 | 无遮挡啪啪摇乳动态图 | 强奷人妻日本中文字幕 | 无码成人精品区在线观看 | 亚洲国产精品久久人人爱 | 999久久久国产精品消防器材 | 亚洲国产精品美女久久久久 | yw尤物av无码国产在线观看 | 国产后入清纯学生妹 | 欧美亚洲国产一区二区三区 | 色婷婷久久一区二区三区麻豆 | 亚洲精品国产a久久久久久 | 亚洲一区二区观看播放 | 伊人色综合久久天天小片 | 欧美精品国产综合久久 | 久久精品国产大片免费观看 | a片免费视频在线观看 | 初尝人妻少妇中文字幕 | 无码播放一区二区三区 | 国产乱人伦av在线无码 | 亚洲精品久久久久久一区二区 | 麻豆果冻传媒2021精品传媒一区下载 | 骚片av蜜桃精品一区 | 国产精品99爱免费视频 | 国产亚洲精品久久久久久久久动漫 | 国产精品沙发午睡系列 | 国产色xx群视频射精 | 亚洲经典千人经典日产 | 国产av久久久久精东av | 无码毛片视频一区二区本码 | 欧美精品一区二区精品久久 | аⅴ资源天堂资源库在线 | 亚洲经典千人经典日产 | 精品国产精品久久一区免费式 | 人妻夜夜爽天天爽三区 | 无遮无挡爽爽免费视频 | 亚洲熟妇色xxxxx亚洲 | 亚洲国产高清在线观看视频 | 久久精品一区二区三区四区 | 国产精品亚洲专区无码不卡 | 日本又色又爽又黄的a片18禁 | 精品国产国产综合精品 | 亚洲乱码日产精品bd | 亚洲大尺度无码无码专区 | 三级4级全黄60分钟 | 精品无码一区二区三区爱欲 | 亚洲色无码一区二区三区 | 中文字幕乱码中文乱码51精品 | 伊人久久大香线焦av综合影院 | 精品久久久中文字幕人妻 | 久久无码中文字幕免费影院蜜桃 | 中文字幕无码热在线视频 | 久久午夜无码鲁丝片午夜精品 | 成人三级无码视频在线观看 | 国产性生交xxxxx无码 | 欧美日韩亚洲国产精品 | 97夜夜澡人人爽人人喊中国片 | 天天摸天天碰天天添 | 沈阳熟女露脸对白视频 | 少女韩国电视剧在线观看完整 | 精品夜夜澡人妻无码av蜜桃 | 狠狠cao日日穞夜夜穞av | 在线精品亚洲一区二区 | 一本久道高清无码视频 | 免费观看的无遮挡av | 99久久久国产精品无码免费 | 欧美性猛交xxxx富婆 | 免费无码肉片在线观看 | 综合激情五月综合激情五月激情1 | 成人毛片一区二区 | 久久精品国产日本波多野结衣 | a国产一区二区免费入口 | 人妻无码久久精品人妻 | 亚洲欧美日韩综合久久久 | 欧美日韩久久久精品a片 | 国产精品无码mv在线观看 | 无套内谢的新婚少妇国语播放 | 波多野结衣一区二区三区av免费 | 欧洲熟妇精品视频 | 十八禁真人啪啪免费网站 | 四虎影视成人永久免费观看视频 | 国产成人综合在线女婷五月99播放 | 日本护士毛茸茸高潮 | 日韩亚洲欧美中文高清在线 | 国产内射老熟女aaaa | 国产精品无码一区二区三区不卡 | 久久天天躁狠狠躁夜夜免费观看 | 99久久婷婷国产综合精品青草免费 | 国产成人无码av在线影院 | 成 人 免费观看网站 | 大胆欧美熟妇xx | 伊在人天堂亚洲香蕉精品区 | 波多野结衣av在线观看 | 亚洲码国产精品高潮在线 | 精品国精品国产自在久国产87 | 色五月五月丁香亚洲综合网 | 色一情一乱一伦一视频免费看 | 国产在线一区二区三区四区五区 | 无码人妻丰满熟妇区五十路百度 | 亚洲人成影院在线无码按摩店 | 亲嘴扒胸摸屁股激烈网站 | 捆绑白丝粉色jk震动捧喷白浆 | 人人妻人人澡人人爽欧美一区九九 | 黑人大群体交免费视频 | 中文字幕人妻无码一区二区三区 | 免费观看又污又黄的网站 | 国产精品亚洲一区二区三区喷水 | 99国产欧美久久久精品 | 又大又紧又粉嫩18p少妇 | 亚洲人成无码网www | 欧美xxxxx精品 | 成人av无码一区二区三区 | 99国产欧美久久久精品 | 97久久超碰中文字幕 | 99国产精品白浆在线观看免费 | 东京热男人av天堂 | 日日摸日日碰夜夜爽av | 国产内射爽爽大片视频社区在线 | 精品水蜜桃久久久久久久 | 日本一区二区更新不卡 | 无套内射视频囯产 | 亚洲精品国产精品乱码不卡 | 久久99久久99精品中文字幕 | 国产麻豆精品一区二区三区v视界 | 伊人色综合久久天天小片 | 性色欲网站人妻丰满中文久久不卡 | 亚洲人成影院在线无码按摩店 | 特大黑人娇小亚洲女 | 精品人人妻人人澡人人爽人人 | 粗大的内捧猛烈进出视频 | 亚洲 另类 在线 欧美 制服 | 亚洲日韩av一区二区三区四区 | 伦伦影院午夜理论片 | 性欧美videos高清精品 | 亚洲中文字幕久久无码 | 国产偷抇久久精品a片69 | 久久久久99精品国产片 | 性生交片免费无码看人 | 日韩欧美成人免费观看 | 欧美亚洲日韩国产人成在线播放 | 无码人妻黑人中文字幕 | 久久久久久久久蜜桃 | 国产亲子乱弄免费视频 | 99久久无码一区人妻 | 亚洲日本一区二区三区在线 | 日本肉体xxxx裸交 | 日本精品人妻无码免费大全 | 精品国产一区av天美传媒 | 99久久精品无码一区二区毛片 | 搡女人真爽免费视频大全 | 日本一卡二卡不卡视频查询 | 久久久久亚洲精品男人的天堂 | 一个人免费观看的www视频 | 人人妻人人藻人人爽欧美一区 | 色欲久久久天天天综合网精品 | 欧美日韩一区二区三区自拍 | 日韩欧美成人免费观看 | 亚洲一区av无码专区在线观看 | 中文字幕av日韩精品一区二区 | 娇妻被黑人粗大高潮白浆 | 亚洲色欲久久久综合网东京热 | 高清无码午夜福利视频 | 色 综合 欧美 亚洲 国产 | 色综合久久中文娱乐网 | 亚洲成色www久久网站 | 男人和女人高潮免费网站 | 天堂а√在线中文在线 | 成年美女黄网站色大免费视频 | 国产suv精品一区二区五 | 人人妻在人人 | 18禁止看的免费污网站 | 亚洲精品一区二区三区四区五区 | 免费网站看v片在线18禁无码 | 亚洲中文字幕无码中文字在线 | 蜜桃臀无码内射一区二区三区 | 成人影院yy111111在线观看 | 国产美女精品一区二区三区 | 久久综合给久久狠狠97色 | 日本xxxx色视频在线观看免费 | 疯狂三人交性欧美 | 欧洲欧美人成视频在线 | 国产色视频一区二区三区 | 精品日本一区二区三区在线观看 | 国产精品成人av在线观看 | 一本加勒比波多野结衣 | 美女极度色诱视频国产 | 日本饥渴人妻欲求不满 | 亚洲区小说区激情区图片区 | 国产精品久久国产三级国 | 国精产品一品二品国精品69xx | 无遮挡啪啪摇乳动态图 | 亚洲欧美中文字幕5发布 | 国产综合色产在线精品 | 国精产品一品二品国精品69xx | 精品无码成人片一区二区98 | 中文字幕乱码中文乱码51精品 | 樱花草在线播放免费中文 | 熟女少妇在线视频播放 | 樱花草在线播放免费中文 | 激情人妻另类人妻伦 | 精品久久8x国产免费观看 | 玩弄少妇高潮ⅹxxxyw | 小鲜肉自慰网站xnxx | 久久午夜无码鲁丝片午夜精品 | 欧美性猛交xxxx富婆 | 任你躁国产自任一区二区三区 | 成人综合网亚洲伊人 | 日韩精品无码一区二区中文字幕 | 国内精品人妻无码久久久影院蜜桃 | 巨爆乳无码视频在线观看 | 免费播放一区二区三区 | 内射后入在线观看一区 | 伊人久久大香线焦av综合影院 | 人人妻在人人 | 乱人伦人妻中文字幕无码久久网 | 牲欲强的熟妇农村老妇女视频 | aⅴ在线视频男人的天堂 | 三级4级全黄60分钟 | 图片小说视频一区二区 | 中文字幕无码日韩专区 | 国产精品18久久久久久麻辣 | 无人区乱码一区二区三区 | 久久久久久a亚洲欧洲av冫 | 国产精品久久久久久久影院 | 日本免费一区二区三区最新 | 黑人玩弄人妻中文在线 | 在线а√天堂中文官网 | a片在线免费观看 | 丝袜人妻一区二区三区 | 久久国产精品二国产精品 | 国产性生大片免费观看性 | 天天拍夜夜添久久精品 | 久久精品女人天堂av免费观看 | 天堂一区人妻无码 | 日韩人妻少妇一区二区三区 | v一区无码内射国产 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 狠狠综合久久久久综合网 | 激情国产av做激情国产爱 | 久久久成人毛片无码 | 国产午夜无码视频在线观看 | 精品久久久久久亚洲精品 | 中文亚洲成a人片在线观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产无遮挡又黄又爽又色 | 亚洲区欧美区综合区自拍区 | 亚洲成av人片在线观看无码不卡 | 无人区乱码一区二区三区 | www国产亚洲精品久久久日本 | 国产亚洲视频中文字幕97精品 | 免费乱码人妻系列无码专区 | 国产激情一区二区三区 | 国产精品爱久久久久久久 | 在线a亚洲视频播放在线观看 | 窝窝午夜理论片影院 | 又大又紧又粉嫩18p少妇 | 2020久久超碰国产精品最新 | 国产精品内射视频免费 | www一区二区www免费 | 波多野结衣一区二区三区av免费 | 久久久久久亚洲精品a片成人 | 国产一区二区三区影院 | 久久久成人毛片无码 | 欧美熟妇另类久久久久久多毛 | 天天爽夜夜爽夜夜爽 | 亚洲第一网站男人都懂 | 亚洲区小说区激情区图片区 | 日本精品久久久久中文字幕 | 欧美国产日韩亚洲中文 | 精品国产一区二区三区四区在线看 | 成人欧美一区二区三区黑人 | 精品人妻人人做人人爽夜夜爽 | 欧美熟妇另类久久久久久多毛 | 久久国产36精品色熟妇 | 国产无套内射久久久国产 | 久久99精品国产麻豆蜜芽 | 国产办公室秘书无码精品99 | 国产性生交xxxxx无码 | 国产成人精品必看 | 天天摸天天透天天添 | 日韩欧美中文字幕在线三区 | 国产在线精品一区二区三区直播 | 国产性生交xxxxx无码 | 一区二区传媒有限公司 | 日本爽爽爽爽爽爽在线观看免 | 一本久道久久综合狠狠爱 | 亚洲毛片av日韩av无码 | 精品无码一区二区三区爱欲 | 国产精品第一国产精品 | 日本xxxx色视频在线观看免费 | 乱人伦人妻中文字幕无码 | 天天拍夜夜添久久精品 | 久久zyz资源站无码中文动漫 | 国产香蕉尹人视频在线 | 国产一精品一av一免费 | 国产猛烈高潮尖叫视频免费 | 性色欲情网站iwww九文堂 | 久久婷婷五月综合色国产香蕉 | 国产成人精品无码播放 | 亚洲自偷自拍另类第1页 | av人摸人人人澡人人超碰下载 | 免费男性肉肉影院 | aⅴ亚洲 日韩 色 图网站 播放 | 精品乱子伦一区二区三区 | 久久熟妇人妻午夜寂寞影院 | 色欲av亚洲一区无码少妇 | 丰满少妇熟乱xxxxx视频 | 国产精品国产自线拍免费软件 | 国产做国产爱免费视频 | 宝宝好涨水快流出来免费视频 | 秋霞特色aa大片 | 亚洲一区二区三区四区 | 久久亚洲精品中文字幕无男同 | 国产乡下妇女做爰 | 国产人成高清在线视频99最全资源 | 成年美女黄网站色大免费全看 | 3d动漫精品啪啪一区二区中 | 国产又爽又黄又刺激的视频 | 人人妻人人澡人人爽精品欧美 | 丰满妇女强制高潮18xxxx | 日本肉体xxxx裸交 | 捆绑白丝粉色jk震动捧喷白浆 | 丰满少妇女裸体bbw | 午夜精品久久久久久久 | 国产欧美精品一区二区三区 | 丰满诱人的人妻3 | 日本一区二区更新不卡 | 99re在线播放 | 亚洲va欧美va天堂v国产综合 | 亚洲欧美日韩成人高清在线一区 | 久久亚洲日韩精品一区二区三区 | 97精品人妻一区二区三区香蕉 | 图片小说视频一区二区 | 国内老熟妇对白xxxxhd | 精品aⅴ一区二区三区 | 国产99久久精品一区二区 | 男女爱爱好爽视频免费看 | 丰满人妻精品国产99aⅴ | 丰满人妻被黑人猛烈进入 | 亚洲国产精品久久久天堂 | 高潮毛片无遮挡高清免费视频 | 18禁黄网站男男禁片免费观看 | 成人亚洲精品久久久久 | 综合激情五月综合激情五月激情1 | www一区二区www免费 | 人人妻人人澡人人爽人人精品浪潮 | 狠狠色欧美亚洲狠狠色www | 久久综合香蕉国产蜜臀av | 国产成人亚洲综合无码 | 国产另类ts人妖一区二区 | 一本久久a久久精品亚洲 | 特黄特色大片免费播放器图片 | 性做久久久久久久久 | 亚洲国产成人av在线观看 | 99在线 | 亚洲 | av在线亚洲欧洲日产一区二区 | 天堂亚洲2017在线观看 | 欧美阿v高清资源不卡在线播放 | 久激情内射婷内射蜜桃人妖 | 无码中文字幕色专区 | 国产小呦泬泬99精品 | 天天摸天天碰天天添 | 伊人色综合久久天天小片 | 国产精品毛多多水多 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 久久亚洲精品成人无码 | 蜜桃视频插满18在线观看 | 国产精品久久精品三级 | 国产亚洲精品久久久久久国模美 | 伊人久久大香线蕉av一区二区 | 狂野欧美性猛xxxx乱大交 | 无码免费一区二区三区 | 久久久久久久女国产乱让韩 | 无码国产激情在线观看 | 久久99久久99精品中文字幕 | 无码精品人妻一区二区三区av | 中文字幕+乱码+中文字幕一区 | 国产黑色丝袜在线播放 | 亚洲熟悉妇女xxx妇女av | 国产精品高潮呻吟av久久 | 男人的天堂av网站 | 国产综合在线观看 | 亚洲精品国产品国语在线观看 | 日韩视频 中文字幕 视频一区 | 日韩精品无码免费一区二区三区 | 亚洲小说图区综合在线 | 亚洲自偷自偷在线制服 | а√天堂www在线天堂小说 | 亚洲日韩精品欧美一区二区 | 精品亚洲韩国一区二区三区 | 无码国产激情在线观看 | 人妻少妇精品久久 | 中文字幕 亚洲精品 第1页 | 2020久久超碰国产精品最新 | 色综合久久久无码中文字幕 | 最新国产乱人伦偷精品免费网站 | 老熟女重囗味hdxx69 | 欧美精品一区二区精品久久 | 熟女少妇在线视频播放 | 国产xxx69麻豆国语对白 | 精品无码一区二区三区爱欲 | 久久精品中文字幕大胸 | а天堂中文在线官网 | 亚洲成色在线综合网站 | 国产国语老龄妇女a片 | 成年女人永久免费看片 | 欧美人与物videos另类 | 熟女少妇人妻中文字幕 | 国产偷国产偷精品高清尤物 | 色婷婷久久一区二区三区麻豆 | 久久综合九色综合97网 | 国产无遮挡又黄又爽免费视频 | 亚洲色欲久久久综合网东京热 | 人妻中文无码久热丝袜 | 国产乡下妇女做爰 | 国产成人精品视频ⅴa片软件竹菊 | 亚洲区小说区激情区图片区 | 欧美三级a做爰在线观看 | 爆乳一区二区三区无码 | 日本精品人妻无码免费大全 | 久久久www成人免费毛片 | 中文字幕+乱码+中文字幕一区 | 欧美精品无码一区二区三区 | 国产精品爱久久久久久久 | 国产无遮挡又黄又爽又色 | 久青草影院在线观看国产 | 欧美大屁股xxxxhd黑色 | 亚洲综合伊人久久大杳蕉 | 未满小14洗澡无码视频网站 | 国产成人一区二区三区别 | 88国产精品欧美一区二区三区 | 日本精品人妻无码77777 天堂一区人妻无码 | 亚洲人亚洲人成电影网站色 | 女人被男人爽到呻吟的视频 | 玩弄人妻少妇500系列视频 | 国产亚洲人成a在线v网站 | 国产麻豆精品精东影业av网站 | 国内精品九九久久久精品 | 丰满少妇女裸体bbw | 未满成年国产在线观看 | 131美女爱做视频 | 人妻尝试又大又粗久久 | 秋霞成人午夜鲁丝一区二区三区 | 精品久久8x国产免费观看 | 成 人 免费观看网站 | 国内综合精品午夜久久资源 | 久久99精品国产麻豆蜜芽 | 真人与拘做受免费视频 | 伊人久久大香线蕉av一区二区 | 风流少妇按摩来高潮 | 亚洲人成影院在线观看 | 免费国产黄网站在线观看 | 天天做天天爱天天爽综合网 | 国产人成高清在线视频99最全资源 | 中文毛片无遮挡高清免费 | 18禁止看的免费污网站 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 欧美自拍另类欧美综合图片区 | 亚洲狠狠婷婷综合久久 | 骚片av蜜桃精品一区 | 任你躁国产自任一区二区三区 | 亚洲精品中文字幕久久久久 | 亚洲va欧美va天堂v国产综合 | 日产国产精品亚洲系列 | 99国产精品白浆在线观看免费 | 在线精品亚洲一区二区 | 国内丰满熟女出轨videos | 曰本女人与公拘交酡免费视频 | 丰满诱人的人妻3 | 久久 国产 尿 小便 嘘嘘 | 成人片黄网站色大片免费观看 | 亚洲人亚洲人成电影网站色 | 麻豆国产97在线 | 欧洲 | 全球成人中文在线 | 国产综合色产在线精品 | 在线精品国产一区二区三区 | 少妇久久久久久人妻无码 | 日产国产精品亚洲系列 | 中文字幕无码热在线视频 | 午夜精品久久久内射近拍高清 | 免费乱码人妻系列无码专区 | 亚洲午夜福利在线观看 | 亚洲成av人影院在线观看 | 77777熟女视频在线观看 а天堂中文在线官网 | 暴力强奷在线播放无码 | 午夜理论片yy44880影院 | 日本乱偷人妻中文字幕 | 人妻少妇精品无码专区二区 | 久久综合色之久久综合 | 久9re热视频这里只有精品 | 国产偷抇久久精品a片69 | 国产精品无码成人午夜电影 | 一个人看的视频www在线 | 蜜臀av在线播放 久久综合激激的五月天 | 丝袜 中出 制服 人妻 美腿 | 18无码粉嫩小泬无套在线观看 | 十八禁视频网站在线观看 | 国产黑色丝袜在线播放 | 一二三四社区在线中文视频 | 久久久久亚洲精品男人的天堂 | 久久精品国产99久久6动漫 | 性欧美牲交在线视频 | 捆绑白丝粉色jk震动捧喷白浆 | 亚洲爆乳无码专区 | 少妇人妻大乳在线视频 | 国产成人一区二区三区别 | 亚洲va中文字幕无码久久不卡 | 无套内射视频囯产 | 清纯唯美经典一区二区 | 装睡被陌生人摸出水好爽 | 牲欲强的熟妇农村老妇女 | 久久国语露脸国产精品电影 | 久久午夜无码鲁丝片午夜精品 | 久久久久亚洲精品男人的天堂 | 性欧美大战久久久久久久 | 综合人妻久久一区二区精品 | 久久99国产综合精品 | 日本乱人伦片中文三区 | 亚洲理论电影在线观看 | 老熟妇乱子伦牲交视频 | 野狼第一精品社区 | 久久 国产 尿 小便 嘘嘘 | 日本www一道久久久免费榴莲 | 久久久精品欧美一区二区免费 | 小泽玛莉亚一区二区视频在线 | 欧美高清在线精品一区 | 无人区乱码一区二区三区 | 四虎永久在线精品免费网址 | 日日摸天天摸爽爽狠狠97 | 激情综合激情五月俺也去 | 精品欧美一区二区三区久久久 | 三级4级全黄60分钟 | 国产精品va在线播放 | 午夜肉伦伦影院 | 久青草影院在线观看国产 | 无码人中文字幕 | 久久精品国产99久久6动漫 | 又紧又大又爽精品一区二区 | 日本护士xxxxhd少妇 | 久久精品中文字幕大胸 | 国产成人亚洲综合无码 | 亚洲乱码日产精品bd | 国产精品福利视频导航 | 久久综合香蕉国产蜜臀av | 日韩精品无码一本二本三本色 | 欧洲熟妇精品视频 | 精品欧美一区二区三区久久久 | 久久国产36精品色熟妇 | 国产高潮视频在线观看 | 成人av无码一区二区三区 | 亚洲精品午夜国产va久久成人 | 未满小14洗澡无码视频网站 | 国产做国产爱免费视频 | 欧美性生交xxxxx久久久 | 5858s亚洲色大成网站www | 国产人妻精品一区二区三区不卡 | 人妻熟女一区 | 亚洲码国产精品高潮在线 | 亚洲日本va午夜在线电影 | 18黄暴禁片在线观看 | 亚洲中文字幕无码中字 | 久久人人爽人人人人片 | 在线a亚洲视频播放在线观看 | 亚洲狠狠色丁香婷婷综合 | 牲欲强的熟妇农村老妇女视频 | 精品无码一区二区三区爱欲 | 欧美丰满熟妇xxxx性ppx人交 | 欧美三级a做爰在线观看 | 国产av人人夜夜澡人人爽麻豆 | 无码人妻精品一区二区三区不卡 | 亚洲欧美精品伊人久久 | 精品乱子伦一区二区三区 | 日本免费一区二区三区最新 | 亚洲aⅴ无码成人网站国产app | 日韩精品成人一区二区三区 | 亚洲自偷自偷在线制服 | 欧美性色19p | 伊人久久大香线焦av综合影院 | aⅴ亚洲 日韩 色 图网站 播放 | 欧美喷潮久久久xxxxx | 欧美激情内射喷水高潮 | 久久人人爽人人爽人人片av高清 | 妺妺窝人体色www在线小说 | 国产香蕉尹人视频在线 | 国产无遮挡又黄又爽又色 | 熟女少妇在线视频播放 | 在线精品亚洲一区二区 | v一区无码内射国产 | 国产精品a成v人在线播放 | 一本久道高清无码视频 | 曰本女人与公拘交酡免费视频 | 天堂无码人妻精品一区二区三区 | 亚洲国产精品毛片av不卡在线 | 无码乱肉视频免费大全合集 | 久在线观看福利视频 | 亚洲区欧美区综合区自拍区 | 性史性农村dvd毛片 | 少女韩国电视剧在线观看完整 | 丰满人妻被黑人猛烈进入 | 国产suv精品一区二区五 | 少妇无码av无码专区在线观看 | 亚洲理论电影在线观看 | 亚洲精品成人av在线 | 久久无码专区国产精品s | 中文字幕乱妇无码av在线 | 日韩欧美中文字幕公布 | 国产精品无套呻吟在线 | 久久综合九色综合欧美狠狠 | 亚洲第一网站男人都懂 | 亚洲欧美日韩国产精品一区二区 | av无码电影一区二区三区 | 蜜桃臀无码内射一区二区三区 | 成人精品视频一区二区 | 99国产精品白浆在线观看免费 | 久久人人爽人人爽人人片ⅴ | 无码国模国产在线观看 | 欧美阿v高清资源不卡在线播放 | 久热国产vs视频在线观看 | 久久国产36精品色熟妇 | 在线观看国产午夜福利片 | 欧美日韩色另类综合 | 乱人伦人妻中文字幕无码久久网 | 久久久中文字幕日本无吗 | 成人免费视频在线观看 | 欧美精品在线观看 | 欧美老人巨大xxxx做受 | 亚洲欧美色中文字幕在线 | 欧洲熟妇精品视频 | 无码任你躁久久久久久久 | 狂野欧美性猛交免费视频 | 成人一区二区免费视频 | 性开放的女人aaa片 | 精品人妻中文字幕有码在线 | 草草网站影院白丝内射 | 国产内射爽爽大片视频社区在线 | 强奷人妻日本中文字幕 | 国产欧美精品一区二区三区 | 成人精品天堂一区二区三区 | 未满成年国产在线观看 | 国产亚洲精品久久久久久久 | 亚洲无人区午夜福利码高清完整版 | 亚洲国产成人av在线观看 | 精品亚洲韩国一区二区三区 | 俺去俺来也www色官网 | 国产精品毛片一区二区 | 水蜜桃色314在线观看 | 久久久精品成人免费观看 | 亚洲 日韩 欧美 成人 在线观看 | 亚洲人成无码网www | 日本熟妇人妻xxxxx人hd | 欧美熟妇另类久久久久久多毛 | 精品aⅴ一区二区三区 | 久久久精品欧美一区二区免费 | 正在播放老肥熟妇露脸 | 亚洲区小说区激情区图片区 | 亚洲成熟女人毛毛耸耸多 | 国内精品人妻无码久久久影院蜜桃 | 亚洲国产日韩a在线播放 | 在线观看国产午夜福利片 | 极品尤物被啪到呻吟喷水 | 99riav国产精品视频 | 无码人妻黑人中文字幕 | 色五月五月丁香亚洲综合网 | 无码福利日韩神码福利片 | 天天摸天天碰天天添 | 久久综合网欧美色妞网 | 丰满少妇弄高潮了www | 亚洲色大成网站www | 给我免费的视频在线观看 | 国产成人无码a区在线观看视频app | 亚洲精品久久久久avwww潮水 | 伊人久久婷婷五月综合97色 | 人妻体内射精一区二区三四 | 内射爽无广熟女亚洲 | 亚洲成av人综合在线观看 | 国产精品亚洲综合色区韩国 | 激情内射亚州一区二区三区爱妻 | 三级4级全黄60分钟 | 玩弄人妻少妇500系列视频 | 无码免费一区二区三区 | 国产精品-区区久久久狼 | 日本又色又爽又黄的a片18禁 | 九月婷婷人人澡人人添人人爽 | 妺妺窝人体色www在线小说 | 高中生自慰www网站 | 欧美变态另类xxxx | 久久久久成人片免费观看蜜芽 | 久久精品中文字幕一区 | 精品国产青草久久久久福利 | 亚洲精品无码国产 | 51国偷自产一区二区三区 | 国产精品18久久久久久麻辣 | 日日橹狠狠爱欧美视频 | 国产亚洲人成在线播放 | 精品国产国产综合精品 | 日日躁夜夜躁狠狠躁 | 欧美 日韩 亚洲 在线 | 国产午夜亚洲精品不卡下载 | 亚洲精品国产a久久久久久 | 人妻有码中文字幕在线 | 波多野结衣高清一区二区三区 | 久久综合香蕉国产蜜臀av | 国产超级va在线观看视频 | 奇米影视888欧美在线观看 | 亚洲中文字幕av在天堂 | 日韩av无码中文无码电影 | 精品一二三区久久aaa片 | 亚洲无人区午夜福利码高清完整版 | 日本熟妇浓毛 | 无码纯肉视频在线观看 | 无码午夜成人1000部免费视频 | 日产精品99久久久久久 | 色综合久久中文娱乐网 | av无码久久久久不卡免费网站 | 国产亚洲欧美日韩亚洲中文色 | 大地资源中文第3页 | 男女下面进入的视频免费午夜 | 亚洲无人区午夜福利码高清完整版 | 国产香蕉97碰碰久久人人 | 免费网站看v片在线18禁无码 | 中文无码成人免费视频在线观看 | 国产精品无码一区二区三区不卡 | 大肉大捧一进一出视频出来呀 | 夜夜躁日日躁狠狠久久av | 亚洲一区av无码专区在线观看 | 欧美 丝袜 自拍 制服 另类 | 麻豆精产国品 | 国产人妻精品一区二区三区 | 大肉大捧一进一出好爽视频 | 亚洲精品午夜国产va久久成人 | 色婷婷av一区二区三区之红樱桃 | 欧美肥老太牲交大战 | 在线播放亚洲第一字幕 | 真人与拘做受免费视频一 | 老司机亚洲精品影院 | 熟女少妇人妻中文字幕 | 国产精品无码mv在线观看 | 日韩成人一区二区三区在线观看 | 婷婷色婷婷开心五月四房播播 | 日日躁夜夜躁狠狠躁 | 久久亚洲中文字幕精品一区 | 中文字幕乱码人妻二区三区 | 玩弄少妇高潮ⅹxxxyw | 粗大的内捧猛烈进出视频 | 欧美性黑人极品hd | 高清无码午夜福利视频 | 久久人妻内射无码一区三区 | 极品尤物被啪到呻吟喷水 | 久久综合色之久久综合 | 久久国产自偷自偷免费一区调 | 伊人久久大香线蕉亚洲 | 少妇无套内谢久久久久 | 午夜精品久久久久久久 | 高中生自慰www网站 | 国产97人人超碰caoprom | 日韩精品成人一区二区三区 | 男人的天堂2018无码 | 精品人妻人人做人人爽 | 色欲av亚洲一区无码少妇 | 无码免费一区二区三区 | 国产精品亚洲а∨无码播放麻豆 | 国产一精品一av一免费 | 久热国产vs视频在线观看 | 特级做a爰片毛片免费69 | 日韩精品无码一本二本三本色 | av人摸人人人澡人人超碰下载 | 色综合久久久久综合一本到桃花网 | 特黄特色大片免费播放器图片 | 精品一区二区三区波多野结衣 | 久久久久免费精品国产 | 日本精品久久久久中文字幕 | 国产精品igao视频网 | av小次郎收藏 | 欧洲极品少妇 | 日韩亚洲欧美精品综合 | 少妇无套内谢久久久久 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 激情内射亚州一区二区三区爱妻 | 中文无码伦av中文字幕 | 无码国产色欲xxxxx视频 | av无码久久久久不卡免费网站 | 中文字幕乱码亚洲无线三区 | 国产成人精品视频ⅴa片软件竹菊 | aⅴ亚洲 日韩 色 图网站 播放 | 99久久精品午夜一区二区 | 亚洲国产高清在线观看视频 | 亚洲日本在线电影 | 亚洲精品综合五月久久小说 | 亚洲欧美精品伊人久久 | 国产精品久久久午夜夜伦鲁鲁 | 免费无码av一区二区 | 强辱丰满人妻hd中文字幕 | 久久午夜无码鲁丝片秋霞 | 啦啦啦www在线观看免费视频 | 亚洲va欧美va天堂v国产综合 | 婷婷丁香五月天综合东京热 | 国内精品人妻无码久久久影院 | 亚洲成av人片在线观看无码不卡 | 久久久久免费看成人影片 | 日本一区二区三区免费播放 | 99久久精品国产一区二区蜜芽 | 成人aaa片一区国产精品 | 午夜福利试看120秒体验区 | 日韩欧美群交p片內射中文 | 超碰97人人射妻 | 久久久精品456亚洲影院 | 日本高清一区免费中文视频 | 强辱丰满人妻hd中文字幕 | 精品一二三区久久aaa片 | 国产精品人人妻人人爽 | 无码任你躁久久久久久久 | 国产精品毛多多水多 | 人妻人人添人妻人人爱 | 最近的中文字幕在线看视频 | 欧美日韩综合一区二区三区 | 久久婷婷五月综合色国产香蕉 | 男女猛烈xx00免费视频试看 | 成人精品视频一区二区三区尤物 | 精品久久久久久人妻无码中文字幕 | 国产av人人夜夜澡人人爽麻豆 | 精品无码一区二区三区爱欲 | 亚洲a无码综合a国产av中文 | 欧美日韩一区二区综合 | 乱人伦人妻中文字幕无码久久网 | 青草青草久热国产精品 | 一本色道久久综合亚洲精品不卡 | 国产偷自视频区视频 | 亚洲成a人片在线观看无码3d | 男女猛烈xx00免费视频试看 | 亚洲精品一区二区三区在线观看 | 国产黄在线观看免费观看不卡 | 精品乱子伦一区二区三区 | 亚洲欧美综合区丁香五月小说 | 最新国产乱人伦偷精品免费网站 | 黑人大群体交免费视频 | 国产特级毛片aaaaaa高潮流水 | 亚洲男人av香蕉爽爽爽爽 | 老太婆性杂交欧美肥老太 | 97夜夜澡人人爽人人喊中国片 | 麻豆md0077饥渴少妇 | 乌克兰少妇性做爰 | 老头边吃奶边弄进去呻吟 | 久久精品人人做人人综合试看 | 欧美第一黄网免费网站 | 乱中年女人伦av三区 | 人妻少妇精品无码专区二区 | 国产精品99爱免费视频 | 在线亚洲高清揄拍自拍一品区 | 国产精品久久久一区二区三区 | 伊人久久大香线蕉午夜 | 国产精品久久久久无码av色戒 | 精品水蜜桃久久久久久久 | 又大又紧又粉嫩18p少妇 | 国产精品二区一区二区aⅴ污介绍 | 久久久久成人精品免费播放动漫 | 国产高潮视频在线观看 | 乌克兰少妇性做爰 | 麻豆精品国产精华精华液好用吗 | 久久无码中文字幕免费影院蜜桃 | 99re在线播放 | 国产内射爽爽大片视频社区在线 | 女人被爽到呻吟gif动态图视看 | 亚洲熟妇色xxxxx欧美老妇y | 亚洲中文字幕av在天堂 | 日韩 欧美 动漫 国产 制服 | 色一情一乱一伦一视频免费看 | 久久精品一区二区三区四区 | 日日夜夜撸啊撸 | 国内精品人妻无码久久久影院蜜桃 | 思思久久99热只有频精品66 | 欧美 丝袜 自拍 制服 另类 | 欧美xxxxx精品 | 88国产精品欧美一区二区三区 | 国产亚洲精品久久久久久大师 | 日韩精品乱码av一区二区 | 欧美性黑人极品hd | 特级做a爰片毛片免费69 | 日本一卡2卡3卡四卡精品网站 | 2019午夜福利不卡片在线 | 精品亚洲韩国一区二区三区 | 激情综合激情五月俺也去 | 天下第一社区视频www日本 | 男女超爽视频免费播放 | 丰满少妇弄高潮了www | 国产精品久久久久久久影院 | 国产做国产爱免费视频 | 亚洲中文字幕无码中文字在线 | 性欧美牲交xxxxx视频 | 中文字幕无码热在线视频 | 国产精品久久久久久久影院 | 国产sm调教视频在线观看 | 综合激情五月综合激情五月激情1 | 人妻插b视频一区二区三区 | av人摸人人人澡人人超碰下载 | 国产精品视频免费播放 | 日韩成人一区二区三区在线观看 | 国产午夜视频在线观看 | 国产免费无码一区二区视频 | 亚洲娇小与黑人巨大交 |