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

我最喜歡的 Go 構建選項

開發 后端
這些方便的 Go 構建選項可以幫助你更好地理解 Go 的編譯過程。

學習一門新的編程語言最令人欣慰的部分之一,就是最終運行了一個可執行文件,并獲得預期的輸出。當我開始學習 Go 這門編程語言時,我先是閱讀一些示例程序來熟悉語法,然后是嘗試寫一些小的測試程序。隨著時間的推移,這種方法幫助我熟悉了編譯和構建程序的過程。

Go 的構建選項提供了更好地控制構建過程的方法。它們還可以提供額外的信息,幫助把這個過程分成更小的部分。在這篇文章中,我將演示我所使用的一些選項。注意:我使用的“構建build”和“編譯compile”這兩個詞是同一個意思。

開始使用 Go

我使用的 Go 版本是 1.16.7。但是,這里給出的命令應該也能在最新的版本上運行。如果你沒有安裝 Go,你可以從 ??Go 官網?? 上下載它,并按照說明進行安裝。你可以通過打開一個命令提示符,并鍵入下面的命令來驗證你所安裝的版本:

$ go version

你應該會得到類似下面這樣的輸出,具體取決于你安裝的版本:

go version go1.16.7 linux/amd64

基本的 Go 程序的編譯和執行方法

我將從一個在屏幕上簡單打印 “Hello World” 的 Go 程序示例開始,就像下面這樣:

$ cat hello.go
package main

import "fmt"

func main() {
fmt.Println("Hello World")
}

在討論更高級的選項之前,我將解釋如何編譯這個 Go 示例程序。我使用了 ??build?? 命令,后面跟著 Go 程序的源文件名,本例中是 ??hello.go??,就像下面這樣:

$ go build hello.go

如果一切工作正常,你應該看到在你的當前目錄下創建了一個名為 ??hello?? 的可執行文件。你可以通過使用 ??file?? 命令驗證它是 ELF 二進制可執行格式(在 Linux 平臺上)。你也可以直接執行它,你會看到它輸出 “Hello World”。

$ ls
hello  hello.go

$ file ./hello
./hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

$ ./hello
Hello World

Go 提供了一個方便的 ??run?? 命令,以便你只是想看看程序是否能正常工作,并獲得預期的輸出,而不想生成一個最終的二進制文件。請記住,即使你在當前目錄中沒有看到可執行文件,Go 仍然會在某個地方編譯并生成可執行文件并運行它,然后把它從系統中刪除。我將在本文后面的章節中解釋。

$ go run hello.go
Hello World

$ ls
hello.go

更多細節

上面的命令就像一陣風一樣,一下子就運行完了我的程序。然而,如果你想知道 Go 在編譯這些程序的過程中做了什么,Go 提供了一個 ??-x?? 選項,它可以打印出 Go 為產生這個可執行文件所做的一切。

簡單看一下你就會發現,Go 在 ??/tmp?? 內創建了一個臨時工作目錄,并生成了可執行文件,然后把它移到了 Go 源程序所在的當前目錄。

$ go build -x hello.go

WORK=/tmp/go-build1944767317
mkdir -p $WORK/b001/

<< snip >>

mkdir -p $WORK/b001/exe/
cd .
/usr/lib/golang/pkg/tool/linux_amd64/link -o $WORK \
/b001/exe/a.out -importcfg $WORK/b001 \
/importcfg.link -buildmode=exe -buildid=K26hEYzgDkqJjx2Hf-wz/\
nDueg0kBjIygx25rYwbK/W-eJaGIOdPEWgwC6o546 \
/K26hEYzgDkqJjx2Hf-wz -extld=gcc /root/.cache/go-build /cc \
/cc72cb2f4fbb61229885fc434995964a7a4d6e10692a23cc0ada6707c5d3435b-d
/usr/lib/golang/pkg/tool/linux_amd64/buildid -w $WORK \
/b001/exe/a.out # internal
mv $WORK/b001/exe/a.out hello
rm -r $WORK/b001/

這有助于解決在程序運行后卻在當前目錄下沒有生成可執行文件的謎團。使用 ??-x?? 顯示可執行文件確實在 ??/tmp?? 工作目錄下創建并被執行了。然而,與 ??build?? 命令不同的是,可執行文件并沒有移動到當前目錄,這使得看起來沒有可執行文件被創建。

