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

使用Cygwin在Windows上進行Unix開發

原創
開發 開發工具
本文主要向讀者介紹如何在Cygwin下進行程序開發。文章將首先介紹使用GCC開發控制臺模式的應用程序和GUI模式的應用程序,然后闡述在Cygwin下如何調試程序,隨后詳細講解在Cygwin下動態鏈接庫的構建和使用,最后介紹資源文件的有關知識。

一、Cygwin簡介

Cygwin是許多自由軟件的集合,最初由Cygnus Solutions開發,用于各種版本的Microsoft Windows上,運行UNIX類系統。Cygwin的主要目的是通過重新編譯,將POSIX系統(例如Linux、BSD,以及其他Unix系統)上的軟件移植到Windows上。Cygwin包括了一套庫,該庫在Win32系統下實現了POSIX系統調用的API;還有一套GNU開發工具集(比如GCC、GDB),這樣可以進行簡單的軟件開發;還有一些UNIX系統下的常見程序。2001年,新增了X Window System。另外還有一個名為MinGW的庫,可以跟Windows本地的MSVCRT庫(Windows API)一起工作。

二、在Cygwin中使用GCC

下面我們開始介紹如何在Cygwin中使用GCC開發控制臺模式的應用程序和GUI模式的應用程序。

控制臺模式的應用程序

使用gcc編譯程序跟在UNIX操作系統之下非常相似,關于gcc的標準用法和選項可以參考其用戶手冊。下面是一個簡單的示例:

例1:利用GCC構建Hello World

C:\> gcc hello.c -o hello.exe
C:\> hello.exe
Hello, World

C:\>

GUI模式的應用程序

Cygwin使我們可以編譯出能夠訪問所有標準Windows32位API的程序,其中包括定義在微軟公司和暢銷出版物中的那些GUI函數。然而,使用GNU工具跟使用微軟公司的工具構建應用程序的過程會稍有不同。絕大多數情況下,根本無需修改源代碼。然而,您應該刪除函數中的全部__export屬性,并將其換成下面的內容:

int foo (int) __attribute__ ((__dllexport__));

int
foo (int i)

Cygwin Makefile與其他任何類UNIX的Makefile非常類似,唯一區別在于我們需要使用gcc -mwindows來把程序連接成一個圖形用戶界面應用程序,而非命令行應用程序。下面是一個例子:

myapp.exe : myapp.o myapp.res
	gcc -mwindows myapp.o myapp.res -o $@

myapp.res : myapp.rc resource.h
	windres $< -O coff -o $@

注意,通過利用windres可把Windows資源編譯成一個COFF格式的.res文件,這樣就能把您需要的所有位圖、圖標及其他資源放到一個目標文件中。 正常情況下,如果您省略了“-O coff”的話,它就會創建一個Windows格式的文件,但是我們只能鏈接COFF格式的目標文件。所以,我們吩咐windres生成COFF格式的目標文件。我們的大部分示例都假定你的鏈接程序能夠直接處理Windows的資源文件,我們保留.res的命名約定。關于windres的更多信息請參見有關手冊。下面是一個GUI模式入門之用的“Hello ,World !”程序:

/*-------------------------------------------------*/
/* hellogui.c :一個圖形模式的hello world程序                    */
/*編譯命令:gcc -mwindows hellogui.c -o hellogui.exe */
/*-------------------------------------------------*/
#include <windows.h>

char glpszText[1024];

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);

