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

Gcc/G++/Gdb 的正確打開方式:從編譯到調(diào)試,一次搞懂!

開發(fā) 前端
gcc,全稱 GNU Compiler Collection,是一款強(qiáng)大的開源編譯器,支持多種語言(C、C++、Objective-C 等)。但今天,我們只專注它在 C/C++ 編譯領(lǐng)域的表現(xiàn)。

大家好,我是小康。今天我們來聊下怎樣來編譯和調(diào)試 C/C++ 程序。

提到 gcc/g++,很多初學(xué)者的第一反應(yīng)可能是:“這不是編譯器嘛,不就寫 gcc main.c 然后敲個(gè)回車?”但當(dāng)編譯報(bào)錯(cuò)時(shí),才發(fā)現(xiàn)自己對(duì)它的了解就像對(duì)前任一樣——一知半解。

其實(shí),gcc/g++ 不只是一個(gè)“會(huì)把 C/C++ 代碼變成可執(zhí)行文件”的工具,它還能優(yōu)化、調(diào)試、排錯(cuò),甚至分析代碼!今天,小康就來帶你解鎖 gcc/g++/gdb 的正確姿勢:從編譯到調(diào)試,通通搞明白!

小貼士:

  • gcc:C 編譯器,專門編譯 C 程序。
  • g++ : C++編譯器,專門編譯 C++ 程序。gcc 和 g++的用法和參數(shù)基本相同,今天我們主要介紹 gcc!
  • gdb :調(diào)試 C/C++ 程序的利器!

一、什么是 gcc?簡單聊聊它的身份

gcc,全稱 GNU Compiler Collection,是一款強(qiáng)大的開源編譯器,支持多種語言(C、C++、Objective-C 等)。但今天,我們只專注它在 C/C++ 編譯領(lǐng)域的表現(xiàn)。

一句話概括 gcc 的工作:把你寫的代碼從“人話”翻譯成機(jī)器能看懂的“機(jī)器語言”。即:將你的程序代碼編譯成計(jì)算機(jī)能夠識(shí)別的機(jī)器語言(01機(jī)器碼)。

gcc 的核心流程分為四步:

  1. 預(yù)處理:處理宏定義、頭文件、條件編譯等。
  2. 編譯:將預(yù)處理的代碼轉(zhuǎn)成匯編代碼。
  3. 匯編:把匯編代碼轉(zhuǎn)成機(jī)器代碼(生成目標(biāo)文件)。
  4. 鏈接:將目標(biāo)文件生成可執(zhí)行文件。

二、GCC 的安裝與檢查

2.1 檢查是否已安裝

在終端輸入以下命令:

gcc --version

如果返回版本信息,說明 GCC 已經(jīng)安裝成功。如果提示 command not found,那就繼續(xù)看下面的安裝步驟。

2.2 安裝 GCC/G++/GDB

  • Ubuntu/Debian 系統(tǒng):
sudo apt update
sudo apt install build-essential -y   # 安裝 gcc 和 g++
sudo apt install gdb                  # 安裝 gdb

這會(huì)同時(shí)安裝 GCC 和其他編譯工具鏈。

  • CentOS/Red Hat 系統(tǒng):
sudo yum groupinstall "Development Tools" -y  # 安裝 gcc 和 g++

sudo yum install gdb -y                       # 安裝 gdb
  1. 驗(yàn)證安裝:分別運(yùn)行 gcc --version 、 g++ --version和 gdb --version,確認(rèn) GCC/G++/GDB 是否安裝成功。

三、gcc 的基本用法:從入門到熟練

3.1 最簡單的編譯指令

gcc main.c -o main
  • main.c 是你的代碼文件。
  • -o main 指定生成的可執(zhí)行文件名為 main。如果不寫 -o,默認(rèn)生成名為 a.out 的文件。

運(yùn)行程序:

./main

就這么簡單,一行命令搞定編譯和運(yùn)行,是不是挺方便?但這其實(shí)是“打包式”的操作,編譯和鏈接一起完成。如果你是剛?cè)腴T的初學(xué)者,可能還不知道 GCC 背后做了些什么。這時(shí),我們可以試試 分步編譯,讓每一步變得更清晰。

3.2 分步編譯指令

分步編譯可以幫你更好地理解編譯器的工作流程。其實(shí),GCC 編譯分為兩個(gè)主要階段(G++ 類似):

  1. 編譯階段:將源碼翻譯成機(jī)器能理解的中間文件(目標(biāo)文件,.o 文件)。
  2. 鏈接階段:將目標(biāo)文件鏈接成最終的可執(zhí)行文件。