$ go run -x hello.go


mkdir -p $WORK/b001/exe/
cd .
/usr/lib/golang/pkg/tool/linux_amd64/link -o $WORK/b001 \
/exe/hello -importcfg $WORK/b001/importcfg.link -s -w -buildmode=exe -buildid=hK3wnAP20DapUDeuvAAS/E_TzkbzwXz6tM5dEC8Mx \
/7HYBzuaDGVdaZwSMEWAa/hK3wnAP20DapUDeuvAAS -extld=gcc \
/root/.cache/go-build/75/ \
7531fcf5e48444eed677bfc5cda1276a52b73c62ebac3aa99da3c4094fa57dc3-d
$WORK/b001/exe/hello
Hello World

模仿編譯而不產生可執行文件

假設你不想編譯程序并產生一個實際的二進制文件,但你確實想看到這個過程中的所有步驟。你可以通過使用 ??-n?? 這個構建選項來做到這一點,該選項會打印出通常的執行步驟,而不會實際創建二進制文件。

$ go build -n hello.go

保存臨時目錄

很多工作都發生在 ??/tmp?? 工作目錄中,一旦可執行文件被創建和運行,它就會被刪除。但是如果你想看看哪些文件是在編譯過程中創建的呢?Go 提供了一個 ??-work?? 選項,它可以在編譯程序時使用。??-work?? 選項除了運行程序外,還打印了工作目錄的路徑,但它并不會在這之后刪除工作目錄,所以你可以切換到該目錄,檢查在編譯過程中創建的所有文件。

$ go run -work hello.go
WORK=/tmp/go-build3209320645
Hello World

$ find /tmp/go-build3209320645
/tmp/go-build3209320645
/tmp/go-build3209320645/b001
/tmp/go-build3209320645/b001/importcfg.link
/tmp/go-build3209320645/b001/exe
/tmp/go-build3209320645/b001/exe/hello

$ /tmp/go-build3209320645/b001/exe/hello
Hello World

其他編譯選項

如果說,你想手動編譯程序,而不是使用 Go 的 ??build?? 和 ??run?? 這兩個方便的命令,最后得到一個可以直接由你的操作系統(這里指 Linux)運行的可執行文件。那么,你該怎么做呢?這個過程可以分為兩部分:編譯和鏈接。你可以使用 ??tool?? 選項來看看它是如何工作的。

首先,使用 ??tool compile?? 命令產生結果的 ??ar?? 歸檔文件,它包含了 ??.o?? 中間文件。接下來,對這個 ??hello.o?? 文件執行 ??tool link?? 命令,產生最終的可執行文件,然后你就可以運行它了。

$ go tool compile hello.go

$ file hello.o
hello.o: current ar archive

$ ar t hello.o
__.PKGDEF
_go_.o

$ go tool link -o hello hello.o

$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped

$ ./hello
Hello World

如果你想進一步查看基于 ??hello.o?? 文件產生可執行文件的鏈接過程,你可以使用 ??-v?? 選項,它會搜索每個 Go 可執行文件中包含的 ??runtime.a?? 文件。

$ go tool link -v -o hello hello.o
HEADER = -H5 -T0x401000 -R0x1000
searching for runtime.a in /usr/lib/golang/pkg/linux_amd64/runtime.a
82052 symbols, 18774 reachable
1 package symbols, 1106 hashed symbols, 77185 non-package symbols, 3760 external symbols
81968 liveness data

交叉編譯選項

現在我已經解釋了 Go 程序的編譯過程,接下來,我將演示 Go 如何通過在實際的 ??build?? 命令之前提供 ??GOOS?? 和 ??GOARCH?? 這兩個環境變量,來允許你構建針對不同硬件架構和操作系統的可執行文件。

這有什么用呢?舉個例子,你會發現為 ARM(arch64)架構制作的可執行文件不能在英特爾(x86_64)架構上運行,而且會產生一個 Exec 格式錯誤。

下面的這些選項使得生成跨平臺的二進制文件變得小菜一碟:

$ GOOS=linux GOARCH=arm64 go build hello.go

$ file ./hello
./hello: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), statically linked, not stripped

$ ./hello
bash: ./hello: cannot execute binary file: Exec format error

$ uname -m
x86_64

你可以閱讀我之前的博文,以更多了解我在 ??使用 Go 進行交叉編譯?? 方面的經驗。

查看底層匯編指令

源代碼并不會直接轉換為可執行文件,盡管它生成了一種中間匯編格式,然后最終被組裝為可執行文件。在 Go 中,這被映射為一種中間匯編格式,而不是底層硬件匯編指令。

要查看這個中間匯編格式,請在使用 ??build?? 命令時,提供 ??-gcflags?? 選項,后面跟著 ??-S??。這個命令將會顯示使用到的匯編指令:

$ go build -gcflags="-S" hello.go
# command-line-arguments
"".main STEXT size=138 args=0x0 locals=0x58 funcid=0x0
0x0000 00000 (/test/hello.go:5) TEXT "".main(SB), ABIInternal, $88-0
0x0000 00000 (/test/hello.go:5) MOVQ (TLS), CX
0x0009 00009 (/test/hello.go:5) CMPQ SP, 16(CX)
0x000d 00013 (/test/hello.go:5) PCDATA $0, $-2
0x000d 00013 (/test/hello.go:5) JLS 128

<< snip >>

你也可以使用 ??objdump -s?? 選項,來查看已經編譯好的可執行程序的匯編指令,就像下面這樣:

$ ls
hello hello.go

$ go tool objdump -s main.main hello
TEXT main.main(SB) /test/hello.go
hello.go:5 0x4975a0 64488b0c25f8ffffff MOVQ FS:0xfffffff8, CX
hello.go:5 0x4975a9 483b6110 CMPQ 0x10(CX), SP
hello.go:5 0x4975ad 7671 JBE 0x497620
hello.go:5 0x4975af 4883ec58 SUBQ $0x58, SP
hello.go:6 0x4975d8 4889442448 MOVQ AX, 0x48(SP)

<< snip >>

分離二進制文件以減少其大小

Go 的二進制文件通常比較大。例如, 一個簡單的 “Hello World” 程序將會產生一個 1.9M 大小的二進制文件。

$ go build hello.go
$
$ du -sh hello
1.9M    hello
$
$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, not stripped
$

為了減少生成的二進制文件的大小,你可以分離執行過程中不需要的信息。使用 ??-ldflags?? 和 ??-s -w?? 選項可以使生成的二進制文件略微變小為 1.3M。

$ go build -ldflags="-s -w" hello.go
$
$ du -sh hello
1.3M    hello
$
$ file hello
hello: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped
$

總結

我希望這篇文章向你介紹了一些方便的 Go 編譯選項,同時幫助了你更好地理解 Go 編譯過程。關于構建過程的其他信息和其他有趣的選項,請參考 Go 命令幫助:

$ go help build

題圖由 ??Ashraf Chemban??? 在 ???Pixabay?? 上發布。 

責任編輯:龐桂玉 來源: Linux中國
相關推薦

2020-08-06 15:14:07

D語言編程語言

2024-11-05 09:42:59

開發軟件命令行

2012-04-28 09:14:50

編程編程語錄

2021-10-27 14:55:57

Mark TextMarkdown編輯器

2021-01-14 23:14:40

開源Linux生產力應用

2022-01-03 07:46:36

Linux應用程序操作系統

2012-03-30 13:56:17

編程開發

2013-10-08 09:34:57

編程漫畫編程漫畫

2016-03-02 15:13:54

面試開發者問題

2024-03-13 13:39:21

2012-02-02 16:42:24

Android用戶

2020-02-10 10:05:12

Linux發行版Ubuntu

2020-08-29 18:51:14

效能工具效率生產力

2013-10-17 11:15:19

2021-03-09 11:09:10

LinuxWindows應用程序

2024-06-28 13:57:34

2018-01-31 14:20:36

Linux分區管理fdisk

2018-11-21 15:09:53

勒索軟件遠程桌面協議攻擊

2022-01-05 08:56:20

Vue修飾符面試

2017-01-11 09:16:49