int APIENTRY WinMain(HINSTANCE hInstance, 
		HINSTANCE hPrevInstance,
		LPSTR lpCmdLine,
		int nCmdShow)
{
	sprintf(glpszText, 
		"Hello World\nGetCommandLine(): [%s]\n"
		"WinMain lpCmdLine: [%s]\n",
		lpCmdLine, GetCommandLine() );

	WNDCLASSEX wcex; 
 
	wcex.cbSize = sizeof(wcex);
	wcex.style = CS_HREDRAW | CS_VREDRAW;
	wcex.lpfnWndProc = WndProc;
	wcex.cbClsExtra = 0;
	wcex.cbWndExtra = 0;
	wcex.hInstance = hInstance;
	wcex.hIcon = LoadIcon(NULL, IDI_APPLICATION);
	wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
	wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
	wcex.lpszMenuName = NULL;
	wcex.lpszClassName = "HELLO";
	wcex.hIconSm = NULL;

	if (!RegisterClassEx(&wcex))
		return FALSE; 

	HWND hWnd;
	hWnd = CreateWindow("HELLO", "Hello", WS_OVERLAPPEDWINDOW,
		CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInstance, NULL);

	if (!hWnd)
		return FALSE;

	ShowWindow(hWnd, nCmdShow);
	UpdateWindow(hWnd);

	MSG msg;
	while (GetMessage(&msg, NULL, 0, 0)) 
	{
		TranslateMessage(&msg);
		DispatchMessage(&msg);
	}

	return msg.wParam;
}

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
	PAINTSTRUCT ps;
	HDC hdc;
	
	switch (message) 
	{
		case WM_PAINT:
			hdc = BeginPaint(hWnd, &ps);
			RECT rt;
			GetClientRect(hWnd, &rt);
			DrawText(hdc, glpszText, strlen(glpszText), &rt, DT_TOP | DT_LEFT);
			EndPaint(hWnd, &ps);
			break;
		case WM_DESTROY:
			PostQuitMessage(0);
			break;
		default:
			return DefWindowProc(hWnd, message, wParam, lParam);
	}
	return 0;
}

#p#

三、調試Cygwin程序

如果您的程序無法正常運行,通常情況下是由于其中的bug所致,因為程序本身存在錯誤會導致出乎意料的結果甚至崩潰。借助于一種稱為調試器的專用工具可以使得查找和修正錯誤變得更簡單一些。就Cygwin而論,其調試器是GDB,即GNU debugger的縮寫。這個工具使我們可以在一個受控環境中運行我們的程序,在這個環境中,我們可以考察程序運行過程中或其崩潰之后的狀態。有時候,程序崩潰時操作系統就會把程序當掉時的內存內容轉儲出來,現在通常是寫在一個叫core 的file 里面。在Cygwin中,這些文件通常是些常規的文本文件,所以無法直接為GDB所用。

在調試程序之前,需要對需要進行調試的程序做一些準備工作,具體來說,就是在把源程序編譯成目標程序的時候為所有標志添加-g。

例2:利用-g進行編譯

$ gcc -g -O2 -c myapp.c
$ gcc -g myapp.c -o myapp

這樣就會在生產的目標文件中加入額外的信息來告知調試器有關行號、變量名及其他有用的信息,不過這會使得目標文件的尺寸驟增。這些額外的符號和調試信息提供了原始代碼的足夠信息,所以調試器在調試它們的時候會更加容易。

在Windows版本的GNUPro中,GDB具有一個全功能的圖形界面。在Cygwin的Net發行版本中,GDB只能在命令行下使用。要調用GDB,只需在命令提示符下輸入gdb myapp.exe即可。這時會顯示一些您自己的有關文本信息,之后GDB會提示您繼續輸入其他命令。只要看到這個提示符,就表示gdb正在等待您輸入命令,如果您鍵入help命令,那么就會收到您可以使用的各個命令的幫助信息,當然您也可以通過閱讀“GDB User's Manual”來全面細致地了解gdb及其使用方法。

如果你的程序崩潰了,并且您想弄清它為什么崩潰的話,最好的辦法是鍵入run來運行您的程序。等它崩潰之后,您可以鍵入where命令來看看它在哪里崩潰的,或者輸入info locals命令來查看所有局部變量的值。此外,如果鍵入print命令的話,我們還可以檢查單獨的變量以及指向這些變量的指針。

如果您的程序做了出乎意料之外的事情,那么可以使用break命令讓gdb在程序到達指定的函數或者行號的時候停止程序的運行:

例3:gdb中的中斷命令

(gdb) break my_function
(gdb) break 47

現在,當我們輸入run命令之后,我們的程序會在斷點處停下來,這樣我們就能使用其他的gdb命令來查看程序當時的狀態、修改變量以及單步調試程序的各個語句。需要注意的是,我們可以給run命令附加其他的參數,以便向我們的程序提供相應的命令行參數。例如,下面的兩條命令的效果是一樣的:

例4:利用命令行參數進行調試

$ myprog -t foo --queue 47

$ gdb myprog
(gdb) run -t foo --queue 47

#p#

四、動態鏈接庫的構建和使用

動態鏈接庫(DLL)是指在程序運行時而非編譯時鏈接進我們的程序的那些庫。一個動態鏈接庫有三部分組成:

◆導出表

◆代碼和數據

◆導入庫

代碼和數據是我們需要編寫的函數、變量等內容,它們將被合并到一起放入dll,你可以簡單的理解成建立了一個碩大的目標文件。但是它們卻不會放入您的.exe文件。導出表含有動態庫為其他程序提供給的函數和變量,可以簡單的理解成這是一個“全局”符號表,除此之外的內容都是不可見的。通常情況下,我們需要利用文本編輯程序手工建立該表,不過我們也可以利用代碼中的函數表來自動生成這個導出表。dlltool程序可以根據導出符號組成的文本文件來創建動態鏈接庫的導出部分。輸入庫類似于類UNIX系統中的.a程序庫,但是它只包含通知操作系統應用程序跟dll交互方式(即導入方法)所需信息。這些信息可以鏈接到我們的.exe程序中。當然這些信息也可以利用dlltool程序來建立。

構建動態鏈接庫

我們這里將簡單介紹如何利用gcc來建立動態鏈接庫,有關gcc建立動態庫的更詳盡的選項,可以參考gcc的有關文檔。首先提供一個簡單的示例來演示建立一個動態鏈接庫的過程。本例中,我們的程序(myprog.exe) 由單個源文件myprog.c組成,而動態鏈接庫(mydll.dll)的內容則由稱為mydll.c的文件得到。

幸運的是,在最新的gcc和binutils的幫助下,建立動態鏈接庫的過程非常簡單。下面我們介紹編譯mydll.c的具體過程。

#include <stdio.h>

int
hello()
{
  printf ("Hello World!\n");
}  

首先將mydll.c編譯為目標代碼,命令如下所示:

gcc -c mydll.c

然后,告訴gcc我們要構建一個共享庫,命令如下所示:

gcc -shared -o mydll.dll mydll.o

就這么簡單!現在,我們將這個動態鏈接庫鏈接到一個簡單程序上,程序代碼如下所示:

int 
main ()
{
  hello ();
}

現在我們用下列命令來連接動態鏈接庫,命令如下所示:

gcc -o myprog myprog.c -L./ -lmydll

然而,如果想要把動態鏈接庫做成一個導出庫的話,可以使用下列語法:

gcc -shared -o cyg${module}.dll \

-Wl,--out-implib=lib${module}.dll.a \

-Wl,--export-all-symbols \

-Wl,--enable-auto-import \

-Wl,--whole-archive ${old_libs} \

-Wl,--no-whole-archive ${dependency_libs}

我們的程序庫的名稱是${module},動態鏈接庫的前綴為cyg,輸入庫的前綴為lib。Cygwin的動態鏈接庫使用cyg作為前綴,以作為本地Windows的MinGW動態鏈接庫的區別。${old_libs}是我們全部的目標文件,被捆綁成靜態庫或者一個目標文件;${dependency_libs}是需要鏈接的靜態庫,如“-lpng -lz -L/usr/local/special -lmyspeciallib”。

鏈接動態鏈接庫

假設您已有一個動態鏈接庫,并需要建立一個與Cygwin兼容的輸入庫,如果您有源代碼的話,可以參考本文的構建動態鏈接庫部分。如果您沒有源代碼或者沒有可用的輸入庫,那么您可以在bash中創建一個.def 文件,命令如下所示:

echo EXPORTS > foo.def

nm foo.dll | grep ' T _' | sed 's/.* T _//' >> foo.def

只有動態鏈接庫沒有去除有關符號信息的情況下上述命令才能正常工作,否則,就會出現“No symbols in foo.dll”錯誤信息。一旦得到了.def文件,就可以從中創建一個輸入庫,命令如下所示:

dlltool --def foo.def --dllname foo.dll --output-lib foo.a

#p#

五、定義Windows資源

Windres能夠讀取Windows資源文件(*.rc),并把它轉換成res格式文件或者coff格式文件。輸入文件的語法和語義的同其他任何資源編譯器沒有任何區別,所以詳情可參閱任何有關描述Windows資源格式的文獻。此外,windres程序本身在Binutils手冊中也有詳盡的說明。下面是一個使用windres的例子:

myapp.exe : myapp.o myapp.res
	gcc -mwindows myapp.o myapp.res -o $@

myapp.res : myapp.rc resource.h
	windres $< -O coff -o $@

六、結束語

Cygwin是許多自由軟件的集合,用于各種版本的Microsoft Windows上運行UNIX類系統。Cygwin的主要目的是通過重新編譯,將POSIX系統上的軟件移植到Windows上。Cygwin包括了一套庫,該庫在Win32系統下實現了POSIX系統調用的API;還有一套GNU開發工具集(比如GCC、GDB),這樣可以進行簡單的軟件開發;還有一些UNIX系統下的常見程序。而本文則為讀者介紹了如何在Cygwin下進行程序開發。我們首先介紹使用GCC開發控制臺模式的應用程序和GUI模式的應用程序,然后闡述在Cygwin下如何調試程序,隨后詳細講解在Cygwin下動態鏈接庫的構建和使用,最后介紹資源文件的有關知識。

【編輯推薦】

  1. Linux編程起步 GCC基本用法
  2. 詳解GCC的下載和安裝
  3. 從VC++到GCC移植:談兩者語法差異
責任編輯:楊鵬飛 來源: 51CTO
相關推薦

2020-03-07 18:51:11

EclipseFedoraPHP

2022-02-09 15:29:35

Java組件編程語言

2012-11-23 14:33:06

IBMdW

2015-07-23 14:09:15

CygwinWindowsLinux

2023-11-30 15:56:54

大型語言模型人工智能

2010-05-04 08:52:13

Unix系統

2010-02-24 15:19:38

ibmdwLinux

2021-02-16 23:17:47

Windows 10Windows微軟

2010-12-09 09:12:28

2010-11-03 15:27:39

OpenLDAPWindowsUnix系統

2010-04-30 18:38:45

Unix系統

2009-04-14 18:50:55

Nehalem惠普intel

2020-02-18 09:45:44

云計算云平臺IT

2009-07-16 14:22:02

Windows Emb

2023-06-20 08:00:00

2025-04-23 15:49:37

2010-04-29 17:51:40

Unix工具

2011-07-19 14:11:07

Windows iPhone SDK

2010-07-02 12:58:39

Meego開發

2010-04-16 16:29:57

Unix操作系統
點贊
收藏

51CTO技術棧公眾號