第一步:編譯源程序文件

運(yùn)行以下命令,將 main.c 轉(zhuǎn)換成目標(biāo)文件 main.o:

gcc -c main.c -o main.o
  • -c 參數(shù)表示只編譯,不鏈接。
  • main.o 是生成的目標(biāo)文件,雖然不能直接運(yùn)行,但它已經(jīng)包含了 main.c 的翻譯結(jié)果。

第二步:鏈接目標(biāo)文件

接下來,將目標(biāo)文件 main.o 鏈接成可執(zhí)行文件 main:

gcc main.o -o main
  • 這一步不再使用 -c,而是使用 -o,因?yàn)槲覀円?GCC 把目標(biāo)文件鏈接成一個(gè)完整的程序。

運(yùn)行程序:

./main

同樣的輸出,經(jīng)過分步操作生成了結(jié)果,是不是感覺自己更專業(yè)了?

為什么要分步編譯?

你可能會(huì)想:“分兩步多麻煩啊,我直接一步編譯不就行了?”其實(shí),分步編譯有它的優(yōu)勢:

  • 更高的靈活性:當(dāng)項(xiàng)目中有多個(gè)文件時(shí),你只需要重新編譯修改過的文件,其他部分可以直接復(fù)用之前生成的目標(biāo)文件(.o文件 ),大大提高效率。(下文會(huì)提到多個(gè)文件編譯的情況)
  • 清晰的流程:每一步的工作職責(zé)都很明確,便于排查問題。例如,如果某個(gè)文件編譯不過,可以單獨(dú)解決,而不用從頭來過。

3.2 常用選項(xiàng)大盤點(diǎn)

  • 加點(diǎn)料,讓錯(cuò)誤信息更清晰:
gcc -Wall -Wextra main.c -o main

-Wall:開啟常見警告(比如變量聲明但沒使用 -Wunused-variable  )

-Wextra:開啟額外警告(如未使用函數(shù)參數(shù) -Wunused-parameter)

  • 為調(diào)試準(zhǔn)備,加上調(diào)試符號(hào):
gcc -g main.c -o main

-g:生成調(diào)試信息,方便用 GDB 調(diào)試。

  • 編譯多個(gè)文件:
gcc file1.c file2.c -o program

多個(gè)源文件會(huì)一起編譯鏈接成一個(gè)可執(zhí)行文件。

  • 優(yōu)化代碼(-O 系列)

讓程序更快?試試優(yōu)化選項(xiàng):

-O0:不優(yōu)化(默認(rèn))

gcc 默認(rèn)不會(huì)優(yōu)化代碼,生成的程序跟你寫的源代碼更接近。

啥時(shí)候用?

  • 開發(fā)調(diào)試時(shí),容易追蹤代碼邏輯。

編譯示例:

# 這兩個(gè)命令效果一樣
gcc hello.c -O0 -o hello
gcc hello.c -o hello

-O1:基礎(chǔ)優(yōu)化

會(huì)優(yōu)化掉無用代碼,讓程序稍微跑快一點(diǎn),但調(diào)試依然友好。

啥時(shí)候用?

  • 需要一點(diǎn)性能提升,但還得經(jīng)常調(diào)試代碼的時(shí)候。

編譯示例:

gcc hello.c -O1 -o hello

-O2:常用優(yōu)化(推薦!)

在 -O1 的基礎(chǔ)上,增加更多優(yōu)化,比如減少循環(huán)次數(shù)、改進(jìn)分支預(yù)測等。

啥時(shí)候用?

  • 程序跑得還可以,但希望它跑得更穩(wěn)更快。適合大部分場景。

編譯示例:

gcc hello.c -O2 -o hello

-O3:更高級(jí)優(yōu)化

比 -O2 更激進(jìn),開啟一些高級(jí)優(yōu)化,比如函數(shù)內(nèi)聯(lián)和向量化。

啥時(shí)候用?

  • 追求極限性能的程序,比如科學(xué)計(jì)算、大型數(shù)據(jù)處理。但注意,有時(shí)候優(yōu)化過頭會(huì)導(dǎo)致兼容性問題(比如浮點(diǎn)運(yùn)算不準(zhǔn))。

編譯示例:

gcc hello.c -O3 -o hello

總結(jié):選擇適合的優(yōu)化級(jí)別

  • 開發(fā)階段:-O0 或 -O1,方便調(diào)試。
  • 生產(chǎn)環(huán)境:-O2 是最平衡的選項(xiàng),跑得快又穩(wěn)。
  • 極限性能:-O3 ,但要注意兼容性和精度問題。