SQLPython編程語言
點贊
收藏

51CTO技術棧公眾號

91福利视频在线观看| 欧美在线影院一区二区| 国产精品乱子乱xxxx| 日本午夜小视频| 国产精品嫩草影院在线看| 91福利国产成人精品照片| 一本色道久久综合亚洲精品婷婷| 精品人妻一区二区三区换脸明星| 最新国产拍偷乱拍精品 | 国产特级aaaaaa大片| 激情亚洲网站| 中文字幕日韩有码| 亚洲v在线观看| 小明成人免费视频一区| 亚洲精品视频在线观看网站| 鲁鲁狠狠狠7777一区二区| 亚洲网站免费观看| 国产欧美二区| 欧美猛交免费看| 亚洲精品国产精品国自产网站| 欧美区一区二区| 91黄视频在线观看| 日韩视频在线视频| 日本在线视频网| 92精品国产成人观看免费 | 成人一区二区免费视频| 在线观看黄av| 久久久五月婷婷| 国产精品二区在线| 国产一区二区三区中文字幕 | www欧美激情| 国模私拍一区二区国模曼安| 国产女主播一区| 精品综合久久| 亚洲男人第一天堂| 狠狠色狠狠色综合日日91app| 日韩av免费在线播放| 久久久久久免费观看| 97偷自拍亚洲综合二区| 伊人久久久久久久久久| 成人h动漫精品一区| 果冻天美麻豆一区二区国产| 日韩一区二区电影网| 午夜视频在线网站| 高清av一区二区三区| 欧美性猛交视频| 日韩在线一级片| a国产在线视频| 亚洲午夜电影在线| 男人添女荫道口女人有什么感觉| 好吊日视频在线观看| 国产欧美一区二区在线观看| 日韩aⅴ视频一区二区三区| 成人黄色免费视频| 国产91高潮流白浆在线麻豆 | 色婷婷成人在线| 成人福利片在线| 在线日韩av片| 色播五月综合网| 欧美美女被草| 欧美一二三四在线| 亚洲欧洲国产视频| 岛国精品一区| 日韩激情av在线免费观看| 中文文字幕文字幕高清| 色爱av综合网| 亚洲人成网站999久久久综合| 白丝女仆被免费网站| 亚洲婷婷影院| 亚洲欧美综合v| 久久久久久久毛片| 久久综合成人| 欧美成人激情图片网| 久久高清无码视频| 亚洲精品韩国| 国产精品国产三级国产专播精品人 | 极品美乳网红视频免费在线观看| 久久人人超碰精品| 亚洲欧洲精品一区| 午夜在线激情影院| 午夜a成v人精品| 免费日韩中文字幕| 国产精品天堂蜜av在线播放| 9191久久久久久久久久久| 国产精品久久久久久久99| 最新国产一区二区| 精品视频久久久久久久| 免费在线观看a视频| 久久久久亚洲| 97在线视频精品| 中文字幕一区二区三区四区视频 | 99久热re在线精品996热视频 | 日韩中文字幕在线观看| 韩国一级黄色录像| 亚洲高清久久| 国产精品欧美日韩一区二区| 99精品人妻无码专区在线视频区| av不卡一区二区三区| 亚洲精品不卡| 懂色av一区| 欧美日精品一区视频| 无码人妻一区二区三区精品视频| 神马影视一区二区| 久久视频在线视频| 亚洲欧美日韩激情| 国产精品69久久久久水密桃| 久久国产精品 国产精品| 91sp网站在线观看入口| 五月天一区二区| 五月天激情播播| 久操成人av| 色综合天天狠天天透天天伊人| 波多野结衣黄色| 成人激情av网| 色撸撸在线观看| 性欧美18一19sex性欧美| 日韩免费成人网| 色撸撸在线视频| 久久99伊人| 国产不卡一区二区三区在线观看| 3p视频在线观看| 欧美性感美女h网站在线观看免费| 欧美激情第四页| 日韩黄色大片网站| 日韩暖暖在线视频| 无码国产色欲xxxx视频| 一区二区三区欧美视频| 性生活免费在线观看| 在线视频播放大全| 天堂久久午夜av| 精品国产伦一区二区三区观看方式 | 99久久免费精品国产72精品九九| 中文字幕一精品亚洲无线一区 | 黄色激情在线播放| 91精品国产欧美一区二区成人| 人人妻人人藻人人爽欧美一区| 欧美日一区二区在线观看| 国产日韩中文在线| av色图一区| 在线免费观看日韩欧美| a视频免费观看| 91久久亚洲| 国产伦一区二区三区色一情| 成人免费网站在线观看视频| 69精品人人人人| 老司机深夜福利网站| 青青草国产精品亚洲专区无| 日韩av电影在线观看| 男人最爱成人网| 亚洲欧美国产精品| 福利网址在线观看| 国产午夜精品福利| 亚洲性生活网站| heyzo久久| 国产日韩欧美在线视频观看| 在线看av的网址| 欧美精品三级日韩久久| 日韩免费av一区| 韩国午夜理伦三级不卡影院| 佐佐木明希av| 97久久精品| 91精品国产99| 黄网站在线观看| 国产精品一区免费在线观看| 7777精品伊人久久久大香线蕉的| 娇妻被老王脔到高潮失禁视频| 日本中文字幕一区二区有限公司| 三区精品视频观看| 欧美成人黄色| 欧美精品手机在线| 少妇一区二区三区四区| 黑丝美女久久久| 最新中文字幕av| 黑人巨大精品欧美黑白配亚洲| 只有这里有精品| 高潮久久久久久久久久久久久久| 欧美一级电影在线| yiren22综合网成人| 欧美二区乱c少妇| 青春草免费视频| 99久久精品免费| youjizzxxxx18| 亚洲九九在线| 久久艳妇乳肉豪妇荡乳av| 成人开心激情| 欧美老肥婆性猛交视频| 香港一级纯黄大片| 欧美三级在线看| 精品少妇theporn| 久久视频一区二区| 亚洲精品在线网址| 亚洲精品在线二区| 亚洲欧美日韩国产yyy| 日本精品在线播放| 欧美在线激情网| 精品国产99久久久久久| 亚洲第一色在线| 伊人网站在线观看| 天天色 色综合| 国产第一页精品| 不卡区在线中文字幕| 日本xxxx黄色| 99精品久久久| 一级一片免费播放| 日韩精选在线| 91精品久久久久久蜜桃| 日韩欧美一区二区三区在线观看| 美女撒尿一区二区三区| 国产中文字幕在线看| 91精品国产色综合久久ai换脸 | 欧美日韩视频不卡| 精品久久免费视频| 中文字幕视频一区| 91精品人妻一区二区| 国产91精品精华液一区二区三区| 牛夜精品久久久久久久| 亚洲国产精品第一区二区三区| 亚洲一区二区精品在线| 五月国产精品| 精品一区二区三区免费播放| 欧美另类视频在线| 日韩一级淫片| 国产精品私拍pans大尺度在线 | 青青草视频网站| 激情欧美一区二区三区在线观看| 国产日产欧美视频| 黄色亚洲免费| 无码人妻精品一区二区三区99v| 国产在线观看91一区二区三区| 国产欧美在线一区二区| 国模大尺度视频一区二区| 国产精品私拍pans大尺度在线| 欧美大片免费观看网址| 午夜精品一区二区三区视频免费看| 99自拍视频在线观看| 中文字幕日韩av综合精品| 国产天堂在线| 亚洲人成在线播放| 四虎精品成人影院观看地址| 亚洲国产精品va在线看黑人 | 国产精品第5页| 午夜av区久久| 久久9999久久免费精品国产| 一区二区三区中文字幕电影 | 日韩午夜高潮| 无码 制服 丝袜 国产 另类| 亚洲欧美一级二级三级| 一本久道久久综合狠狠爱亚洲精品| 欧美一区二区性| 日韩影院一区| 久久精品国产亚洲夜色av网站 | 成人自拍视频网站| 亚洲日本视频在线| 99在线观看| 国产精品午夜av| 国产综合第一页| 亚洲精品动态| 四虎永久国产精品| 成人在线丰满少妇av| 伊人久久大香线蕉av一区| 99精品电影| 永久免费网站视频在线观看| 国产精品大片| 国模无码视频一区二区三区| 免费看亚洲片| 亚洲第一中文av| 国产一二精品视频| 年下总裁被打光屁股sp| 2022国产精品视频| 日本污视频网站| 韩国日本一区| 精品久久久久香蕉网| 人人妻人人澡人人爽久久av| 日韩激情在线视频| 国产黄色在线| 久久久精品视频在线观看| 久久一卡二卡| 国产成人精品久久久| 亚洲国产伊人| 成人av资源| 欧美精品第一区| 国产免费一区二区三区四在线播放 | 国产精品自拍一区| 91av在线免费| 国产精品乱人伦中文| 免费网站观看www在线观| 欧美日韩一区二区三区| 亚洲怡红院av| 亚洲国产天堂久久国产91| 成人av一区| 欧美第一淫aaasss性| 成人av免费电影网站| 91精品久久久久久久久久| 成午夜精品一区二区三区软件| 欧美中文娱乐网| 国产精品多人| 看欧美ab黄色大片视频免费| 国产成人亚洲精品狼色在线| 精品成人av一区二区三区| 亚洲色图在线播放| 久久久成人免费视频| 欧美一区二区三区在线看| 欧美在线一卡| 九九热精品视频在线播放| 浪潮色综合久久天堂| dy888夜精品国产专区| 国产成人精品999在线观看| 神马午夜伦理影院| 奇米777欧美一区二区| 在线观看亚洲免费视频| 国产精品美女久久久久久久久| 国产精品第108页| 777奇米成人网| 国产精品影院在线| 97超级碰在线看视频免费在线看| 亚洲三级在线| 日韩欧美亚洲精品| 国产亚洲激情| 中文字幕三级电影| 亚洲欧美日韩一区| 在线播放精品视频| 国产一区二区黑人欧美xxxx| av在线播放资源| www久久99| 亚洲成人一区| 日韩欧美国产片| 国产欧美综合在线| 日本黄色一级视频| 日韩精品在线观| 手机在线观看av网站| 国产精品v欧美精品v日韩| 欧美激情无毛| 欧美体内she精高潮| 最好看的中文字幕久久| 一级片在线观看视频| 亚洲午夜女主播在线直播| 中文字幕在线免费观看视频| 精品国产网站在线观看| 少妇高潮一69aⅹ| 久久精品一区二区三区四区| 国产成人在线免费视频| 亚洲第一区中文99精品| 1234区中文字幕在线观看| 国产高清一区二区三区| 欧美日韩在线大尺度| 黄页网站在线看| 亚洲一区二区三区影院| 亚洲乱码精品久久久久..| 色综合久久悠悠| aaa国产精品视频| 国产毛片视频网站| 99久久婷婷国产| 亚洲成人av影片| 国产亚洲欧美视频| 日本.亚洲电影| 亚洲欧洲精品一区二区三区波多野1战4| 日本中文字幕一区| 国产又黄又粗又猛又爽的| 欧美高清性hdvideosex| 成人在线视频亚洲| http;//www.99re视频| 韩国亚洲精品| 在线观看av中文字幕| 日韩欧美在线国产| 福利在线播放| 91免费电影网站| 亚洲网站在线| 国产aⅴ激情无码久久久无码| 在线观看日产精品| 精精国产xxxx视频在线| 91手机在线视频| 国产精品亚洲产品| 免费一级黄色录像| 欧美一区二区成人6969| ****av在线网毛片| 欧美日本韩国一区二区三区| 麻豆精品新av中文字幕| 欧美片一区二区| 亚洲欧美激情一区| 久久免费资源| 97免费视频观看| 久久精品人人爽人人爽| 一起草av在线| 97精品在线视频| 日韩精品免费一区二区三区| 91porn在线| 在线免费不卡电影| 影音先锋在线播放| 欧美精品在线一区| 国产一区二区三区香蕉| 国产成人无码精品久在线观看| 中文字幕无线精品亚洲乱码一区 | 国产精品69久久久久孕妇欧美| 欧美一区二区在线不卡| sm性调教片在线观看| 污视频在线免费观看一区二区三区| 国产一区二区美女| 精品久久久久久久久久久国产字幕 | 国产精品一页| 极品久久久久久|