亚洲国产精品va在看黑人| 国产精品高潮呻吟| 青青草成人在线| 欧美亚洲色综久久精品国产| 偷拍自拍亚洲| 亚洲国产裸拍裸体视频在线观看乱了| 蜜桃传媒视频第一区入口在线看| 国产亚洲欧美日韩高清| 欧美不卡视频| 亚洲欧美制服另类日韩| 在线视频一二区| 多野结衣av一区| 欧美国产在线观看| 国产精选一区二区| 一本色道久久综合熟妇| 亚洲免费激情| 久久夜色精品国产| 亚洲日本精品视频| 国产精品jk白丝蜜臀av小说 | 欧美黑吊大战白妞| 国产精品入口久久| 亚洲成人久久网| 久久久久久久久久一区二区| 678在线观看视频| 中文字幕一区二区三区精华液| 国产午夜精品在线| 国产毛片一区二区三区va在线| 国产亚洲福利| 久久久久久亚洲| 中文字幕无码日韩专区免费| 免费成人av| 亚洲国产成人av在线| 亚洲精品中文字幕乱码无线| 亚洲日本网址| 精品动漫一区二区| 日本天堂免费a| 麻豆传媒在线观看| 欧美国产亚洲另类动漫| 精品日本一区二区| 蜜桃av噜噜一区二区三区麻豆| 美腿丝袜一区二区三区| 欧美专区日韩视频| 日韩精品一区二区三| 欧美精品一区二区三区久久久竹菊| 国产午夜精品全部视频在线播放| 日韩aaaaa| 亚洲一级大片| 日韩精品在线网站| 亚洲成人福利视频| 亚洲2区在线| 日韩午夜精品电影| 欧美体内she精高潮| 中文字幕日本一区| 91精品国模一区二区三区| 中文字幕中文在线| www.成人| 欧美mv日韩mv| 香蕉视频污视频| 激情av综合| 亚洲国产精品va在线看黑人 | 国产欧美自拍一区| 精品国产伦一区二区三区观看体验 | 日韩电影免费一区| 国产精品免费网站| 国产精品伦一区二区三区| 激情文学综合插| 5g国产欧美日韩视频| 性欧美videos另类hd| 国产91精品免费| 国产日韩欧美一区二区| 天堂91在线| 久久中文娱乐网| 日韩三级在线播放| 国产在线观看免费麻豆| 亚洲影视在线观看| 免费无码不卡视频在线观看| 中文字幕在线免费观看视频| 色综合久久中文综合久久牛| 亚洲无吗一区二区三区| 国产精久久一区二区| 日韩精品在线看片z| avtt香蕉久久| 日韩成人精品一区二区| 欧美成人激情视频免费观看| 精品少妇theporn| 免费看亚洲片| 国产在线观看精品| 欧美少妇bbw| 日本一区二区三级电影在线观看| 五月天综合婷婷| 成年男女免费视频网站不卡| 精品女同一区二区三区在线播放| 成人在线观看a| 成人激情久久| 亚洲精品一区二区在线| 日韩精品一区二区亚洲av性色| 国模一区二区三区| 国产成一区二区| 超碰在线观看av| 国产偷国产偷亚洲高清人白洁| 最新av在线免费观看| 川上优av中文字幕一区二区| 欧美日韩一区 二区 三区 久久精品| 手机在线观看日韩av| 外国成人在线视频| 麻豆国产va免费精品高清在线| 日干夜干天天干| 久久成人综合网| 久久久com| 在线观看男女av免费网址| 一本色道久久加勒比精品| 操人视频免费看| 日韩av免费大片| 日本亚洲欧美成人| 蜜桃91麻豆精品一二三区| 国产精品久久久久天堂| 97国产在线播放| 日本在线成人| www.欧美精品| 中文字幕+乱码+中文| 99久久精品免费看| 2021国产视频| 日韩午夜电影免费看| 亚洲女在线观看| 亚洲黄色一区二区| 国产精品一二一区| 在线观看日韩羞羞视频| 亚洲成人激情社区| 亚洲精品中文字幕有码专区| 久久综合亚洲色hezyo国产| 精品在线播放免费| 亚洲丰满在线| 成人做爰免费视频免费看| 日韩精品电影网| 久久精品无码人妻| 国产69精品久久久久777| 一区二区精品国产| 国产亚洲欧美日韩精品一区二区三区| 亚洲欧美国产日韩中文字幕| 日本一二三区视频| 成人激情小说网站| 免费特级黄色片| www.久久东京| 久久久久中文字幕| 免费观看的毛片| 亚洲一区二区三区视频在线播放| 手机av在线网站| 91精品啪在线观看国产81旧版| 国产精品久久久久久久9999 | 精品久久久av| 国产免费不卡视频| 亚洲欧美日韩久久| 三上悠亚 电影| 91久久中文| 狠狠色狠狠色综合人人| 欧美伦理91| 亚洲欧美日韩天堂一区二区| 亚洲欧美综合自拍| 久久精品夜色噜噜亚洲aⅴ| 成年人小视频网站| 日韩欧美高清| 亚洲最大的av网站| 污污的视频在线观看| 精品少妇一区二区三区免费观看| 久久精品国产亚洲AV无码麻豆 | 欧美日韩精品欧美日韩精品| 成年人在线免费看片| 久久国产视频网| 男人j进女人j| 日本成人中文| 国产精品久久久久久久午夜| 在线免费观看黄色| 欧美成人免费网站| yjizz国产| 国产精品私人自拍| 就去色蜜桃综合| 国产无遮挡裸体视频在线观看| 日韩av在线影院| 波多野结衣一区二区在线| 国产精品萝li| 99riav国产精品视频| 国产九九精品| 在线视频欧美一区| 国产精品毛片视频| 国产ts人妖一区二区三区| 色欧美激情视频在线| 日韩欧美综合在线| 亚洲视频 欧美视频| 综合在线观看色| 日本在线不卡一区二区| 日韩精品五月天| 黄色一级片国产| 红桃成人av在线播放| 亚洲最大成人网色| 日韩精品99| 欧美xxxx综合视频| 蜜桃视频在线播放| 欧美一二三区在线| 国产免费a视频| 一区二区三区在线影院| 国产精品高清无码在线观看| 国产自产高清不卡| 欧美三级一级片| 欧美不卡高清| 亚洲欧洲国产日韩精品| 色老板在线视频一区二区| 91精品久久久久久久久久另类| av中文字幕电影在线看| 久久精品在线视频| 国家队第一季免费高清在线观看| 日韩欧美高清dvd碟片| 中文字幕在线一| 狠狠色噜噜狠狠狠狠97| 免看一级a毛片一片成人不卡| 久久精品男人的天堂| 四虎精品一区二区| 国产美女精品一区二区三区| 色七七在线观看| 国产亚洲成人一区| 日韩一级性生活片| 欧美激情第二页| 亚洲欧美日韩另类精品一区二区三区| 琪琪久久久久日韩精品| 99久久精品无码一区二区毛片| 电影亚洲一区| 奇米四色中文综合久久| 黑森林国产精品av| 欧美精品久久久久a| www视频在线看| 日韩视频在线免费观看| 大地资源中文在线观看免费版| 亚洲国产天堂久久综合| 欧美一区二区三区激情| 日韩欧美在线1卡| 国产免费无遮挡| 欧美精品色综合| 97精品久久人人爽人人爽| 色狠狠色噜噜噜综合网| 久草视频一区二区| 色婷婷亚洲婷婷| 蜜臀精品一区二区三区| 色婷婷国产精品综合在线观看| 日韩av在线电影| 婷婷六月综合亚洲| 国产成人精品片| 狠狠躁夜夜躁人人躁婷婷91 | 91黄色免费看| 黄色一级视频免费看| 色综合视频一区二区三区高清| 国产香蕉视频在线| 精品电影在线观看| 国产成人无码一区二区在线播放| 欧美日韩国产中字| 中文字幕第四页| 在线欧美日韩精品| 亚洲天堂网在线视频| 88在线观看91蜜桃国自产| 国产农村妇女毛片精品久久| 91麻豆精品久久久久蜜臀| 国产色在线视频| 精品国精品自拍自在线| 欧美自拍偷拍一区二区| 精品亚洲夜色av98在线观看| 青青视频在线观| 在线观看视频亚洲| 老司机午夜在线| 欧美黑人xxx| 蜜桃视频在线观看播放| 国产第一区电影| 99re8精品视频在线观看| 99久久伊人精品影院| 久久精品66| 日韩电影天堂视频一区二区| 青青草国产免费一区二区下载| 中文字幕在线亚洲精品| 国产精品v一区二区三区 | 麻豆精品新av中文字幕| 婷婷激情5月天| 成人性生交大片免费看中文| 色天使在线视频| 国产精品久久久久久久岛一牛影视| 美国黄色小视频| 欧美体内谢she精2性欧美| 一区二区三区精| 亚洲精品理论电影| a视频网址在线观看| 欧美日韩第一页| 电影一区二区三| 99超碰麻豆| 神马久久一区二区三区| 成人午夜免费剧场| 久久最新视频| av影片在线播放| 国产日韩三级在线| 福利所第一导航| 色婷婷久久久久swag精品| 91theporn国产在线观看| 精品国产91洋老外米糕| 2021av在线| 欧美一区二三区| 少妇精品在线| 亚洲精品tv久久久久久久久| 黄色精品免费| 777一区二区| 久久精品亚洲精品国产欧美| 欧美精品99久久久| 欧美日韩视频在线第一区| 亚洲 欧美 激情 另类| 久久色在线播放| 欧美123区| 久久久久无码国产精品一区| 一精品久久久| 中文字幕亚洲乱码| 久久久久国产一区二区三区四区 | 色大18成网站www在线观看| 97久久久免费福利网址| 高清国产一区二区三区四区五区| 久久久久久高清| 精久久久久久| 超级砰砰砰97免费观看最新一期| 国产日韩综合av| 九九热精品视频在线| 亚洲成人精品在线| 免费在线国产视频| 91在线观看免费高清完整版在线观看| 国产精品入口久久| 久久精品一区二| 久久免费美女视频| 欧美日韩乱国产| 亚洲精品国产品国语在线| 激情网站在线| 成人做爰66片免费看网站| 亚洲综合色网| 久久久久久久久久毛片| 国产精品欧美极品| 中文字幕乱码在线观看| 一区三区二区视频| 忘忧草在线www成人影院| 日韩精品久久久| 日韩精品免费视频人成| 国产又粗又猛又爽视频| 色婷婷av一区二区三区gif| 人操人视频在线观看| 538国产精品一区二区在线| 国产一区二区三区不卡av| 久久成人福利视频| 99久久婷婷国产精品综合| 久一视频在线观看| 亚洲成人亚洲激情| 高清毛片在线观看| 欧美高清性xxxxhd| 久久三级福利| 国产aaaaaaaaa| 欧美精品一级二级三级| 91高清在线观看视频| 99久久无色码| 在线综合视频| 在线小视频你懂的| 欧美日韩在线不卡| 成人无遮挡免费网站视频在线观看| 成人天堂噜噜噜| 欧美fxxxxxx另类| 色综合久久五月| 在线看国产日韩| 毛片在线播放a| 国产精品日韩一区二区免费视频| 99精品免费网| 日本一级免费视频| 在线播放国产精品二区一二区四区| av网站网址在线观看| 国产日韩久久| 日韩av中文在线观看| 91ts人妖另类精品系列| 精品久久久久久亚洲综合网 | 538国产视频| 欧美最新大片在线看| 黄网站在线免费看| 国产亚洲福利社区| 蜜臂av日日欢夜夜爽一区| 激情四射综合网| 亚洲人成网站777色婷婷| 99er精品视频| 女人和拘做爰正片视频| 国产精品久久久久久久久久免费看| 国产极品999| 国产成人精品免费久久久久| 一个色综合网| 成年人免费观看视频网站| 91精品国产色综合久久不卡蜜臀| 136福利第一导航国产在线| 日韩欧美手机在线| 成人午夜在线视频| 中文字幕乱码视频| 欧美一区二区三区免费观看| 99精品网站| 丰满少妇一区二区三区| 91精品国产欧美一区二区| 手机av在线| 无码日本精品xxxxxxxxx| 国产视频一区在线观看|