根據(jù)場景選個(gè)合適的優(yōu)化級(jí)別,你的代碼就能跑得既穩(wěn)又快!

四、多文件項(xiàng)目的編譯

在實(shí)際項(xiàng)目中,代碼往往分成多個(gè)文件,比如:

  • main.c
  • utils.c
  • utils.h

方法一:一次性編譯

gcc main.c utils.c -o my_program

優(yōu)勢:

  • 簡單粗暴:一條命令搞定所有文件,適合小項(xiàng)目。
  • 快速省事:文件少的時(shí)候,用起來方便快捷。

方法二:分步編譯再鏈接

gcc -c main.c -o main.o  
gcc -c utils.c -o utils.o  
gcc main.o utils.o -o my_program

優(yōu)勢:

  • 效率高:只編譯修改過的文件,不用每次全編譯。
  • 更靈活:大項(xiàng)目用分步編譯更好管理,還能配合自動(dòng)化工具用。

建議:

文件少就用方法一,文件多或者想提高效率就用方法二,兩個(gè)都得會(huì),隨場景切換!

五、gcc 編譯流程深入解析:搞懂每一步

如果只知道用 gcc 編譯,算是入門;但要真正搞懂 gcc,必須了解它的四步工作流程。

5.1 預(yù)處理:先搞定頭文件和宏

gcc -E main.c -o main.i
  • -E:只執(zhí)行預(yù)處理,輸出結(jié)果是 main.i。
  • 預(yù)處理會(huì)替換 #include 的頭文件內(nèi)容,展開宏定義,去掉注釋。
  • 打開生成的文件,你能看到“裸露”的預(yù)處理后代碼。

5.2 編譯:從人話到匯編

gcc -S main.i -o main.s
  • -S:將預(yù)處理后的代碼轉(zhuǎn)成匯編代碼,結(jié)果是 main.s。
  • 匯編代碼是介于高級(jí)語言和機(jī)器語言之間的一種語言,更接近機(jī)器。

5.3 匯編:把匯編轉(zhuǎn)成機(jī)器碼

gcc -c main.s -o main.o
  • -c:只執(zhí)行編譯到匯編的這一步,生成目標(biāo)文件(main.o)。
  • 目標(biāo)文件是二進(jìn)制的,但還不能直接運(yùn)行。

5.4 鏈接:生成可執(zhí)行文件

gcc main.o -o main
  • 鏈接器負(fù)責(zé)將目標(biāo)文件和系統(tǒng)庫一起鏈接,生成最終的可執(zhí)行文件。

各文件內(nèi)容對(duì)比:

文件名

內(nèi)容類型

cat/vim

查看結(jié)果

更合適的查看方式

main.i

預(yù)處理后的源碼

源碼,可讀

無需額外工具,直接查看

main.s

匯編代碼

匯編指令,可讀

無需額外工具,直接查看

main.o

二進(jìn)制目標(biāo)文件

亂碼,不可讀

objdumpreadelf

main

可執(zhí)行文件,機(jī)器碼

亂碼,不可讀

objdumpreadelf

PS:   gcc 和 g++ 的用法及參數(shù)基本相同。要編譯 C++ 程序,只需把命令中的 gcc 換成 g++,比如編譯 main.cpp:g++ main.cpp -o main。C++ 程序的文件通常以 .cpp 為后綴,如 main.cpp。

六、調(diào)試?yán)鳎篏DB 上線了

寫代碼,最怕的是:程序掛了,但根本不知道為什么掛。這時(shí),調(diào)試工具 GDB 就派上用場了。

6.1 用 gcc 編譯時(shí)加調(diào)試信息

gcc -g main.c -o main
  • -g 選項(xiàng)主要是生成調(diào)試信息,方便用 GDB 調(diào)試。

6.2 常用 GDB 命令

  • 1. 啟動(dòng) GDB:
gdb ./main
  • 進(jìn)入 GDB 調(diào)試模式。

2. 設(shè)置斷點(diǎn):

break <行號(hào)>
  • 比如 break 10,在代碼第 10 行 設(shè)置斷點(diǎn) 。

3. 運(yùn)行程序:

run
  • 運(yùn)行程序,停在斷點(diǎn)處。

4. 單步執(zhí)行:

  • 單步執(zhí)行,不進(jìn)入函數(shù)
next
  • 單步執(zhí)行,進(jìn)入函數(shù)。
step

選擇 next 跳過函數(shù),step 進(jìn)入函數(shù),按需使用即可!

5. 查看變量值:

print <變量名>
  • 比如 print x,顯示當(dāng)前變量 x 的值。

6. 查看當(dāng)前代碼(上下文代碼)

  • 查看當(dāng)前執(zhí)行位置的代碼:
list

默認(rèn)顯示當(dāng)前斷點(diǎn)附近的代碼。

  • 指定顯示某行附近的代碼:
list <行號(hào)>

比如 list 20,顯示第 20 行附近的代碼。

7. 打印函數(shù)調(diào)用棧

  • 查看調(diào)用棧信息:
backtrace
  • 顯示當(dāng)前函數(shù)被哪個(gè)函數(shù)調(diào)用,調(diào)用者又是誰,一層層往上追溯。
  • 對(duì)于分析崩潰點(diǎn)(coredump)特別有用。

8. 查看所有斷點(diǎn)

  • 列出當(dāng)前所有斷點(diǎn):
info breakpoints

可以看到每個(gè)斷點(diǎn)的編號(hào)、位置等信息。

9. 刪除斷點(diǎn)

  • 刪除某個(gè)斷點(diǎn):
delete <斷點(diǎn)編號(hào)>

比如 delete 1,刪除編號(hào)為 1 的斷點(diǎn)。

  • 刪除所有斷點(diǎn):
delete

10. 繼續(xù)運(yùn)行程序

  • 從當(dāng)前斷點(diǎn)繼續(xù)運(yùn)行程序:
continue
  • 程序會(huì)從當(dāng)前斷點(diǎn)繼續(xù)跑,直到遇到下一個(gè)斷點(diǎn)或結(jié)束。

11. 退出調(diào)試:

quit

七、常見問題排查

7.1 缺少頭文件

報(bào)錯(cuò):stdio.h: No such file or directory

原因:簡單說,編譯器找不到 stdio.h 這個(gè)標(biāo)準(zhǔn)頭文件,可能是系統(tǒng)里沒裝編譯工具包,缺了開發(fā)相關(guān)的庫。

解決方法:

  • 在 Ubuntu/Debian 系統(tǒng)上,安裝必備工具包:使用命令 sudo apt install build-essential    這會(huì)把 gcc、g++ 和相關(guān)頭文件都裝上。
  • 在 CentOS/Red Hat 系統(tǒng)上,安裝開發(fā)工具:sudo yum groupinstall "Development Tools"這樣能確保編譯環(huán)境完整無缺。

7.2 “段錯(cuò)誤”

報(bào)錯(cuò):Segmentation fault (core dumped)

原因:簡單說,程序想訪問一塊不該碰的內(nèi)存,比如:

  • 用了“野指針”(指針沒初始化,隨便指向了某個(gè)未知地址)。
  • 數(shù)組越界了,訪問了數(shù)組的第“10086”個(gè)元素,而數(shù)組長度只有 100 個(gè)。
  • 使用了已經(jīng)釋放的內(nèi)存。

解決方法:

1、檢查指針和數(shù)組:

  • 確保指針初始化,比如:
int *ptr ; 
*ptr = 10;  // 未初始化就賦值,肯定會(huì)報(bào)錯(cuò):Segmentation fault (core dumped)
  • 不要訪問超出數(shù)組范圍的元素,比如訪問 arr[10086],而數(shù)組只有 100 個(gè)元素。
  • 如果是動(dòng)態(tài)內(nèi)存分配(malloc/free),檢查是否釋放了兩次。

2、用 GDB 調(diào)試:

  • 編譯時(shí)加上 -g 參數(shù)生成調(diào)試信息:
gcc -g main.c -o main
  • 然后用 GDB 跑程序:
gdb ./main
run
  • 程序崩潰時(shí),輸入:
bt

GDB 會(huì)告訴你出錯(cuò)在哪一行。

調(diào)試時(shí)別慌,找到那行代碼,慢慢改,段錯(cuò)誤就能搞定!

7.3 鏈接錯(cuò)誤

報(bào)錯(cuò):undefined reference to '某函數(shù)'

原因:這句話的意思很簡單,你的代碼用到了一個(gè)函數(shù),但是編譯器在鏈接階段找不到它的實(shí)現(xiàn)。可能是:

  • 忘了加實(shí)現(xiàn)的文件:函數(shù)寫在另一個(gè) .c 文件里,編譯時(shí)沒有包含進(jìn)去。
  • 漏了庫的鏈接:用到了外部庫的函數(shù),但沒告訴編譯器要用哪個(gè)庫。
  • 函數(shù)聲明沒問題,函數(shù)實(shí)現(xiàn)卻沒寫,編譯器不知道該去哪里找它。

解決方法:

  • 如果函數(shù)是你自己寫的,確保編譯時(shí)包含了所有相關(guān)文件:
gcc main.c func.c -o main

沒加就補(bǔ)上!

  • 如果是庫函數(shù),比如用到了數(shù)學(xué)庫的 sqrt,需要鏈接對(duì)應(yīng)的庫,加上 -lm:
gcc main.c -lm -o main

這里的 -lm 表示鏈接數(shù)學(xué)庫(math library)。

  • 檢查函數(shù)實(shí)現(xiàn)是否真的寫了!如果只是聲明了函數(shù):
void my_function();

但實(shí)現(xiàn)忘了寫,肯定會(huì)報(bào)錯(cuò)。趕緊補(bǔ)上實(shí)現(xiàn)!

這個(gè)鏈接錯(cuò)誤其實(shí)很常見,仔細(xì)檢查文件和庫就能解決!

7.4 未定義的函數(shù)引用

報(bào)錯(cuò):undefined reference to '某函數(shù)'

原因:簡單說,這個(gè)報(bào)錯(cuò)就是你的代碼用到了某個(gè)函數(shù),但編譯器找不到它的實(shí)現(xiàn)。可能是你沒把實(shí)現(xiàn)的文件加到編譯命令里,或者用到了外部庫卻忘了鏈接。

解決方法:

1、如果是你自己寫的函數(shù),確認(rèn)它的實(shí)現(xiàn)文件是否加到編譯命令里,比如:

gcc main.c func.c -o main

沒加就補(bǔ)上!

2、如果是用的庫函數(shù),比如數(shù)學(xué)庫里的 sqrt,就加上對(duì)應(yīng)的庫鏈接,比如:

gcc main.c -lm -o main

這個(gè) -lm 是告訴編譯器“我要用數(shù)學(xué)庫”。

7.5 GDB 提示沒有調(diào)試信息

報(bào)錯(cuò):No debugging symbols found

原因:這個(gè)報(bào)錯(cuò)意思很簡單:你的程序沒帶“調(diào)試信息”。GDB 說,“你讓我調(diào)試代碼,可你不給我地圖(調(diào)試信息),我咋知道問題在哪?”

解決方法:

編譯的時(shí)候記得加上 -g 參數(shù),這是讓 GCC 幫你把調(diào)試信息打包進(jìn)去,比如:

gcc -g main.c -o main

這個(gè) -g 就是那個(gè)“地圖”。

然后再用 GDB 調(diào)試:

gdb ./main

這下 GDB 才知道代碼怎么走的,可以幫你查問題了!

八、總結(jié):gcc/g++/gdb 不是魔法,用熟了像開掛

gcc/g++ 就像開發(fā)中的“瑞士軍刀”,功能全面卻不復(fù)雜,用熟了它們,開發(fā)效率會(huì)直線上升:

  • 從編譯到優(yōu)化,輕松搞定,讓程序又快又穩(wěn)。
  • 從調(diào)試到排錯(cuò),有了 gdb,分析問題更加清晰直觀。
  • 掌握了 gcc/g++ 和 gdb,任何 C/C++ 程序編譯調(diào)試都不在話下!

看完這篇文章,你是不是覺得 gcc/g++ 和 gdb 的用法更清晰了?趕緊上手操作一下吧,實(shí)踐是掌握工具的最快捷徑!

不過,項(xiàng)目復(fù)雜了,總手動(dòng)敲一長串的 gcc 命令是不是太麻煩了?

責(zé)任編輯:武曉燕 來源: 跟著小康學(xué)編程
相關(guān)推薦

2021-10-09 15:49:00

5G網(wǎng)絡(luò)技術(shù)

2022-03-22 07:37:04

FeignSpringRibbon

2016-03-01 14:51:18

云計(jì)算DevOps

2016-01-08 11:00:14

OpenStack云計(jì)算

2019-02-20 14:35:57

區(qū)塊鏈數(shù)字貨幣比特幣

2021-11-25 07:43:56

CIOIT董事會(huì)

2023-07-10 09:38:06

兼容性測試方案

2017-08-02 10:43:39

深度學(xué)習(xí)TensorFlowRNN

2025-04-30 08:20:58

2021-11-10 16:03:42

Pyecharts Python可視化

2018-10-29 15:20:03

2021-06-07 10:05:56

性能優(yōu)化Kafka

2020-07-05 09:17:20

云桌面

2020-06-04 15:16:46

云計(jì)算

2022-06-22 09:06:54

CSS垂直居中代碼

2021-01-11 10:47:09

IT部門網(wǎng)絡(luò)管理

2022-08-16 08:33:06

DevOps實(shí)踐

2019-03-17 16:48:51

物聯(lián)網(wǎng)云計(jì)算數(shù)據(jù)信息

2025-09-09 08:47:58

2018-07-03 09:41:23

數(shù)據(jù)庫系統(tǒng) 計(jì)算機(jī)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日本加勒比一区| 久久久久亚洲AV成人| 美女av在线免费看| 久久免费电影网| 日韩av快播网址| 丁香六月激情综合| 日本久久伊人| 欧美色另类天堂2015| 日韩欧美亚洲日产国产| 91av国产精品| 亚洲少妇自拍| 日韩专区中文字幕| 怡红院一区二区| 免费网站观看www在线观| xvideos.蜜桃一区二区| 色综合天天视频在线观看| 麻豆蜜桃91| 国产精品一区二区黑人巨大| 激情亚洲网站| 最好看的2019的中文字幕视频| 深夜视频在线观看| 激情小说亚洲| 亚洲福利国产精品| 亚洲在线色站| 欧美巨乳在线| 国产精品资源在线看| 日韩女优人人人人射在线视频| 国产探花在线视频| 欧美日韩123| 日韩欧美国产麻豆| 国内外成人免费在线视频| av成人 com a| 亚洲精品免费视频| 性欧美精品一区二区三区在线播放 | 国产探花一区二区| 亚洲第一av在线| 小说区图片区图片区另类灬| 少妇精品视频一区二区| 激情综合色综合久久综合| 欧美做爰性生交视频| 久久久精品91| 亚洲欧洲美洲一区二区三区| 在线播放精品一区二区三区| 日韩无码精品一区二区| 欧美国产中文高清| 欧美精品v国产精品v日韩精品 | 精品一区二区三区视频日产| 国产亲伦免费视频播放| 蜜桃av一区二区三区| 欧美在线xxx| 久久久久久久黄色片| 国产精品porn| 久久av.com| 国产老头老太做爰视频| 日韩在线电影| 欧美日韩在线观看一区二区 | 亚洲国产精品久久| 欧美做受高潮中文字幕| 午夜视频在线观看精品中文| 日韩一区二区精品葵司在线| 精品亚洲视频在线| 99久久久成人国产精品| 777a∨成人精品桃花网| 999这里有精品| 亚洲青青久久| 91精品国产高清一区二区三区蜜臀| 第一区免费在线观看| 91视频亚洲| 欧美一区二区三区小说| 丰满饥渴老女人hd| silk一区二区三区精品视频| 精品免费日韩av| 99久久人妻精品免费二区| 欧美理伦片在线播放| 亚洲精品丝袜日韩| 丁香花五月婷婷| 欧美r级电影| 欧美成人精品在线播放| 国产在线视频在线观看| 国产一区二区三区的电影 | 岛国av在线一区| 国产伦视频一区二区三区| 天堂а在线中文在线无限看推荐| 久久综合给合久久狠狠狠97色69| 日韩精品一线二线三线| 国产精品va在线观看视色| 亚洲综合在线视频| 亚洲 自拍 另类小说综合图区| 一二三四视频在线中文| 中国色在线观看另类| 亚洲精品无人区| 色呦呦网站在线观看| 亚洲h精品动漫在线观看| 国产一区亚洲二区三区| 亚洲免费一区| 亚洲激情第一页| 色www亚洲国产阿娇yao| 亚洲视频观看| 国产精品高潮呻吟久久av无限| 91成品人影院| 99久久99久久精品免费观看| 亚洲精品国产精品国自产| 午夜羞羞小视频在线观看| 黄网动漫久久久| 伊人影院综合在线| www.神马久久| xxx成人少妇69| 日本五十熟hd丰满| 秋霞午夜av一区二区三区| 91pron在线| 番号在线播放| 天涯成人国产亚洲精品一区av| 最近中文字幕一区二区| 6080成人| 久久综合五月天| 国产一区免费看| 成人精品视频一区二区三区尤物| 亚洲成人精品电影在线观看| 俺来俺也去www色在线观看| 欧美久久久久久蜜桃| 欧美 日本 国产| 欧美激情四色| 国产免费久久av| 日韩成人黄色| 亚洲一区免费视频| 久久6免费视频| 欧美日韩一区二区三区视频播放| 高清欧美性猛交| 国产精品综合在线| 国产欧美一区二区精品仙草咪| 亚洲熟妇无码一区二区三区| 日本精品性网站在线观看| 免费激情视频网站| 亚洲精品伦理在线| 视频区 图片区 小说区| 成人国产精品一级毛片视频| 欧美性在线视频| 日本成人动漫在线观看| 一区二区三区在线影院| 成人亚洲免费视频| 久久日文中文字幕乱码| 国产精品黄页免费高清在线观看| 亚洲 欧美 自拍偷拍| 亚洲国产成人av网| 日本精品一二三区| 国产一区日韩欧美| 国产98在线|日韩| 欧美videosex性欧美黑吊| 欧美精品免费视频| 青青青视频在线免费观看| 全部av―极品视觉盛宴亚洲| 日韩亚洲视频在线| 国产精品亲子伦av一区二区三区| 亚洲色图第一页| 国产第一页在线观看| 久久久久久免费毛片精品| 日韩一级在线免费观看| 免费观看不卡av| 欧美一乱一性一交一视频| 日本五码在线| 欧洲视频一区二区| 18啪啪污污免费网站| 美女一区二区三区在线观看| 亚洲欧美日韩另类精品一区二区三区 | 男女av免费观看| 九九在线精品| 国产精品免费网站| 午夜视频在线观看免费视频| 在线播放91灌醉迷j高跟美女| а天堂中文在线资源| 精品一区二区在线免费观看| www.黄色网址.com| 成人香蕉社区| 日韩美女在线播放| 午夜视频在线免费观看| 日韩一级完整毛片| 在线观看精品国产| 久久久亚洲精品石原莉奈| 日韩av片网站| 午夜精品久久| 久久久一本精品99久久精品| 国产精品亚洲d| 久久天天躁狠狠躁夜夜躁2014| 亚洲福利在线观看视频| 欧美特黄级在线| 国精品人伦一区二区三区蜜桃| 国产一区二区三区精品视频| 狠狠精品干练久久久无码中文字幕| 成人台湾亚洲精品一区二区| 1769国产精品| 亚洲系列在线观看| 亚洲综合久久av| 制服 丝袜 综合 日韩 欧美| 久久99精品久久久久久国产越南 | 亚洲乱亚洲高清| 国产精品丝袜白浆摸在线| 黄色网页在线观看| 日韩成人av网| 97视频免费在线| 五月激情丁香一区二区三区| 中文字幕伦理片| 国产99久久精品| 国产成人手机视频| 韩国av一区| 日韩妆和欧美的一区二区| 国产一区二区三区精品在线观看| 欧美与欧洲交xxxx免费观看 | 色婷婷久久久| 91免费国产网站| 欧美xxx视频| 欧美极品美女电影一区| 亚洲成a人v欧美综合天堂麻豆| 亚洲高清福利视频| 99国产在线播放| 日本韩国欧美一区| 欧美亚洲天堂网| 日韩毛片一二三区| 免费一级做a爰片久久毛片潮| 国产二区国产一区在线观看 | 国产曰批免费观看久久久| 欧美日韩在线不卡视频| 欧美日韩国产亚洲一区| 亚洲欧洲精品一区二区三区波多野1战4| 99精品在免费线中文字幕网站一区| 国产精品久久久av久久久| 999福利在线视频| 欧美国产第一页| 黄网站app在线观看| 一区二区三区天堂av| 日韩精品福利| 日韩精品久久久久| 风流老熟女一区二区三区| 欧美一区二区在线看| 中文区中文字幕免费看| 色婷婷精品久久二区二区蜜臂av| 国产三级国产精品国产国在线观看| 国产亚洲一区二区三区在线观看| 好男人香蕉影院| 成人网男人的天堂| 9.1在线观看免费| 国产精品77777竹菊影视小说| 91国内在线播放| 麻豆成人免费电影| 国产美女18xxxx免费视频| 日本中文字幕一区二区视频| 可以免费在线看黄的网站| 久久免费高清| 白嫩少妇丰满一区二区| 亚洲欧美日韩国产综合精品二区| 亚洲不卡中文字幕无码| 亚洲人www| 欧美 日本 亚洲| 亚洲免费影院| 久久久久久久久久久久久久国产| 久久国产高清| 男人透女人免费视频| 久久性天堂网| 一级片视频免费观看| 久久精品免费观看| 中文字幕视频三区| 国产福利电影一区二区三区| 扒开伸进免费视频| 97久久精品人人澡人人爽| 国产精品嫩草av| 91欧美一区二区| 中文字幕免费高清| 国产精品亲子伦对白| 91麻豆精品久久毛片一级| 亚洲图片你懂的| 久久免费精彩视频| 精品久久中文字幕久久av| 伊人中文字幕在线观看| 欧美在线高清视频| 国产又大又黑又粗| 欧美电影免费提供在线观看| 偷拍精品一区二区三区| 日韩av网站在线| 国产在线黄色| 久久在线精品视频| 51漫画成人app入口| 欧洲美女7788成人免费视频| 国产精品99精品一区二区三区∴| 成人av在线亚洲| 岛国精品一区| 热re99久久精品国产99热| 久久大综合网| 成人午夜视频在线观看免费| 久久综合影音| 日韩a一级欧美一级| av成人动漫在线观看| 国产熟女一区二区| 亚洲精品视频自拍| 国产专区第一页| 91麻豆精品国产91久久久| 天天色天天操天天射| 在线精品播放av| 日本性爱视频在线观看| 国产成一区二区| 欧美久久一区二区三区| 久久精品午夜一区二区福利| 99久久99久久精品国产片桃花 | 精品伦理一区二区三区| 日韩高清欧美| 欧美成人高潮一二区在线看| 日韩av中文字幕一区二区三区| 欧美人与性动交α欧美精品| 久久久久久久久久久久久女国产乱| 亚洲一级生活片| 欧美性猛交xxxx免费看| 国产黄色片免费观看| 免费国产羞羞网站视频| 欧美夫妻性生活| 色吊丝在线永久观看最新版本| 日韩视频免费在线| 无遮挡爽大片在线观看视频| 成人免费午夜电影| 国产aⅴ精品一区二区三区久久| 天堂av在线中文| 美腿丝袜在线亚洲一区| 三上悠亚影音先锋| 午夜精品久久久| 国产黄色高清视频| 久久精品国产一区二区电影| 日韩精品专区| 国产在线一区二区三区欧美 | 懂色av中文一区二区三区| 国产日韩精品中文字无码| 色综合色综合色综合色综合色综合| aaa一区二区| 最近2019中文字幕第三页视频| 欧美男人天堂| 91人成网站www| 久久精品高清| 超碰在线播放91| 国产欧美日韩中文久久| 久久夜色精品国产噜噜亚洲av| 精品福利二区三区| 亚洲卡一卡二| 亚洲综合一区二区不卡| 香蕉久久网站| 午夜av中文字幕| 亚洲欧美偷拍另类a∨色屁股| 中文字幕精品一区二| 亚洲色图第三页| 欧美日韩激情电影| 日韩妆和欧美的一区二区| 日韩avvvv在线播放| 国产真实乱人偷精品人妻| 欧美视频免费在线| 日韩a在线观看| 国产精品成人免费电影| 精品一区二区三区的国产在线观看| 青青在线视频观看| 久久网站最新地址| 国产午夜精品久久久久| 亚洲人成亚洲人成在线观看| 91精品影视| 亚洲三区在线观看| 国内精品免费在线观看| 免费成年人视频在线观看| 3d动漫精品啪啪| 三级网站视频在在线播放| 国产精品青青草| 国产精品视频久久一区| 色噜噜日韩精品欧美一区二区| 国产91丝袜在线播放| 一级黄色免费在线观看| 日韩avvvv在线播放| 99热在线观看精品| 日韩精品一区二区三区视频在线观看 | 精品国产亚洲一区二区三区| 男女啪啪免费观看| 成人精品电影在线观看| 天天操夜夜操视频| 中文字幕无线精品亚洲乱码一区| 天堂久久一区| 亚洲精品蜜桃久久久久久| 91丝袜美腿高跟国产极品老师 | 日韩电影网1区2区| 国产精品久久久免费看| 精品欧美一区二区久久| 英国三级经典在线观看| 亚洲精品一区二区三区樱花| 国产乱码精品一区二区三区忘忧草 | 免费欧美一区| 久久人人爽av| 亚洲午夜激情av| 成人免费视频| 97视频热人人精品| 亚洲欧美日韩在线观看a三区 | 日韩大胆视频| 成人网欧美在线视频| 亚洲最黄网站| 亚洲一二三四五六区| 亚洲第一中文字幕在线观看| 国精产品一区一区三区四川| japanese在线播放| 久久久国产午夜精品| www男人的天堂| 国产精品久久久久久亚洲调教|