3atv精品不卡视频,97人人超碰国产精品最新,中文字幕av一区二区三区人妻少妇,久久久精品波多野结衣,日韩一区二区三区精品

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Scons环境搭建和编译原理概述及嵌入式开发常用模板

發布時間:2023/12/20 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Scons环境搭建和编译原理概述及嵌入式开发常用模板 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Scons環境搭建和編譯原理概述及嵌入式開發常用模板

????????Scons是用python實現的一個類似makefile的軟件構建工具。其官網是SCons: A software construction tool - SCons,其具有詳細的文檔來對其使用進行說明SCons Documentation。

????????Scons是一個軟件構建工具,除了能對c/c++/asm進行構建外,也能實現對java等語言進行構建。因為其是用python來實現的,所以其具備跨平臺的特性。

????????本例程所有相關代碼在GitHub上,請自行下載。https://github.com/bobwenstudy/scons_demo

為什么用Scons

????????第一次接觸Scons是在RTThread中,進一步了解它的特性,漸漸的就喜歡上了,平常自己寫一些代碼,用Scons可以方便不少。對于我個人來說,主要的好處有:

????????實際項目中編譯工程時,除了要對代碼進行編譯生成固件外,還需要整合一些其他資源(如編譯耳機項目時,需要講提示音等wav資源打包進代碼中;多固件合并打包之類。)之前完成這些動作是用python寫的,當然能用makefile調用,但是相比Scons本身就是python,同一套環境調試起來會方便不少。

????????易讀性,相比于makefile這么久遠的構建語言,Scons是python寫的,其語法和調試起來更方便,函數調用和可讀性都比makefile好。

????????文件依賴,使用makefile時,由于經常編譯的時候只將c文件作為依賴,而沒有將h文件作為依賴,或其他資源,導致部分h文件更新時,經常要考慮先make clean,再make all。而Scons可以自動將關聯的文件作為依賴,并構建依賴樹,不用考慮太多就可以自動將相關依賴關系給維護好,當文件更新再次編譯時,只編譯特定文件。同時可以通過Depends指定依賴關系。

????????缺點也有:

????????集成度太強:Scons內部做了太多事情,對于我這種掌控欲比較強的程序猿來說,有點脫離掌控了,雖然方便,但是當構建大型項目時,內部一些行為可能導致debug很長時間,需要我們對其原理進行深入分析。

????????資料較少:畢竟是新語言,現在很多新語言很快的死在沙灘上了,對于新語言,大家或多或少保持觀望態度,所以目前資料還是比較少的。遇到bug得自己看官方手冊,還是有點麻煩的。

環境搭建

????????從上面描述可知,Scons類似于makefile,但并不是替代了GCC,只是實現了對GCC的使用。按照makefile的邏輯,需要準備如下環境:

GCC環境:筆者是Windows環境,所以需要msys64+mingw工具鏈。

Scons環境:python環境安裝后,再安裝scons就行。

GCC環境

PC下的GCC環境安裝
????????參考這個文章安裝即可。Win7下msys64安裝mingw工具鏈 - Milton - 博客園

安裝完以后,鍵入gcc -v,得到如下提示說明環境安裝好了,目前筆者用的是mingw32的gcc。

ARM下的GCC環境安裝

????????從各個芯片產商都可以獲取到對應的交叉工具鏈,筆者的交叉工具鏈解壓縮后,就有gcc環境,一般交叉工具鏈會有前綴。

????????安裝完以后,鍵入arm-none-eabi-gcc -v,出現如下信息就代表安裝成功了。

?

Scons環境

Python安裝

????????Scons是運行在python環境下的,目前新版本的都運行在Python3+的版本上,就不建議安裝Python2的環境了(當然也可以用Python2就是了,不過最新的pip已經不支持Python2了,希望大家早點切換)。

????????網上有很多教程了,Python安裝教程-史上最全_壬杰的博客-CSDN博客_python安裝教程可以參考這個,當然也可以直接到Welcome to Python.org下載。

????????最終安裝結束后,鍵入python -V,能看到python版本,代表環境安裝好了。

?

Scons安裝

????????使用python -m pip install scons即可。當然可以到官網看看SCons DownloadsSCons DownloadsSCons Downloads。

????????最終安裝結束后,鍵入scons -v,能看到如下信息,代表環境安裝好了。

初識Scons

基本概述

????????要講清楚Scons,需要理解gcc是如何使用的,已經相比于make,scons的行為差異。首先對gcc、make和scons基本概念進行說明。

gcc
????????實際編譯c文件的動作都是由gcc來完成的,scons/make等構建語言只是完成了對多個編譯文件和編譯目標的調度管理,本身不完成編譯文件的動作。

????????c編譯原理的概念很多大佬已經講得比較多了,可以參考:C編譯原理_daixiao3636的博客-CSDN博客_c編譯原理。當然現在要編譯文件也很簡單了,一般我們只用2步,一個是通過gcc -c -o生成object文件,然后再將object文件gcc -o生成目標文件。

make
????????使用的換需要安裝make環境,一般安裝好mingw的時候,就自動裝好了make+gcc環境,需要注意的是,新版裝好后沒有make.exe,而是:mingw32-make.exe,可以復制一份,并修改文件名為make.exe,以方便后面使用。

?

make使用可以直接在終端上使用,鍵入make -v,看到如下信息,說明make環境安裝成功了。?

執行make,會去尋找文件:GNUmakefile、makefile 和 Makefile。詳細可以見:認識Makefile文件_天糊土的博客-CSDN博客_makefile文件在哪

Scons

????????之前已經安裝好了scons環境,要使用scons,和make類似,也需要一個腳本文件,配置要執行的操作。文件名為:SConstruct

?

單文件構建

gcc編譯

????????單個文件編譯,gcc直接命令行操作就行,兩行命令就可以搞定(當然1條命令也可以,這里為了統一,都要求先生成object文件,再生成目標文件)。

?

main.c的源碼如下:?

#include <stdio.h> int main() {printf("hello, world\n");return 0; }

make編譯

????????如圖所示,第一次編譯的時候,編譯目標all依賴main.o,由于沒有main.o,先對main.c進行編譯,生成main.o,最后生成最終目標。第二次編譯時,由于main.c沒改變,自然main.o不需要改變,所以只需要執行all所對應的指令,生成目標main。

????????clean清除完環境后,再次make all,所有的操作都重新來過。

Makefile的源碼如下:?

all: main.ogcc main.o -o main main.o: main.cgcc main.c -c -o main.o clean:rm main.o main.exe

Scons編譯

????????如下圖所示是一個簡易的scons編譯行為,可以看到,腳本寫的時候只需配置好源文件和目標文件source=main.c target=main,直接執行scons就可以,第二次編譯的時候,由于什么都沒變化scons不執行任何操作。

????????相比于make,清空環境只需要執行scons -c就可以自動清除編譯生成的文件,無需像make要指定所有目標。而后再次編譯又會重新開始了。

?scons源碼如下:

obj = Object('main.c') Program('main', obj)

總結

????????gcc直接操作,每次編譯都需要輸入所有command,不能自動識別文件哪些有改動,只編譯所需的文件,對于大型工程來說,編譯時間還是很長的,只編譯有修改的文件還是很方便的。

????????make解決了gcc的缺點,每次編譯只需要執行make all,刪除執行make clean就可以,但是寫makefile的人需要知曉所有的中間文件,并了解文件的依賴關系。

????????scons保留了make的優點,每次編譯只需要執行scons,刪除執行scons -c就可以。同時寫Sconstruct也更為輕松,不需要了解中間文件是什么,也不用專門寫一個clean操作。所有的事情交給scons就行。

帶.h文件的構建

gcc編譯

????????多個文件編譯的時候,先將2個文件生成object文件,再將2個object文件編譯成目標main.exe。

main.c的源碼如下:?

#include <stdio.h> #include "test.h" int main() {printf("hello, world\n");test_work();return 0; }

test.c的源碼如下:

#include <stdio.h> #include "test.h" void test_work(void) {printf(TEST_PRINT_STRING); }

test.h的源碼如下:

#ifndef _TEST_H_ #define _TEST_H_#define TEST_PRINT_STRING "Test_Origin_0" void test_work(void);#endif //_TEST_H_

make編譯

????????按照流程寫好,這里需要注意的是,修改完test.h后,再次編譯的時候make只再次生成了main.exe,并沒有重新編譯test.o和main.o,并沒有達到我們的目標。

????????這是因為我們的makefile沒寫好,沒把test.h依賴關系給寫好。

????????將makefile修改一下,這時候再次修改test.h文件,make就知道需要重新編譯文件了(大型項目通常通過-MMD -MP來生成.h的依賴樹)。

????????注意,這個問題是我們寫makefile經常遇到的問題,這個還存在更換之類的場景下,依賴關系沒寫好,導致再次編譯的時候沒將所有改動給編譯進去,通常要先make clean再make all,完全喪失了make只編譯改動的特點,導致編譯效率大大降低。

?

Makefile的源碼如下:?

all: main.o test.ogcc main.o test.o -o main main.o: main.c test.hgcc main.c -c -o main.o test.o: test.c test.hgcc test.c -c -o test.o clean:rm main.o test.o main.exe

Scons編譯

????????scons的腳本依然很簡單,配置好objects所需的源文件,在配置好目標,執行scons就可以了。需要注意的是,我們并沒有顯示的聲明test.h的依賴關系,當修改test.h后再次編譯,scons就能知道文件間的依賴關系,將整個工程正確的重新編譯了,這對于寫Sconstruct的人要求大大降低。

?

SConstruct源碼如下:

objs = Object('main.c') objs += Object('test.c') Program('main', objs)

總結

????????在包含.h文件等多種隱示依賴的情況下,scons無需開發人員了解編譯的底層原理,只需要將所需編譯的主文件配置好,并配置好目標,剩下scons都可以自動搞定,大大節約了工程人員的開發和維護成本。

Scons原理分析

????????從上一章的分析可以看出,scons保留了make的所有優點,并簡化了腳本編譯,同時很好的維護了各個文件的隱示依賴關系,避免大家每次都要make clean,再make all了。

????????這一章我們簡單分析下Scons是如何工作的。

腳本如何運行

????????沒時間細看代碼,自己也寫過一些測試環境之類,大體猜測Scons的運行機制就是將Sconstruct文件用exec函數來執行,這樣才能只寫部分代碼就可以完成編譯工作。

????????簡單搜索了下源碼Sconstruct,可以看到_SConstruct_exists函數會去用這個文件。

?之后有用python的exec函數來執行這個文件。

?

如何指導編譯

????????如果學習過make的語法,其核心語法就是目標和依賴,利用好其基本語法,再借助其強大的工具函數,就可以完成項目的編譯管理工作。

????????scons和make一樣,本質并不會去做gcc的工作,更多是管理工程文件如何依次調用gcc進行編譯

????????要用scons實現大型項目的管理,也必須理解其底層運行機制,這樣才能實現各種復雜的行為。直接學習其源碼是可以的,但是太累了,直接看其文檔也能看到一些,但是也不是特別清楚,所以這里筆者以自己淺顯的理解來分析其行為。

????????從上面的說明例子中,簡單的c項目編譯,只需要指定Object所需的source文件,然后再指定Program所需的objs和target對象,剩下都是scons來完成的。那么我們依次拆分其操作行為。

打印環境信息env.Dump()

????????scons所有的配置參數和信息存儲在Environment對象中,可以通過Dump方法可以打印當前scons的所有配置參數,而后用python的print方法就可以打印出來了。

????????官方手冊上也有說明:

env = Environment() print(env.Dump())

?

????????打印出來的信息如下所示,參數有很多,看不懂咋辦。

????????目前只需要完成嵌入式C開發需要,只要認下面幾個關鍵字:

  • C編譯:CC和CCCOM

  • ASM編譯:AS和ASCOM

  • 鏈接:LINK和LINKCOM

scons: Reading SConscript files ... { 'AR': 'ar','ARCOM': '$AR $ARFLAGS $TARGET $SOURCES','ARFLAGS': ['rc'],'AS': 'as','ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES','ASFLAGS': [],'ASPPCOM': '$CC $ASPPFLAGS $CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS -c -o ''$TARGET $SOURCES','ASPPFLAGS': '$ASFLAGS','BUILDERS': { 'CopyAs': <SCons.Builder.BuilderBase object at 0x000001F3D9B0C7F0>,'CopyTo': <SCons.Builder.BuilderBase object at 0x000001F3D9B0C7C0>,'JarFile': <SCons.Builder.BuilderBase object at 0x000001F3D9B0C910>,'JavaClassDir': <SCons.Builder.BuilderBase object at 0x000001F3D9B0CC10>,'JavaClassFile': <SCons.Builder.BuilderBase object at 0x000001F3D9B0CB50>,'JavaFile': <SCons.Builder.CompositeBuilder object at 0x000001F3D9B0CA60>,'Library': <SCons.Builder.BuilderBase object at 0x000001F3D9ACAA10>,'LoadableModule': <SCons.Builder.BuilderBase object at 0x000001F3D9ACA680>,'M4': <SCons.Builder.BuilderBase object at 0x000001F3D9B0C4C0>,'Object': <SCons.Builder.CompositeBuilder object at 0x000001F3D9AC9360>,'Program': <SCons.Builder.BuilderBase object at 0x000001F3D9AC9900>,'ProgramAllAtOnce': <SCons.Builder.BuilderBase object at 0x000001F3D9B0C6D0>,'RES': <SCons.Builder.BuilderBase object at 0x000001F3D9A2ECB0>,'RMIC': <SCons.Builder.BuilderBase object at 0x000001F3D9A89930>,'SharedLibrary': <SCons.Builder.BuilderBase object at 0x000001F3D9ACA290>,'SharedObject': <SCons.Builder.CompositeBuilder object at 0x000001F3D9AC95A0>,'StaticLibrary': <SCons.Builder.BuilderBase object at 0x000001F3D9ACAA10>,'StaticObject': <SCons.Builder.CompositeBuilder object at 0x000001F3D9AC9360>,'Substfile': <SCons.Builder.BuilderBase object at 0x000001F3D9AC8FD0>,'Tar': <SCons.Builder.BuilderBase object at 0x000001F3D9A8AB60>,'Textfile': <SCons.Builder.BuilderBase object at 0x000001F3D9AC8F70>,'Zip': <SCons.Builder.BuilderBase object at 0x000001F3D9A8AEC0>},'CC': 'gcc','CCCOM': '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES','CCDEPFLAGS': '-MMD -MF ${TARGET}.d','CCFLAGS': [],'CCVERSION': '12.1.0','CFILESUFFIX': '.c','CFLAGS': [],'CONFIGUREDIR': '#/.sconf_temp','CONFIGURELOG': '#/config.log','COPYSTR': 'Copy file(s): "$SOURCES" to "$TARGETS"','CPPDEFPREFIX': '-D','CPPDEFSUFFIX': '','CPPSUFFIXES': [ '.c','.C','.cxx','.cpp','.c++','.cc','.h','.H','.hxx','.hpp','.hh','.F','.fpp','.FPP','.m','.mm','.S','.spp','.SPP','.sx'],'CXX': 'g++','CXXCOM': '$CXX -o $TARGET -c $CXXFLAGS $CCFLAGS $_CCCOMCOM $SOURCES','CXXFILESUFFIX': '.cc','CXXFLAGS': [],'CXXVERSION': '12.1.0','DC': 'dmd','DCOM': '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -of$TARGET ''$SOURCES','DDEBUG': [],'DDEBUGPREFIX': '-debug=','DDEBUGSUFFIX': '','DFILESUFFIX': '.d','DFLAGPREFIX': '-','DFLAGS': [],'DFLAGSUFFIX': '','DINCPREFIX': '-I','DINCSUFFIX': '','DLIB': 'lib','DLIBCOM': '$DLIB $_DLIBFLAGS -c $TARGET $SOURCES $_DLIBFLAGS','DLIBDIRPREFIX': '-L-L','DLIBDIRSUFFIX': '','DLIBFLAGPREFIX': '-','DLIBFLAGSUFFIX': '','DLIBLINKPREFIX': '','DLIBLINKSUFFIX': '.lib','DLINK': '$DC','DLINKCOM': '$DLINK -of$TARGET $DLINKFLAGS $__DRPATH $SOURCES $_DLIBDIRFLAGS ''$_DLIBFLAGS','DLINKFLAGS': [],'DPATH': ['#/'],'DRPATHPREFIX': '-L-rpath=','DRPATHSUFFIX': '','DSUFFIXES': ['.d'],'DVERPREFIX': '-version=','DVERSIONS': [],'DVERSUFFIX': '','Dir': <SCons.Defaults.Variable_Method_Caller object at 0x000001F3D93C82E0>,'Dirs': <SCons.Defaults.Variable_Method_Caller object at 0x000001F3D93C8370>,'ENV': { 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe','PATH': 'C:\\Windows\\System32;C:\\msys64\\mingw32\\bin','PATHEXT': '.COM;.EXE;.BAT;.CMD','SystemDrive': 'C:','SystemRoot': 'C:\\Windows','TEMP': 'C:\\Users\\wenbo\\AppData\\Local\\Temp','TMP': 'C:\\Users\\wenbo\\AppData\\Local\\Temp','USERPROFILE': 'C:\\Users\\wenbo'},'ESCAPE': <function escape at 0x000001F3D9519B40>,'F03': 'gfortran','F03COM': '$F03 -o $TARGET -c $FORTRANCOMMONFLAGS $F03FLAGS $_F03INCFLAGS ''$_FORTRANMODFLAG $SOURCES','F03FLAGS': [],'F03PPCOM': '$F03 -o $TARGET -c $FORTRANCOMMONFLAGS $F03FLAGS $CPPFLAGS ''$_CPPDEFFLAGS $_F03INCFLAGS $_FORTRANMODFLAG $SOURCES','F08': 'gfortran','F08COM': '$F08 -o $TARGET -c $FORTRANCOMMONFLAGS $F08FLAGS $_F08INCFLAGS ''$_FORTRANMODFLAG $SOURCES','F08FLAGS': [],'F08PPCOM': '$F08 -o $TARGET -c $FORTRANCOMMONFLAGS $F08FLAGS $CPPFLAGS ''$_CPPDEFFLAGS $_F08INCFLAGS $_FORTRANMODFLAG $SOURCES','F77': 'gfortran','F77COM': '$F77 -o $TARGET -c $FORTRANCOMMONFLAGS $F77FLAGS $_F77INCFLAGS ''$SOURCES','F77FLAGS': [],'F77PPCOM': '$F77 -o $TARGET -c $FORTRANCOMMONFLAGS $F77FLAGS $CPPFLAGS ''$_CPPDEFFLAGS $_F77INCFLAGS $SOURCES','F90': 'gfortran','F90COM': '$F90 -o $TARGET -c $FORTRANCOMMONFLAGS $F90FLAGS $_F90INCFLAGS ''$_FORTRANMODFLAG $SOURCES','F90FLAGS': [],'F90PPCOM': '$F90 -o $TARGET -c $FORTRANCOMMONFLAGS $F90FLAGS $CPPFLAGS ''$_CPPDEFFLAGS $_F90INCFLAGS $_FORTRANMODFLAG $SOURCES','F95': 'gfortran','F95COM': '$F95 -o $TARGET -c $FORTRANCOMMONFLAGS $F95FLAGS $_F95INCFLAGS ''$_FORTRANMODFLAG $SOURCES','F95FLAGS': [],'F95PPCOM': '$F95 -o $TARGET -c $FORTRANCOMMONFLAGS $F95FLAGS $CPPFLAGS ''$_CPPDEFFLAGS $_F95INCFLAGS $_FORTRANMODFLAG $SOURCES','FORTRAN': 'gfortran','FORTRANCOM': '$FORTRAN -o $TARGET -c $FORTRANCOMMONFLAGS $FORTRANFLAGS ''$_FORTRANINCFLAGS $_FORTRANMODFLAG $SOURCES','FORTRANFLAGS': [],'FORTRANMODDIR': '','FORTRANMODDIRPREFIX': '-J','FORTRANMODDIRSUFFIX': '','FORTRANMODPREFIX': '','FORTRANMODSUFFIX': '.mod','FORTRANPPCOM': '$FORTRAN -o $TARGET -c $FORTRANCOMMONFLAGS $FORTRANFLAGS ''$CPPFLAGS $_CPPDEFFLAGS $_FORTRANINCFLAGS $_FORTRANMODFLAG ''$SOURCES','FORTRANSUFFIXES': [ '.f','.for','.ftn','.F','.FOR','.FTN','.fpp','.FPP','.f77','.F77','.f90','.F90','.f95','.F95','.f03','.F03','.f08','.F08'],'FRAMEWORKPATH': [],'FRAMEWORKS': [],'File': <SCons.Defaults.Variable_Method_Caller object at 0x000001F3D93C83A0>,'HOST_ARCH': 'x86_64','HOST_OS': 'win32','IDLSUFFIXES': ['.idl', '.IDL'],'IMPLIBNOVERSIONSYMLINKS': True,'INCF03PREFIX': '-I','INCF03SUFFIX': '','INCF08PREFIX': '-I','INCF08SUFFIX': '','INCF77PREFIX': '-I','INCF77SUFFIX': '','INCF90PREFIX': '-I','INCF90SUFFIX': '','INCF95PREFIX': '-I','INCF95SUFFIX': '','INCFORTRANPREFIX': '-I','INCFORTRANSUFFIX': '','INCPREFIX': '-I','INCSUFFIX': '','JAR': 'jar','JARCOM': "${TEMPFILE('$_JARCOM','$JARCOMSTR')}",'JARFLAGS': ['cf'],'JARSUFFIX': '.jar','JAVABOOTCLASSPATH': [],'JAVAC': 'javac','JAVACCOM': "${TEMPFILE('$_JAVACCOM','$JAVACCOMSTR')}",'JAVACFLAGS': [],'JAVACLASSPATH': [],'JAVACLASSSUFFIX': '.class','JAVAINCLUDES': [],'JAVASOURCEPATH': [],'JAVASUFFIX': '.java','LDMODULE': '$SHLINK','LDMODULECOM': <SCons.Action.CommandGeneratorAction object at 0x000001F3D9A2E800>,'LDMODULEEMITTER': [ <function lib_emitter at 0x000001F3D93B4AF0>,<function ldmod_symlink_emitter at 0x000001F3D9AE8940>,<function shlib_emitter at 0x000001F3D9A5A290>],'LDMODULEFLAGS': '$SHLINKFLAGS','LDMODULENAME': '${LDMODULEPREFIX}$_get_ldmodule_stem${_LDMODULESUFFIX}','LDMODULENOVERSIONSYMLINKS': True,'LDMODULEPREFIX': '$SHLIBPREFIX','LDMODULESUFFIX': '$SHLIBSUFFIX','LDMODULEVERSION': '$SHLIBVERSION','LDMODULE_NOVERSION_SYMLINK': '$_get_shlib_dir${LDMODULEPREFIX}$_get_ldmodule_stem${LDMODULESUFFIX}','LDMODULE_SONAME_SYMLINK': '$_get_shlib_dir$_LDMODULESONAME','LIBDIRPREFIX': '-L','LIBDIRSUFFIX': '','LIBLINKPREFIX': '-l','LIBLINKSUFFIX': '','LIBPREFIX': 'lib','LIBPREFIXES': ['$LIBPREFIX'],'LIBSUFFIX': '.a','LIBSUFFIXES': ['$LIBSUFFIX'],'LINESEPARATOR': '\n','LINK': '$SMARTLINK','LINKCOM': '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS ''$_LIBFLAGS','LINKFLAGS': [],'M4': 'm4','M4COM': 'cd ${SOURCE.rsrcdir} && $M4 $M4FLAGS < ${SOURCE.file} > ''${TARGET.abspath}','M4FLAGS': ['-E'],'MAXLINELENGTH': 2048,'NINJA_DEPFILE_PARSE_FORMAT': 'gcc','OBJPREFIX': '','OBJSUFFIX': '.o','PLATFORM': 'win32','PROGPREFIX': '','PROGSUFFIX': '.exe','PSPAWN': <function piped_spawn at 0x000001F3D9519990>,'RANLIB': 'ranlib','RANLIBCOM': '$RANLIB $RANLIBFLAGS $TARGET','RANLIBFLAGS': [],'RC': 'windres','RCCOM': '$RC $_CPPDEFFLAGS $RCINCFLAGS ${RCINCPREFIX} ${SOURCE.dir} ''$RCFLAGS -i $SOURCE -o $TARGET','RCFLAGS': [],'RCINCFLAGS': '${_concat(RCINCPREFIX, CPPPATH, RCINCSUFFIX, __env__, RDirs, ''TARGET, SOURCE, affect_signature=False)}','RCINCPREFIX': '--include-dir ','RCINCSUFFIX': '','RDirs': <SCons.Defaults.Variable_Method_Caller object at 0x000001F3D93C8430>,'RMIC': 'rmic','RMICCOM': '$RMIC $RMICFLAGS -d ${TARGET.attributes.java_lookupdir} ''-classpath ${SOURCE.attributes.java_classdir} ''${SOURCES.attributes.java_classname}','RMICFLAGS': [],'RPATHPREFIX': '-Wl,-rpath=','RPATHSUFFIX': '','SCANNERS': [<SCons.Scanner.ScannerBase object at 0x000001F3D9393C10>],'SHCC': '$CC','SHCCCOM': '$SHCC -o $TARGET -c $SHCFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES','SHCCFLAGS': ['$CCFLAGS'],'SHCFLAGS': ['$CFLAGS'],'SHCXX': '$CXX','SHCXXCOM': '$SHCXX -o $TARGET -c $SHCXXFLAGS $SHCCFLAGS $_CCCOMCOM $SOURCES','SHCXXFLAGS': ['$CXXFLAGS'],'SHDC': '$DC','SHDCOM': '$DC $_DINCFLAGS $_DVERFLAGS $_DDEBUGFLAGS $_DFLAGS -c -fPIC ''-of$TARGET $SOURCES','SHDLINK': '$DC','SHDLINKCOM': '$DLINK -of$TARGET $SHDLINKFLAGS $__SHDLIBVERSIONFLAGS ''$__DRPATH $SOURCES $_DLIBDIRFLAGS $_DLIBFLAGS','SHDLINKFLAGS': ['$DLINKFLAGS', '-shared', '-defaultlib=libphobos2.so'],'SHELL': 'C:\\Windows\\System32\\cmd.exe','SHF03': '$F03','SHF03COM': '$SHF03 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF03FLAGS ''$_F03INCFLAGS $_FORTRANMODFLAG $SOURCES','SHF03FLAGS': ['$F03FLAGS'],'SHF03PPCOM': '$SHF03 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF03FLAGS ''$CPPFLAGS $_CPPDEFFLAGS $_F03INCFLAGS $_FORTRANMODFLAG ''$SOURCES','SHF08': '$F08','SHF08COM': '$SHF08 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF08FLAGS ''$_F08INCFLAGS $_FORTRANMODFLAG $SOURCES','SHF08FLAGS': ['$F08FLAGS'],'SHF08PPCOM': '$SHF08 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF08FLAGS ''$CPPFLAGS $_CPPDEFFLAGS $_F08INCFLAGS $_FORTRANMODFLAG ''$SOURCES','SHF77': '$F77','SHF77COM': '$SHF77 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF77FLAGS ''$_F77INCFLAGS $SOURCES','SHF77FLAGS': ['$F77FLAGS'],'SHF77PPCOM': '$SHF77 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF77FLAGS ''$CPPFLAGS $_CPPDEFFLAGS $_F77INCFLAGS $SOURCES','SHF90': '$F90','SHF90COM': '$SHF90 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF90FLAGS ''$_F90INCFLAGS $_FORTRANMODFLAG $SOURCES','SHF90FLAGS': ['$F90FLAGS'],'SHF90PPCOM': '$SHF90 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF90FLAGS ''$CPPFLAGS $_CPPDEFFLAGS $_F90INCFLAGS $_FORTRANMODFLAG ''$SOURCES','SHF95': '$F95','SHF95COM': '$SHF95 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF95FLAGS ''$_F95INCFLAGS $_FORTRANMODFLAG $SOURCES','SHF95FLAGS': ['$F95FLAGS'],'SHF95PPCOM': '$SHF95 -o $TARGET -c $FORTRANCOMMONFLAGS $SHF95FLAGS ''$CPPFLAGS $_CPPDEFFLAGS $_F95INCFLAGS $_FORTRANMODFLAG ''$SOURCES','SHFORTRAN': '$FORTRAN','SHFORTRANCOM': '$SHFORTRAN -o $TARGET -c $FORTRANCOMMONFLAGS ''$SHFORTRANFLAGS $_FORTRANINCFLAGS $_FORTRANMODFLAG $SOURCES','SHFORTRANFLAGS': ['$FORTRANFLAGS'],'SHFORTRANPPCOM': '$SHFORTRAN -o $TARGET -c $FORTRANCOMMONFLAGS ''$SHFORTRANFLAGS $CPPFLAGS $_CPPDEFFLAGS $_FORTRANINCFLAGS ''$_FORTRANMODFLAG $SOURCES','SHLIBEMITTER': [ <function lib_emitter at 0x000001F3D93B4AF0>,<function shlib_symlink_emitter at 0x000001F3D9AE8B80>,<function shlib_emitter at 0x000001F3D9A5A290>],'SHLIBNAME': '${_get_shlib_dir}${SHLIBPREFIX}$_get_shlib_stem${_SHLIBSUFFIX}','SHLIBNOVERSIONSYMLINKS': True,'SHLIBPREFIX': '','SHLIBSONAMEFLAGS': '-Wl,-soname=$_SHLIBSONAME','SHLIBSUFFIX': '.dll','SHLIB_NOVERSION_SYMLINK': '${_get_shlib_dir}${SHLIBPREFIX}$_get_shlib_stem${SHLIBSUFFIX}','SHLIB_SONAME_SYMLINK': '${_get_shlib_dir}$_SHLIBSONAME','SHLINK': '$LINK','SHLINKCOM': <SCons.Action.CommandGeneratorAction object at 0x000001F3D9A2E7A0>,'SHLINKCOMSTR': <function shlib_generator at 0x000001F3D9A59630>,'SHLINKFLAGS': ['$LINKFLAGS', '-shared'],'SHOBJPREFIX': '$OBJPREFIX','SHOBJSUFFIX': '.o','SMARTLINK': <function smart_link at 0x000001F3D93B4A60>,'SPAWN': <function spawn at 0x000001F3D9519AB0>,'STATIC_AND_SHARED_OBJECTS_ARE_THE_SAME': 1,'SUBSTFILEPREFIX': '','SUBSTFILESUFFIX': '','TAR': 'tar','TARCOM': '$TAR $TARFLAGS -f $TARGET $SOURCES','TARFLAGS': ['-c'],'TARGET_ARCH': None,'TARGET_OS': None,'TARSUFFIX': '.tar','TEMPFILE': <class 'SCons.Platform.TempFileMunge'>,'TEMPFILEARGESCFUNC': <function quote_spaces at 0x000001F3D9252DD0>,'TEMPFILEARGJOIN': ' ','TEMPFILEPREFIX': '@','TEXTFILEPREFIX': '','TEXTFILESUFFIX': '.txt','TOOLS': [ 'default','mingw','gcc','g++','gnulink','ar','gas','gfortran','m4','dmd','filesystem','jar','javac','rmic','tar','zip','textfile'],'WINDOWSDEFPREFIX': '','WINDOWSDEFSUFFIX': '.def','WIXCANDLE': 'candle.exe','WIXLIGHT': 'light.exe','ZIP': 'zip','ZIPCOM': <SCons.Action.FunctionAction object at 0x000001F3D9A8ACB0>,'ZIPCOMPRESSION': 8,'ZIPFLAGS': [],'ZIPROOT': [],'ZIPSUFFIX': '.zip','_CCCOMCOM': '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS','_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__, ''TARGET, SOURCE)}','_CPPINCFLAGS': '${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, ''TARGET, SOURCE, affect_signature=False)}','_DDEBUGFLAGS': '${_concat(DDEBUGPREFIX, DDEBUG, DDEBUGSUFFIX, __env__)}','_DFLAGS': '${_concat(DFLAGPREFIX, DFLAGS, DFLAGSUFFIX, __env__)}','_DINCFLAGS': '${_concat(DINCPREFIX, DPATH, DINCSUFFIX, __env__, RDirs, ''TARGET, SOURCE)}','_DLIBDIRFLAGS': '${_concat(DLIBDIRPREFIX, LIBPATH, DLIBDIRSUFFIX, __env__, ''RDirs, TARGET, SOURCE)}','_DLIBFLAGS': '${_stripixes(DLIBLINKPREFIX, LIBS, DLIBLINKSUFFIX, ''LIBPREFIXES, LIBSUFFIXES, __env__)}','_DRPATH': '${_concat(DRPATHPREFIX, RPATH, DRPATHSUFFIX, __env__)}','_DVERFLAGS': '${_concat(DVERPREFIX, DVERSIONS, DVERSUFFIX, __env__)}','_F03INCFLAGS': '${_concat(INCF03PREFIX, F03PATH, INCF03SUFFIX, __env__, ''RDirs, TARGET, SOURCE, affect_signature=False)}','_F08INCFLAGS': '${_concat(INCF08PREFIX, F08PATH, INCF08SUFFIX, __env__, ''RDirs, TARGET, SOURCE, affect_signature=False)}','_F77INCFLAGS': '${_concat(INCF77PREFIX, F77PATH, INCF77SUFFIX, __env__, ''RDirs, TARGET, SOURCE, affect_signature=False)}','_F90INCFLAGS': '${_concat(INCF90PREFIX, F90PATH, INCF90SUFFIX, __env__, ''RDirs, TARGET, SOURCE, affect_signature=False)}','_F95INCFLAGS': '${_concat(INCF95PREFIX, F95PATH, INCF95SUFFIX, __env__, ''RDirs, TARGET, SOURCE, affect_signature=False)}','_FORTRANINCFLAGS': '${_concat(INCFORTRANPREFIX, FORTRANPATH, ''INCFORTRANSUFFIX, __env__, RDirs, TARGET, SOURCE, ''affect_signature=False)}','_FORTRANMODFLAG': '$( ${_concat(FORTRANMODDIRPREFIX, FORTRANMODDIR, ''FORTRANMODDIRSUFFIX, __env__, RDirs, TARGET, SOURCE)} $)','_JARCOM': '$JAR $_JARFLAGS $TARGET $_JARMANIFEST $_JARSOURCES','_JARFLAGS': <function jarFlags at 0x000001F3D9AB6EF0>,'_JARMANIFEST': <function jarManifest at 0x000001F3D9AB6E60>,'_JARSOURCES': <function jarSources at 0x000001F3D9AB5990>,'_JAVABOOTCLASSPATH': '${_javapathopt("-bootclasspath", ''"JAVABOOTCLASSPATH")} ','_JAVACCOM': '$JAVAC $JAVACFLAGS $_JAVABOOTCLASSPATH $_JAVACLASSPATH -d ''${TARGET.attributes.java_classdir} $_JAVASOURCEPATH $SOURCES','_JAVACLASSPATH': '${_javapathopt("-classpath", "JAVACLASSPATH")} ','_JAVASOURCEPATH': '${_javapathopt("-sourcepath", "JAVASOURCEPATH", ''"_JAVASOURCEPATHDEFAULT")} ','_JAVASOURCEPATHDEFAULT': '${TARGET.attributes.java_sourcedir}','_LDMODULESONAME': <function _ldmodule_soname at 0x000001F3D9AE9000>,'_LDMODULESOVERSION': <function _ldmodule_soversion at 0x000001F3D9AE8F70>,'_LDMODULESUFFIX': '${LDMODULESUFFIX}${_LDMODULEVERSION}','_LDMODULEVERSION': <function _LDMODULEVERSION at 0x000001F3D9AE9090>,'_LDMODULEVERSIONFLAGS': '$LDMODULEVERSIONFLAGS -Wl,-soname=$_LDMODULESONAME','_LIBDIRFLAGS': '${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, ''RDirs, TARGET, SOURCE, affect_signature=False)}','_LIBFLAGS': '${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, ''LIBSUFFIXES, __env__)}','_RPATH': '${_concat(RPATHPREFIX, RPATH, RPATHSUFFIX, __env__)}','_SHDLIBVERSIONFLAGS': '$SHDLIBVERSIONFLAGS -L-soname=$_SHLIBSONAME','_SHLIBSONAME': <function _soname at 0x000001F3D9AE8CA0>,'_SHLIBSOVERSION': <function _soversion at 0x000001F3D9AE8C10>,'_SHLIBSUFFIX': '$SHLIBSUFFIX','_SHLIBVERSION': "${SHLIBVERSION and '.'+SHLIBVERSION or ''}",'_SHLIBVERSIONFLAGS': '$SHLIBVERSIONFLAGS -Wl,-soname=$_SHLIBSONAME','__DSHLIBVERSIONFLAGS': '${__libversionflags(__env__,"DSHLIBVERSION","_DSHLIBVERSIONFLAGS")}','__LDMODULEVERSIONFLAGS': '${__libversionflags(__env__,"LDMODULEVERSION","_LDMODULEVERSIONFLAGS")}','__SHLIBVERSIONFLAGS': '${__libversionflags(__env__,"SHLIBVERSION","_SHLIBVERSIONFLAGS")}','__lib_either_version_flag': <function __lib_either_version_flag at 0x000001F3D93B7250>,'__libversionflags': <function __libversionflags at 0x000001F3D93B6F80>,'_concat': <function _concat at 0x000001F3D93B6CB0>,'_defines': <function _defines at 0x000001F3D93B6EF0>,'_get_ldmodule_stem': <function _get_ldmodule_stem at 0x000001F3D9AE8EE0>,'_get_shlib_dir': <function _get_shlib_dir at 0x000001F3D9AE8DC0>,'_get_shlib_stem': <function _get_shlib_stem at 0x000001F3D9AE8D30>,'_javapathopt': <class 'SCons.Tool.javac.pathopt'>,'_stripixes': <function _stripixes at 0x000001F3D93B6DD0>} scons: done reading SConscript files. scons: Building targets ... scons: `.' is up to date. scons: done building targets.

C文件編譯行為分析

????????首先我們調整下編譯行為,注釋Program,只執行Object,可以看到其最終執行了gcc -o main.o -c main.c,那為什么其知道要使用這個命令呢?如果我需要加一些編譯參數,應該如何配置呢?如果要進行嵌入式開發,需要替換gcc為aram-xx-gcc如何處理?

?????????從上文可知,scons是通過CCCOM來指導c文件編譯的。從官網上也可以看出是通過這個來完成對c的源文件編譯,生成object文件。

?????????通過dump可知,默認配置下,各個參數如下:

  • TARGET:就是目標文件
  • SOURCES:就是源文件列表
  • CFLAGS:通用C配置參數
  • CCFLAGS:通用C和C++公用的配置參數,因為scons支持多個語言,配置了這個參數,其同時會在C++編譯時使用。詳細可以參考:CXXCOM
  • _CCCOMCOM: 更多參數配置,如-D或者-I等配置。
    • CPPFLAGS:用于預處理相關的配置,既可以用于C編譯,同時也被用于ASM編譯。
    • _CPPDEFFLAGS:用于-D的預編譯配置。
    • _CPPINCFLAGS:用于-I的include路徑配置。
      ?
{'CC': 'gcc','CCCOM': '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES','CCFLAGS': [],'CFLAGS': [],'_CCCOMCOM': '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS','CPPDEFPREFIX': '-D','CPPDEFSUFFIX': '','_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__, ''TARGET, SOURCE)}','INCPREFIX': '-I','INCSUFFIX': '','_CPPINCFLAGS': '${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, ''TARGET, SOURCE, affect_signature=False)}', }

????????其實熟悉GCC的基本已經看明白了,其實把gcc編譯object的參數全部配置好了,需要的話直接改env對應的參數即可。

????????在示例中,obj = Object('main.c')中SOURCES = [main.c],TARGET = main.o,其他參數由于都沒開啟,所以沒顯示。最終就是我們看到的gcc操作。

gcc -o main.o -c main.c obj = Object('main.c')

????????假設調整CCFLAGS,加入-g參數,編譯結果如下圖所示,可以看出確實是跟著變的,之后我們只要對應改相關的參數,就可以做到修改gcc的目的。

?

ASM文件編譯行為分析

????????在PC環境下,基本很少寫ASM相關的程序,而在嵌入式環境下,不管是startup文件還是一些特殊用途的行為,都需要使用ASM語句進行操作。

????????類似于C文件的編譯過程,由于PC環境所需的匯編指令各不相同,在嵌入式系統下針對對應的芯片,也有不同匯編指令,本節只對相關配置進行說明。

????????從上文可知,scons是通過ASCOM來指導asm文件編譯的。從官網上也可以看出是通過這個來完成對c的源文件編譯,生成object文件。

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-gKSS5iUs-1663252258508)(C:/Users/wenbo/AppData/Roaming/Typora/typora-user-images/image-20220915091107811.png)]

通過dump可知,默認配置下,各個參數如下:

  • TARGET:就是目標文件
  • SOURCES:就是源文件列表
  • ASFLAGS:通用ASM配置參數
{'AS': 'as','ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES','ASFLAGS': [], }

????????和gcc類似,實際是使用as來對ASM程序進行編譯,生成object文件。

Link編譯行為分析

????????在完成Object的文件編譯后,生成了一個或多個的Object文件。編譯的最后一步是將這些Object文件Link為Program程序。

????????我們保留生成的Object,只執行Program,

????????首先我們調整下編譯行為,注釋Program,只執行Object,可以看到其最終執行了gcc -o main.exe main.o,那為什么其知道要使用這個命令呢?如果我需要加一些編譯參數,應該如何配置呢?如果要進行嵌入式開發,需要替換gcc為aram-xx-ld如何處理?

?????????從上文可知,scons是通過LINKCOM來指導LINK的。從官網上也可以看出是通過這個來完成對Object文件Link流程的。

?

通過dump可知,默認配置下,各個參數如下,由于LINK實際環境使用的程序各不一樣,所以實際是一個python對象:

  • TARGET:就是目標文件
  • SOURCES:就是源文件列表
  • LINKFLAGS:通用ld配置參數
  • _LIBDIRFLAGS:用于-L的lib路徑配置,LIBPATH為具體路徑
  • _LIBFLAGS: 用于-l的lib文件配置,LIBS為具體lib名稱。
    ?
{'LINK': '$SMARTLINK','LINKCOM': '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS ''$_LIBFLAGS','LINKFLAGS': [],'LIBDIRPREFIX': '-L','LIBDIRSUFFIX': '','_LIBDIRFLAGS': '${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, ''RDirs, TARGET, SOURCE, affect_signature=False)}','LIBLINKPREFIX': '-l','LIBLINKSUFFIX': '','_LIBFLAGS': '${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, ''LIBSUFFIXES, __env__)}', }

????????和GCC一樣,Program最終調用的就是這個配置。

????????假設調整LINKFLAGS,加入-g參數,編譯結果如下圖所示,可以看出確實是跟著變的,之后我們只要對應改相關的參數,就可以做到修改link的目的。

嵌入式開發和Scons模板

????????默認情況下,c編譯是根據具體編譯環境來的,scons會自己選定gcc程序、asm程序和Link程序,但是在嵌入式開發時,需要指定交叉編譯器,按照之前的所描述的,其實大家已經清楚了,只需要調整相應的配置參數即可。

????????此外嵌入式開發也有一些特殊的配置,這都需要我們理解并調整配置參數才行。

????????如下所示,每行都有注釋,下面對一些關鍵參數/函數進行說明:

  • get_path_files:工具函數,獲取路徑下所有特定后綴的文件,當然可以用其他方式實現(實現這個函數主要為了寫path的時候方便)
  • GCC_ARM_PATH:交叉工具鏈路徑,scons直接改工作路徑不怎么會,直接指定路徑
  • PLF:編譯平臺,默認使用PC編譯,當然嵌入式開發可以選'arm',之后會自動去配置相關參數
  • PREFIX:嵌入式開發需要,交叉工具鏈前綴
  • SPEC_LD_FLAGS:arm交叉工具鏈開發的時候,LD使用有一些特殊的要求,scons原生的參數不怎么好用,需要在_LIBFLAGS參數尾巴拼接上Map信息,其他工具鏈有特殊要求也可以根據需要調整
    ?

?

import osdef get_path_files(dirs, file_ext):path_files = []# print('dir: ' + str(dirs))for dir in dirs:# print('dir: ' + dir)path_files.append(Glob(dir + '/' + file_ext))return path_filesGCC_ARM_PATH = 'D:/env/gcc-arm-none-eabi-4_8-2014q3-20140805-win32'#PLF = 'arm' PLF = ''# toolchains if PLF == 'arm':PREFIX = GCC_ARM_PATH + '/bin/arm-none-eabi-' else:PREFIX = ''CC = PREFIX + 'gcc' AS = PREFIX + 'as' AR = PREFIX + 'ar' CXX = PREFIX + 'g++' LINK = PREFIX + 'ld'SIZE = PREFIX + 'size' OBJDUMP = PREFIX + 'objdump' OBJCPY = PREFIX + 'objcopy'TARGET_PATH = 'build/' TARGET_NAME = 'main' TARGET_WITHOUT_SUFFIX = TARGET_PATH + TARGET_NAME################################################################################### # C source dirs config C_DIRS = [] #C_DIRS.append('src')# C source files config C_FILES = [] #C_FILES.append('main.c')# Create c sources list C_SRC_LIST = get_path_files(C_DIRS, '*.c') + C_FILES################################################################################### # ASM source dirs config AS_DIRS = [] #AS_DIRS.append('src')# ASM source files config AS_FILES = [] #AS_FILES.append('startup.s')AS_SRC_LIST = get_path_files(AS_DIRS, '*.s') + AS_FILES################################################################################### # -I, Include path config CPP_PATH = [] #CPP_PATH.append('inc')# -D, Preprocess Define CPP_DEFINES = [] #CPP_DEFINES.append('CFG_TEST')# C generate define C_FLAGS = [] C_FLAGS.append('-O1') C_FLAGS.append('-g') C_FLAGS.append('-std=c99')# C and C++ generate define CC_FLAGS = [] CC_FLAGS.append('-Wall')# ASM generate define AS_FLAGS = [] AS_FLAGS.append('-g')# Link Config LINK_FLAGS = [] #LINK_FLAGS.append('-Wl,–gc-sections')# lib path. LIB_PATH = [] #LIB_PATH.append('lib')# .lib, .a file LIBS_FILES = [] #LIBS_FILES.append('test')# spec ld flag. Arm spec. SPEC_LD_FLAGS = [] if PLF == 'arm':SPEC_LD_FLAGS.append('-Map')SPEC_LD_FLAGS.append(TARGET_WITHOUT_SUFFIX + '.map')SPEC_LD_FLAGS.append('-T' + 'src/map_ram.txt')env = Environment()################################################################################### # Step0: toolchains setting. if PLF == 'arm':env['CC'] = CCenv['AS'] = ASenv['AR'] = ARenv['CXX'] = CXXenv['LINK'] = LINKenv['OBJSUFFIX'] = '.o'env['LIBPREFIX'] = 'lib'env['LIBSUFFIX'] = '.a'env['PROGSUFFIX'] = '.elf'################################################################################### # Step1: C compile setting. use <print(env.Dump())> for details. # 'CCCOM': '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'# Step1.0: General options, like: optim/debug setting. $CFLAGS. env.Append(CFLAGS=C_FLAGS)# Step1.1: General options, other setting. $CCFLAGS. env.Append(CCFLAGS=CC_FLAGS)# Step1.2: -D, -I, setting. $_CCCOMCOM # '_CCCOMCOM': '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS' # StepX.2.0: CPPFLAGS setting. --- do nothing. # StepX.2.1: -D setting. # 'CPPDEFPREFIX': '-D' # '_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__, ' # 'TARGET, SOURCE)}', env.Append(CPPDEFINES=CPP_DEFINES) # Step1.2.2: -I setting. # 'INCPREFIX': '-I' # '_CPPINCFLAGS': '${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, ' # 'TARGET, SOURCE, affect_signature=False)}', env.Append(CPPPATH=CPP_PATH)################################################################################### # Step2: ASM compile setting. use <print(env.Dump())> for details. # 'ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES'# Step2.0: General options. $ASFLAGS. env.Append(ASFLAGS=AS_FLAGS)################################################################################### # Step3: LINK setting. use <print(env.Dump())> for details. # 'LINKCOM': '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS ' # '$_LIBFLAGS',# Step3.0: General options. $LINKFLAGS. env.Append(LINKFLAGS=LINK_FLAGS)# Step3.1: Link path setting. $_LIBDIRFLAGS. # '_LIBDIRFLAGS': '${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, ' # 'RDirs, TARGET, SOURCE, affect_signature=False)}', env.Append(LIBPATH=LIB_PATH)# Step3.2: libs setting, like *.a, *.lib. $_LIBFLAGS. # '_LIBFLAGS': '${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, ' # 'LIBSUFFIXES, __env__)}', env.Append(LIBS=LIBS_FILES)# Step3.3: Add some spec params. must append at end. env.Append(_LIBFLAGS=SPEC_LD_FLAGS)################################################################################### # Step4: Compile Object files, use: # 1. <$CCCOM>: For c code compile # 2. <$ASCOM>: For asm code compile c_objs = env.Object(C_SRC_LIST) as_objs = env.Object(AS_SRC_LIST)################################################################################### # Step5: Compile target <.elf>, use <$LINKCOM>. target = env.Program(target = TARGET_WITHOUT_SUFFIX, source=[c_objs, as_objs])# Other compile target. env.Command(TARGET_WITHOUT_SUFFIX + '.bin', target, OBJCPY + ' -v -O binary $SOURCE $TARGET') env.Command(TARGET_WITHOUT_SUFFIX + '.lst', target, OBJDUMP + ' --source --all-headers --demangle --line-numbers --wide $SOURCE > $TARGET') env.Command(TARGET_WITHOUT_SUFFIX + '.size', target, SIZE + ' --format=berkeley $SOURCE')# Dump() env params, if need. #print(env.Dump())

模板使用示例

????????下面舉一個例子,還是以PC舉例,嵌入式開發自己根據需要配置即可。

????????有如下的一個多文件結構的C代碼,目前要用scons來編譯,在根目錄下寫SConstruct配置文件。

?????????最終的SConstruct配置如下:

import osdef get_path_files(dirs, file_ext):path_files = []# print('dir: ' + str(dirs))for dir in dirs:# print('dir: ' + dir)path_files.append(Glob(dir + '/' + file_ext))return path_filesGCC_ARM_PATH = 'D:/env/gcc-arm-none-eabi-4_8-2014q3-20140805-win32'#PLF = 'arm' PLF = ''# toolchains if PLF == 'arm':PREFIX = GCC_ARM_PATH + '/bin/arm-none-eabi-' else:PREFIX = ''CC = PREFIX + 'gcc' AS = PREFIX + 'as' AR = PREFIX + 'ar' CXX = PREFIX + 'g++' LINK = PREFIX + 'ld'SIZE = PREFIX + 'size' OBJDUMP = PREFIX + 'objdump' OBJCPY = PREFIX + 'objcopy'TARGET_PATH = 'build/' TARGET_NAME = 'main' TARGET_WITHOUT_SUFFIX = TARGET_PATH + TARGET_NAME################################################################################### # C source dirs config C_DIRS = [] C_DIRS.append('app\driver\src') C_DIRS.append('module1\src') C_DIRS.append('module2\src')# C source files config C_FILES = [] C_FILES.append('app\main.c')# Create c sources list C_SRC_LIST = get_path_files(C_DIRS, '*.c') + C_FILES################################################################################### # ASM source dirs config AS_DIRS = [] #AS_DIRS.append('src')# ASM source files config AS_FILES = [] #AS_FILES.append('startup.s')AS_SRC_LIST = get_path_files(AS_DIRS, '*.s') + AS_FILES################################################################################### # -I, Include path config CPP_PATH = [] CPP_PATH.append('app\driver\inc') CPP_PATH.append('module1\inc') CPP_PATH.append('module2\inc')# -D, Preprocess Define CPP_DEFINES = [] #CPP_DEFINES.append('CFG_TEST')# C generate define C_FLAGS = [] C_FLAGS.append('-O1') C_FLAGS.append('-g') C_FLAGS.append('-std=c99')# C and C++ generate define CC_FLAGS = [] CC_FLAGS.append('-Wall')# ASM generate define AS_FLAGS = [] AS_FLAGS.append('-g')# Link Config LINK_FLAGS = [] #LINK_FLAGS.append('-Wl,–gc-sections')# lib path. LIB_PATH = [] #LIB_PATH.append('lib')# .lib, .a file LIBS_FILES = [] #LIBS_FILES.append('test')# spec ld flag. Arm spec. SPEC_LD_FLAGS = [] if PLF == 'arm':SPEC_LD_FLAGS.append('-Map')SPEC_LD_FLAGS.append(TARGET_WITHOUT_SUFFIX + '.map')SPEC_LD_FLAGS.append('-T' + 'src/map_ram.txt')env = Environment()################################################################################### # Step0: toolchains setting. if PLF == 'arm':env['CC'] = CCenv['AS'] = ASenv['AR'] = ARenv['CXX'] = CXXenv['LINK'] = LINKenv['OBJSUFFIX'] = '.o'env['LIBPREFIX'] = 'lib'env['LIBSUFFIX'] = '.a'env['PROGSUFFIX'] = '.elf'################################################################################### # Step1: C compile setting. use <print(env.Dump())> for details. # 'CCCOM': '$CC -o $TARGET -c $CFLAGS $CCFLAGS $_CCCOMCOM $SOURCES'# Step1.0: General options, like: optim/debug setting. $CFLAGS. env.Append(CFLAGS=C_FLAGS)# Step1.1: General options, other setting. $CCFLAGS. env.Append(CCFLAGS=CC_FLAGS)# Step1.2: -D, -I, setting. $_CCCOMCOM # '_CCCOMCOM': '$CPPFLAGS $_CPPDEFFLAGS $_CPPINCFLAGS' # StepX.2.0: CPPFLAGS setting. --- do nothing. # StepX.2.1: -D setting. # 'CPPDEFPREFIX': '-D' # '_CPPDEFFLAGS': '${_defines(CPPDEFPREFIX, CPPDEFINES, CPPDEFSUFFIX, __env__, ' # 'TARGET, SOURCE)}', env.Append(CPPDEFINES=CPP_DEFINES) # Step1.2.2: -I setting. # 'INCPREFIX': '-I' # '_CPPINCFLAGS': '${_concat(INCPREFIX, CPPPATH, INCSUFFIX, __env__, RDirs, ' # 'TARGET, SOURCE, affect_signature=False)}', env.Append(CPPPATH=CPP_PATH)################################################################################### # Step2: ASM compile setting. use <print(env.Dump())> for details. # 'ASCOM': '$AS $ASFLAGS -o $TARGET $SOURCES'# Step2.0: General options. $ASFLAGS. env.Append(ASFLAGS=AS_FLAGS)################################################################################### # Step3: LINK setting. use <print(env.Dump())> for details. # 'LINKCOM': '$LINK -o $TARGET $LINKFLAGS $__RPATH $SOURCES $_LIBDIRFLAGS ' # '$_LIBFLAGS',# Step3.0: General options. $LINKFLAGS. env.Append(LINKFLAGS=LINK_FLAGS)# Step3.1: Link path setting. $_LIBDIRFLAGS. # '_LIBDIRFLAGS': '${_concat(LIBDIRPREFIX, LIBPATH, LIBDIRSUFFIX, __env__, ' # 'RDirs, TARGET, SOURCE, affect_signature=False)}', env.Append(LIBPATH=LIB_PATH)# Step3.2: libs setting, like *.a, *.lib. $_LIBFLAGS. # '_LIBFLAGS': '${_stripixes(LIBLINKPREFIX, LIBS, LIBLINKSUFFIX, LIBPREFIXES, ' # 'LIBSUFFIXES, __env__)}', env.Append(LIBS=LIBS_FILES)# Step3.3: Add some spec params. must append at end. env.Append(_LIBFLAGS=SPEC_LD_FLAGS)################################################################################### # Step4: Compile Object files, use: # 1. <$CCCOM>: For c code compile # 2. <$ASCOM>: For asm code compile c_objs = env.Object(C_SRC_LIST) as_objs = env.Object(AS_SRC_LIST)################################################################################### # Step5: Compile target <.elf>, use <$LINKCOM>. target = env.Program(target = TARGET_WITHOUT_SUFFIX, source=[c_objs, as_objs])# Other compile target. env.Command(TARGET_WITHOUT_SUFFIX + '.bin', target, OBJCPY + ' -v -O binary $SOURCE $TARGET') env.Command(TARGET_WITHOUT_SUFFIX + '.lst', target, OBJDUMP + ' --source --all-headers --demangle --line-numbers --wide $SOURCE > $TARGET') env.Command(TARGET_WITHOUT_SUFFIX + '.size', target, SIZE + ' --format=berkeley $SOURCE')# Dump() env params, if need. #print(env.Dump())

執行scons操作,可以看到相關參數的編譯過程,最后也會生成bin、lst以及code size信息。

D:\test\sample_4>scons scons: Reading SConscript files ... scons: done reading SConscript files. scons: Building targets ... gcc -o app\driver\src\driver1.1.o -c -O1 -g -std=c99 -Wall -Iapp\driver\inc -Imodule1\inc -Imodule2\inc app\driver\src\driver1.1.c gcc -o app\driver\src\driver2.2.o -c -O1 -g -std=c99 -Wall -Iapp\driver\inc -Imodule1\inc -Imodule2\inc app\driver\src\driver2.2.c gcc -o app\main.o -c -O1 -g -std=c99 -Wall -Iapp\driver\inc -Imodule1\inc -Imodule2\inc app\main.c gcc -o module1\src\module1.1.o -c -O1 -g -std=c99 -Wall -Iapp\driver\inc -Imodule1\inc -Imodule2\inc module1\src\module1.1.c gcc -o module1\src\module1.2.o -c -O1 -g -std=c99 -Wall -Iapp\driver\inc -Imodule1\inc -Imodule2\inc module1\src\module1.2.c gcc -o module2\src\module2.1.o -c -O1 -g -std=c99 -Wall -Iapp\driver\inc -Imodule1\inc -Imodule2\inc module2\src\module2.1.c gcc -o module2\src\module2.2.o -c -O1 -g -std=c99 -Wall -Iapp\driver\inc -Imodule1\inc -Imodule2\inc module2\src\module2.2.c gcc -o build\main.exe app\driver\src\driver1.1.o app\driver\src\driver2.2.o module1\src\module1.1.o module1\src\module1.2.o module2\src\module2.1.o module2\src\module2.2.o app\main.o objcopy -v -O binary build\main.exe build\main.bin copy from `build\main.exe' [pei-i386] to `build\main.bin' [binary] objdump --source --all-headers --demangle --line-numbers --wide build\main.exe > build\main.lst size --format=berkeley build\main.exetext data bss dec hex filename39620 2944 2676 45240 b0b8 build\main.exe scons: done building targets.D:\test\sample_4>scons -c scons: Reading SConscript files ... scons: done reading SConscript files. scons: Cleaning targets ... Removed app\driver\src\driver1.1.o Removed app\driver\src\driver2.2.o Removed app\main.o Removed module1\src\module1.1.o Removed module1\src\module1.2.o Removed module2\src\module2.1.o Removed module2\src\module2.2.o Removed build\main.exe Removed build\main.bin Removed build\main.lst scons: done cleaning targets.

轉自:Scons環境搭建和編譯原理概述及嵌入式開發常用模板_CoderBob的博客-CSDN博客_scons源碼解析

總結

以上是生活随笔為你收集整理的Scons环境搭建和编译原理概述及嵌入式开发常用模板的全部內容,希望文章能夠幫你解決所遇到的問題。

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

永久免费精品精品永久-夜色 | 欧美日韩视频无码一区二区三 | 成年美女黄网站色大免费全看 | 日日鲁鲁鲁夜夜爽爽狠狠 | 欧美午夜特黄aaaaaa片 | 98国产精品综合一区二区三区 | 女人被男人爽到呻吟的视频 | 国产激情艳情在线看视频 | 131美女爱做视频 | 久久 国产 尿 小便 嘘嘘 | 国产一区二区三区影院 | 亚洲大尺度无码无码专区 | 无码人妻精品一区二区三区下载 | 国产猛烈高潮尖叫视频免费 | 无码一区二区三区在线观看 | 久久99精品国产麻豆蜜芽 | 又粗又大又硬又长又爽 | 国产精品久久久午夜夜伦鲁鲁 | 国产 浪潮av性色四虎 | 亚洲精品成a人在线观看 | 久久www免费人成人片 | 国产成人精品三级麻豆 | 无码国模国产在线观看 | 一本无码人妻在中文字幕免费 | 国产人妻精品一区二区三区不卡 | 亚洲男女内射在线播放 | 午夜肉伦伦影院 | 久久久婷婷五月亚洲97号色 | 无码人妻丰满熟妇区毛片18 | 日本一卡二卡不卡视频查询 | 亚洲人成网站免费播放 | 亚洲热妇无码av在线播放 | 精品无码一区二区三区爱欲 | 特级做a爰片毛片免费69 | 好男人www社区 | 啦啦啦www在线观看免费视频 | 最近中文2019字幕第二页 | 性做久久久久久久免费看 | 亚洲国产精品一区二区第一页 | 鲁大师影院在线观看 | 国产成人综合在线女婷五月99播放 | 西西人体www44rt大胆高清 | 高清无码午夜福利视频 | 国产国语老龄妇女a片 | 性色欲网站人妻丰满中文久久不卡 | 成人精品视频一区二区三区尤物 | 呦交小u女精品视频 | 在线天堂新版最新版在线8 | 国产人妻精品一区二区三区不卡 | 久久久精品国产sm最大网站 | 亚洲色大成网站www国产 | 久久久久av无码免费网 | 蜜桃无码一区二区三区 | 国产一区二区不卡老阿姨 | 久久综合激激的五月天 | 国产成人无码av片在线观看不卡 | 国产精品久久久久久久9999 | av香港经典三级级 在线 | av无码久久久久不卡免费网站 | 成人影院yy111111在线观看 | 国产熟妇高潮叫床视频播放 | 伊人久久大香线蕉亚洲 | 国产精品嫩草久久久久 | 午夜嘿嘿嘿影院 | 成人女人看片免费视频放人 | 国产网红无码精品视频 | 久久久中文字幕日本无吗 | 亚洲の无码国产の无码步美 | 国产精品视频免费播放 | 日本成熟视频免费视频 | 99re在线播放 | 午夜免费福利小电影 | 99久久久国产精品无码免费 | 99精品国产综合久久久久五月天 | 永久黄网站色视频免费直播 | 日韩人妻系列无码专区 | 欧美 日韩 亚洲 在线 | 动漫av网站免费观看 | 国产精品无码一区二区三区不卡 | 日韩视频 中文字幕 视频一区 | 人人妻人人澡人人爽欧美一区九九 | 99久久婷婷国产综合精品青草免费 | 小鲜肉自慰网站xnxx | 亚洲自偷自拍另类第1页 | 国产精品无码mv在线观看 | 老太婆性杂交欧美肥老太 | 国产真实乱对白精彩久久 | 国产亚洲视频中文字幕97精品 | 妺妺窝人体色www在线小说 | 久久综合九色综合97网 | 午夜精品久久久久久久久 | 日欧一片内射va在线影院 | 国产午夜视频在线观看 | 亚洲中文无码av永久不收费 | 久久久久久国产精品无码下载 | 熟妇人妻激情偷爽文 | 丰满诱人的人妻3 | 亚洲中文字幕无码中文字在线 | 国语精品一区二区三区 | 国产艳妇av在线观看果冻传媒 | 日本高清一区免费中文视频 | 樱花草在线社区www | 国产午夜亚洲精品不卡下载 | 理论片87福利理论电影 | 亚洲一区二区三区国产精华液 | 国语自产偷拍精品视频偷 | 国产特级毛片aaaaaaa高清 | 久久人人爽人人爽人人片av高清 | 午夜福利一区二区三区在线观看 | 欧美丰满熟妇xxxx | 久久久精品456亚洲影院 | 国产又粗又硬又大爽黄老大爷视 | 久久久国产精品无码免费专区 | 亚洲精品欧美二区三区中文字幕 | 人妻少妇被猛烈进入中文字幕 | 狠狠综合久久久久综合网 | 国产乱人偷精品人妻a片 | 亚洲一区二区三区四区 | 人人妻人人澡人人爽精品欧美 | 久久久成人毛片无码 | 国产特级毛片aaaaaa高潮流水 | 性欧美牲交xxxxx视频 | 天天综合网天天综合色 | 亚洲精品午夜国产va久久成人 | 激情五月综合色婷婷一区二区 | 在线欧美精品一区二区三区 | 亚洲天堂2017无码 | 成人无码精品一区二区三区 | 国产成人精品久久亚洲高清不卡 | 国产午夜亚洲精品不卡 | www成人国产高清内射 | 亚洲一区二区三区含羞草 | 日本大香伊一区二区三区 | 四虎永久在线精品免费网址 | aa片在线观看视频在线播放 | 久久国产精品二国产精品 | 国产精品久久久久久久9999 | 综合激情五月综合激情五月激情1 | 99久久人妻精品免费二区 | 一本久道久久综合婷婷五月 | 黑人巨大精品欧美一区二区 | 亚洲欧美国产精品久久 | 久久久久成人片免费观看蜜芽 | 无码中文字幕色专区 | 丰满少妇女裸体bbw | 亚洲va中文字幕无码久久不卡 | 男女猛烈xx00免费视频试看 | 久久人人爽人人爽人人片av高清 | 一个人看的视频www在线 | 欧美zoozzooz性欧美 | 欧美激情内射喷水高潮 | 999久久久国产精品消防器材 | 好男人www社区 | 久久久成人毛片无码 | www国产亚洲精品久久网站 | 欧美人与禽zoz0性伦交 | 国产舌乚八伦偷品w中 | 欧美日本精品一区二区三区 | a片免费视频在线观看 | 丁香花在线影院观看在线播放 | 性色av无码免费一区二区三区 | 夜夜影院未满十八勿进 | 国产精品成人av在线观看 | 色综合久久中文娱乐网 | 台湾无码一区二区 | 清纯唯美经典一区二区 | 丰满少妇熟乱xxxxx视频 | aa片在线观看视频在线播放 | 成人亚洲精品久久久久 | 人人妻人人澡人人爽欧美精品 | 兔费看少妇性l交大片免费 | 成年女人永久免费看片 | 激情五月综合色婷婷一区二区 | 国产无套粉嫩白浆在线 | 久久99久久99精品中文字幕 | 国产偷国产偷精品高清尤物 | 永久免费观看国产裸体美女 | 免费男性肉肉影院 | 狠狠噜狠狠狠狠丁香五月 | 在教室伦流澡到高潮hnp视频 | 精品无码一区二区三区爱欲 | 激情国产av做激情国产爱 | 天天躁夜夜躁狠狠是什么心态 | 日本一卡2卡3卡四卡精品网站 | 精品一区二区三区无码免费视频 | 亚洲色偷偷男人的天堂 | 日韩精品无码一区二区中文字幕 | 国精品人妻无码一区二区三区蜜柚 | 欧美黑人巨大xxxxx | 97久久超碰中文字幕 | 日韩欧美成人免费观看 | 精品偷自拍另类在线观看 | 国产亚洲日韩欧美另类第八页 | 无码午夜成人1000部免费视频 | 少妇性荡欲午夜性开放视频剧场 | 青草青草久热国产精品 | 久久久av男人的天堂 | 性啪啪chinese东北女人 | 亚洲中文字幕无码一久久区 | 中文字幕人成乱码熟女app | 成人性做爰aaa片免费看不忠 | 51国偷自产一区二区三区 | 少女韩国电视剧在线观看完整 | 人妻少妇精品无码专区动漫 | 国产成人一区二区三区别 | 国产sm调教视频在线观看 | 六月丁香婷婷色狠狠久久 | 欧美日韩一区二区综合 | 成人影院yy111111在线观看 | 亚洲码国产精品高潮在线 | 国产综合色产在线精品 | 欧洲vodafone精品性 | 东京无码熟妇人妻av在线网址 | 欧美人妻一区二区三区 | 最新国产麻豆aⅴ精品无码 | 国产黑色丝袜在线播放 | 久久精品国产99久久6动漫 | 狠狠色欧美亚洲狠狠色www | 欧洲精品码一区二区三区免费看 | 丰满少妇高潮惨叫视频 | 国产口爆吞精在线视频 | 东京无码熟妇人妻av在线网址 | 国产亚洲精品久久久闺蜜 | 日韩成人一区二区三区在线观看 | 久久久精品国产sm最大网站 | 亚洲爆乳精品无码一区二区三区 | 男女下面进入的视频免费午夜 | 亚洲一区二区三区香蕉 | 玩弄人妻少妇500系列视频 | 波多野结衣乳巨码无在线观看 | 日本精品高清一区二区 | 在线欧美精品一区二区三区 | 欧美熟妇另类久久久久久不卡 | 亚洲精品成人福利网站 | 国产成人综合美国十次 | 色一情一乱一伦一区二区三欧美 | 性欧美牲交xxxxx视频 | 亚洲熟妇色xxxxx亚洲 | 无码人妻久久一区二区三区不卡 | 亚洲狠狠色丁香婷婷综合 | 欧美老人巨大xxxx做受 | аⅴ资源天堂资源库在线 | 黑人大群体交免费视频 | 久久亚洲中文字幕无码 | 日韩无套无码精品 | 玩弄少妇高潮ⅹxxxyw | 欧美一区二区三区 | 久久99精品国产.久久久久 | 在线天堂新版最新版在线8 | 日本精品高清一区二区 | 亚洲国产欧美在线成人 | 午夜丰满少妇性开放视频 | 亚洲国产av精品一区二区蜜芽 | 在线观看免费人成视频 | 激情内射亚州一区二区三区爱妻 | 天堂在线观看www | 国产亚洲精品精品国产亚洲综合 | 成人毛片一区二区 | 国产精品久久久 | 精品偷自拍另类在线观看 | 国产又爽又猛又粗的视频a片 | 亚洲成熟女人毛毛耸耸多 | 99久久精品午夜一区二区 | 岛国片人妻三上悠亚 | 丰满人妻被黑人猛烈进入 | 夜精品a片一区二区三区无码白浆 | 久久精品中文闷骚内射 | 丰满人妻一区二区三区免费视频 | 内射爽无广熟女亚洲 | 亚洲国产精品成人久久蜜臀 | 国产亚洲人成在线播放 | 日本又色又爽又黄的a片18禁 | 久久国产自偷自偷免费一区调 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 国产精品人人爽人人做我的可爱 | 荫蒂添的好舒服视频囗交 | 久精品国产欧美亚洲色aⅴ大片 | 青青青手机频在线观看 | 激情综合激情五月俺也去 | 国产精品国产三级国产专播 | 欧美老妇与禽交 | 伊人久久大香线蕉亚洲 | 欧美zoozzooz性欧美 | 成人无码视频在线观看网站 | 熟妇人妻无码xxx视频 | 国产无遮挡又黄又爽免费视频 | 激情内射日本一区二区三区 | 久久综合九色综合欧美狠狠 | 97se亚洲精品一区 | 少妇太爽了在线观看 | 成人精品视频一区二区三区尤物 | 激情内射日本一区二区三区 | 亚洲国产欧美国产综合一区 | 日韩人妻无码中文字幕视频 | 国产肉丝袜在线观看 | 亚洲日韩av一区二区三区四区 | 国产成人精品无码播放 | 露脸叫床粗话东北少妇 | 黑人巨大精品欧美黑寡妇 | 国产精品人人妻人人爽 | 国产精品无码一区二区三区不卡 | 亚洲成色www久久网站 | 野外少妇愉情中文字幕 | 日本熟妇人妻xxxxx人hd | 国产成人无码区免费内射一片色欲 | 亚洲成a人片在线观看日本 | 日韩精品a片一区二区三区妖精 | 久久久精品国产sm最大网站 | 女人和拘做爰正片视频 | 久久人妻内射无码一区三区 | 国产精品人人爽人人做我的可爱 | 一个人免费观看的www视频 | 水蜜桃亚洲一二三四在线 | 国产在线精品一区二区高清不卡 | 狠狠综合久久久久综合网 | 国产一区二区三区日韩精品 | 国产精品久久久久久久9999 | 国产一精品一av一免费 | 天天拍夜夜添久久精品 | 天天躁日日躁狠狠躁免费麻豆 | 久久综合狠狠综合久久综合88 | 精品国产av色一区二区深夜久久 | 久久久精品人妻久久影视 | 亚欧洲精品在线视频免费观看 | 亚洲成a人片在线观看日本 | 无码一区二区三区在线 | 亚洲精品国偷拍自产在线麻豆 | 大乳丰满人妻中文字幕日本 | 宝宝好涨水快流出来免费视频 | 女高中生第一次破苞av | 久久97精品久久久久久久不卡 | 亚洲精品国偷拍自产在线观看蜜桃 | 精品国产av色一区二区深夜久久 | 一本色道久久综合亚洲精品不卡 | 亚洲精品一区国产 | 毛片内射-百度 | 又大又黄又粗又爽的免费视频 | 麻花豆传媒剧国产免费mv在线 | 精品国产成人一区二区三区 | 亚洲日本va午夜在线电影 | 亚洲国产欧美国产综合一区 | 无码福利日韩神码福利片 | 又大又硬又黄的免费视频 | 高中生自慰www网站 | 欧美zoozzooz性欧美 | 亚洲日韩av一区二区三区四区 | 在线天堂新版最新版在线8 | 亚洲精品成人福利网站 | 无码乱肉视频免费大全合集 | 国产成人无码午夜视频在线观看 | 久久国内精品自在自线 | 亚洲欧美精品aaaaaa片 | 99久久精品国产一区二区蜜芽 | 欧美 日韩 人妻 高清 中文 | 国产av一区二区三区最新精品 | 欧美freesex黑人又粗又大 | 色综合久久久无码网中文 | 中文字幕无码av激情不卡 | 欧美zoozzooz性欧美 | 日韩精品无码一区二区中文字幕 | 亚洲人交乣女bbw | 精品少妇爆乳无码av无码专区 | 亚洲熟悉妇女xxx妇女av | 人人妻人人澡人人爽欧美一区 | 伊人久久大香线焦av综合影院 | 天天拍夜夜添久久精品 | 纯爱无遮挡h肉动漫在线播放 | 乌克兰少妇xxxx做受 | 久久精品中文闷骚内射 | 国产九九九九九九九a片 | 午夜熟女插插xx免费视频 | 装睡被陌生人摸出水好爽 | 国产suv精品一区二区五 | 亚洲中文字幕无码中文字在线 | 天堂亚洲免费视频 | 一本精品99久久精品77 | 色一情一乱一伦一区二区三欧美 | 永久黄网站色视频免费直播 | 亚洲经典千人经典日产 | 精品日本一区二区三区在线观看 | 无码午夜成人1000部免费视频 | 国色天香社区在线视频 | 久久人人爽人人爽人人片ⅴ | 国产成人无码一二三区视频 | 欧美日本精品一区二区三区 | 黑森林福利视频导航 | 国产精品美女久久久久av爽李琼 | 给我免费的视频在线观看 | 美女黄网站人色视频免费国产 | 色综合视频一区二区三区 | 久久精品成人欧美大片 | 亚洲熟妇色xxxxx欧美老妇y | 久久久精品欧美一区二区免费 | 欧美丰满少妇xxxx性 | 300部国产真实乱 | 成在人线av无码免观看麻豆 | 又粗又大又硬又长又爽 | 亚洲欧美中文字幕5发布 | 国产av一区二区三区最新精品 | 波多野结衣av一区二区全免费观看 | 国产麻豆精品一区二区三区v视界 | 男女超爽视频免费播放 | 波多野结衣av一区二区全免费观看 | 亚洲国产一区二区三区在线观看 | 熟女俱乐部五十路六十路av | 男人扒开女人内裤强吻桶进去 | 成人欧美一区二区三区 | 精品国产福利一区二区 | 中文字幕无码人妻少妇免费 | 亚洲午夜无码久久 | 人人妻人人澡人人爽欧美一区 | 国产午夜无码精品免费看 | 久久久精品成人免费观看 | 丁香啪啪综合成人亚洲 | 99久久无码一区人妻 | 欧美日韩在线亚洲综合国产人 | 一二三四在线观看免费视频 | 国产精品嫩草久久久久 | 欧美阿v高清资源不卡在线播放 | 色欲综合久久中文字幕网 | 激情国产av做激情国产爱 | 成人无码精品1区2区3区免费看 | a在线亚洲男人的天堂 | 亚洲gv猛男gv无码男同 | 国产精品免费大片 | 色一情一乱一伦 | 中国女人内谢69xxxx | 亚洲人成无码网www | 性色av无码免费一区二区三区 | 精品无码国产一区二区三区av | 国产一区二区三区日韩精品 | 99在线 | 亚洲 | 久久 国产 尿 小便 嘘嘘 | 欧美 日韩 亚洲 在线 | 无码毛片视频一区二区本码 | 老太婆性杂交欧美肥老太 | √天堂中文官网8在线 | 岛国片人妻三上悠亚 | 一个人免费观看的www视频 | 国产亚洲视频中文字幕97精品 | 国产精品无码永久免费888 | 97夜夜澡人人双人人人喊 | 97久久国产亚洲精品超碰热 | 亚洲国产欧美日韩精品一区二区三区 | 少妇被黑人到高潮喷出白浆 | 人妻少妇被猛烈进入中文字幕 | 日产国产精品亚洲系列 | 精品国产一区二区三区四区在线看 | 国产精华av午夜在线观看 | 青青青手机频在线观看 | 女人被男人躁得好爽免费视频 | www国产精品内射老师 | 亚洲а∨天堂久久精品2021 | 色婷婷久久一区二区三区麻豆 | 偷窥村妇洗澡毛毛多 | 日本丰满熟妇videos | 鲁一鲁av2019在线 | 国产真实乱对白精彩久久 | 色欲人妻aaaaaaa无码 | 国产一区二区三区影院 | 国产精品久久国产精品99 | 全球成人中文在线 | 在线精品亚洲一区二区 | 六月丁香婷婷色狠狠久久 | 亚洲啪av永久无码精品放毛片 | 久久久中文久久久无码 | 性做久久久久久久免费看 | 在线a亚洲视频播放在线观看 | 国产绳艺sm调教室论坛 | 精品成在人线av无码免费看 | 国内精品一区二区三区不卡 | 日产精品99久久久久久 | 国产做国产爱免费视频 | 人人澡人人妻人人爽人人蜜桃 | 成人亚洲精品久久久久 | 性欧美videos高清精品 | 国产成人精品必看 | 无码av最新清无码专区吞精 | 国产精品99久久精品爆乳 | 国内精品九九久久久精品 | 欧美日韩人成综合在线播放 | 欧美性色19p | 国产麻豆精品精东影业av网站 | 精品久久久久久人妻无码中文字幕 | 真人与拘做受免费视频一 | 日韩人妻无码一区二区三区久久99 | 亚洲熟妇自偷自拍另类 | 日韩欧美成人免费观看 | 久久99热只有频精品8 | 人人妻人人澡人人爽欧美精品 | 日韩欧美中文字幕公布 | 日韩欧美中文字幕公布 | 无码人妻丰满熟妇区毛片18 | 日本va欧美va欧美va精品 | 久久zyz资源站无码中文动漫 | 婷婷丁香五月天综合东京热 | 国产绳艺sm调教室论坛 | 亚洲精品综合一区二区三区在线 | 国产精品99久久精品爆乳 | 麻豆人妻少妇精品无码专区 | 精品人人妻人人澡人人爽人人 | 色一情一乱一伦一视频免费看 | 亚洲色大成网站www国产 | 无码国内精品人妻少妇 | 99久久久国产精品无码免费 | 国内精品久久毛片一区二区 | 在教室伦流澡到高潮hnp视频 | 色婷婷综合中文久久一本 | 日本大香伊一区二区三区 | 无码国内精品人妻少妇 | 亚洲一区二区三区播放 | 久久99精品国产.久久久久 | 国产综合在线观看 | 天天躁日日躁狠狠躁免费麻豆 | 日本一区二区更新不卡 | 亚洲欧美日韩国产精品一区二区 | 精品人妻人人做人人爽夜夜爽 | 久久午夜无码鲁丝片秋霞 | 久久aⅴ免费观看 | 日日摸日日碰夜夜爽av | 国产精品理论片在线观看 | 人人妻在人人 | 国产精品沙发午睡系列 | 国产真实乱对白精彩久久 | 国产精品久久久av久久久 | 亚洲自偷精品视频自拍 | 亚洲狠狠婷婷综合久久 | 无码国产激情在线观看 | 麻豆md0077饥渴少妇 | a片免费视频在线观看 | 国产色xx群视频射精 | 国产午夜亚洲精品不卡下载 | 欧美激情综合亚洲一二区 | 亚洲国产精品久久久天堂 | 久久久久久九九精品久 | 国产乱人伦偷精品视频 | 久久久久成人精品免费播放动漫 | 亚洲精品国产第一综合99久久 | 久久精品国产亚洲精品 | 国产99久久精品一区二区 | 人妻少妇被猛烈进入中文字幕 | 呦交小u女精品视频 | 丰满妇女强制高潮18xxxx | 中文精品无码中文字幕无码专区 | 国产莉萝无码av在线播放 | 国内少妇偷人精品视频免费 | 伊人色综合久久天天小片 | 无码吃奶揉捏奶头高潮视频 | 久久视频在线观看精品 | 国产suv精品一区二区五 | 久久久精品国产sm最大网站 | 一本久久a久久精品亚洲 | 亚洲精品欧美二区三区中文字幕 | 欧美精品在线观看 | 精品无码国产一区二区三区av | 色婷婷香蕉在线一区二区 | 国产做国产爱免费视频 | 帮老师解开蕾丝奶罩吸乳网站 | 久久久www成人免费毛片 | 国产亚洲精品久久久久久 | 麻豆国产人妻欲求不满 | 永久黄网站色视频免费直播 | 午夜丰满少妇性开放视频 | 巨爆乳无码视频在线观看 | 日韩成人一区二区三区在线观看 | 永久免费精品精品永久-夜色 | www成人国产高清内射 | 无遮无挡爽爽免费视频 | 亚洲精品一区二区三区四区五区 | 日日碰狠狠躁久久躁蜜桃 | 久久综合给合久久狠狠狠97色 | 最新国产麻豆aⅴ精品无码 | 狂野欧美性猛xxxx乱大交 | 无码人妻av免费一区二区三区 | 亚洲精品国产精品乱码不卡 | 美女黄网站人色视频免费国产 | 亚洲一区二区三区在线观看网站 | 国产成人无码专区 | 蜜臀aⅴ国产精品久久久国产老师 | 在线 国产 欧美 亚洲 天堂 | 精品国产精品久久一区免费式 | 97精品人妻一区二区三区香蕉 | 亚洲大尺度无码无码专区 | 久久99精品国产麻豆 | 亚洲精品一区二区三区在线观看 | 日日摸天天摸爽爽狠狠97 | 国产精品国产三级国产专播 | 国产av无码专区亚洲awww | 亚洲小说春色综合另类 | 欧美阿v高清资源不卡在线播放 | 亚洲自偷自拍另类第1页 | 久久人人爽人人爽人人片ⅴ | 国产精品亚洲lv粉色 | a在线观看免费网站大全 | 国产深夜福利视频在线 | 人人澡人人妻人人爽人人蜜桃 | 狂野欧美性猛xxxx乱大交 | 未满成年国产在线观看 | 国产色视频一区二区三区 | 国产成人无码区免费内射一片色欲 | 小鲜肉自慰网站xnxx | 亚洲精品成a人在线观看 | 少妇人妻大乳在线视频 | 国产成人午夜福利在线播放 | 欧美阿v高清资源不卡在线播放 | 国内精品人妻无码久久久影院蜜桃 | 无码人妻黑人中文字幕 | 精品国产一区二区三区四区 | 99久久久无码国产精品免费 | 国模大胆一区二区三区 | 天下第一社区视频www日本 | 中文字幕日韩精品一区二区三区 | 久久亚洲国产成人精品性色 | 免费乱码人妻系列无码专区 | 偷窥日本少妇撒尿chinese | 成熟妇人a片免费看网站 | 无码精品人妻一区二区三区av | 综合人妻久久一区二区精品 | 久久精品国产精品国产精品污 | 国产va免费精品观看 | 少妇人妻偷人精品无码视频 | 亚洲人成影院在线无码按摩店 | 又湿又紧又大又爽a视频国产 | 久久午夜夜伦鲁鲁片无码免费 | 亚洲国产成人av在线观看 | 中文字幕av日韩精品一区二区 | 成人亚洲精品久久久久软件 | 亚洲一区二区观看播放 | 亚洲天堂2017无码中文 | 亚洲s码欧洲m码国产av | 色偷偷人人澡人人爽人人模 | 丝袜 中出 制服 人妻 美腿 | 免费看男女做好爽好硬视频 | 欧美人与物videos另类 | 又粗又大又硬又长又爽 | 久久精品国产日本波多野结衣 | 荫蒂添的好舒服视频囗交 | 88国产精品欧美一区二区三区 | 蜜臀aⅴ国产精品久久久国产老师 | 亚洲第一无码av无码专区 | 久久亚洲日韩精品一区二区三区 | 人人爽人人爽人人片av亚洲 | 日本一区二区三区免费播放 | 亚洲国产欧美在线成人 | 国产超级va在线观看视频 | 又粗又大又硬毛片免费看 | 蜜桃av抽搐高潮一区二区 | 中文字幕av伊人av无码av | 亚洲色欲色欲天天天www | 国产激情综合五月久久 | 东北女人啪啪对白 | 亚洲综合色区中文字幕 | 性欧美熟妇videofreesex | 亚洲成av人影院在线观看 | 亚洲成色www久久网站 | 国产色xx群视频射精 | 伊人久久婷婷五月综合97色 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 国产美女精品一区二区三区 | 永久免费观看美女裸体的网站 | 性欧美牲交xxxxx视频 | a片免费视频在线观看 | 亚洲啪av永久无码精品放毛片 | 亚洲无人区一区二区三区 | 国产艳妇av在线观看果冻传媒 | 亚洲欧美日韩综合久久久 | 曰本女人与公拘交酡免费视频 | 啦啦啦www在线观看免费视频 | 妺妺窝人体色www在线小说 | 久久97精品久久久久久久不卡 | 国产激情一区二区三区 | 又色又爽又黄的美女裸体网站 | 国产精品久久国产三级国 | 99久久精品国产一区二区蜜芽 | 精品一区二区三区无码免费视频 | 熟妇女人妻丰满少妇中文字幕 | 中文无码伦av中文字幕 | 国产av剧情md精品麻豆 | 成人无码影片精品久久久 | 在线精品亚洲一区二区 | aⅴ亚洲 日韩 色 图网站 播放 | 免费播放一区二区三区 | 无码人妻av免费一区二区三区 | 国产精品99爱免费视频 | 国产精品va在线播放 | 日韩精品无码一本二本三本色 | 久久国产自偷自偷免费一区调 | 亚洲高清偷拍一区二区三区 | 中文亚洲成a人片在线观看 | 亚洲爆乳无码专区 | 国产亚洲人成在线播放 | 国产成人无码av在线影院 | 亚洲爆乳大丰满无码专区 | 亚洲国产午夜精品理论片 | 小sao货水好多真紧h无码视频 | 色综合久久中文娱乐网 | 在线欧美精品一区二区三区 | 日本精品人妻无码免费大全 | 99久久精品午夜一区二区 | 国产超碰人人爽人人做人人添 | 人人澡人人透人人爽 | 偷窥日本少妇撒尿chinese | 强辱丰满人妻hd中文字幕 | 欧美亚洲国产一区二区三区 | 日产国产精品亚洲系列 | 亚洲色无码一区二区三区 | 欧美亚洲日韩国产人成在线播放 | 熟妇人妻无码xxx视频 | 国产特级毛片aaaaaa高潮流水 | 国产莉萝无码av在线播放 | 免费无码肉片在线观看 | 高清无码午夜福利视频 | 亚洲aⅴ无码成人网站国产app | 欧美日韩一区二区免费视频 | 久9re热视频这里只有精品 | 成年美女黄网站色大免费全看 | 国产内射爽爽大片视频社区在线 | 性开放的女人aaa片 | 成人一区二区免费视频 | 好男人www社区 | 亚洲欧美日韩综合久久久 | 少妇邻居内射在线 | 国产精品无码久久av | 国产又粗又硬又大爽黄老大爷视 | 日韩精品一区二区av在线 | 国产av人人夜夜澡人人爽麻豆 | 中文字幕日产无线码一区 | 真人与拘做受免费视频一 | 熟妇人妻激情偷爽文 | 少妇厨房愉情理9仑片视频 | 久久亚洲中文字幕无码 | 日本va欧美va欧美va精品 | 精品厕所偷拍各类美女tp嘘嘘 | 国产亚av手机在线观看 | 精品亚洲韩国一区二区三区 | 亚洲中文字幕无码一久久区 | 久久综合香蕉国产蜜臀av | 在线精品亚洲一区二区 | 亚洲精品久久久久avwww潮水 | 国产婷婷色一区二区三区在线 | 亚洲人成网站免费播放 | 午夜精品久久久久久久久 | 久久精品无码一区二区三区 | 99久久亚洲精品无码毛片 | 图片小说视频一区二区 | 久久这里只有精品视频9 | 国产亚洲欧美在线专区 | 日本成熟视频免费视频 | 一本久道久久综合婷婷五月 | 亚洲第一无码av无码专区 | 婷婷六月久久综合丁香 | 国产精品久久久久久亚洲毛片 | 久久人人97超碰a片精品 | 亚洲爆乳无码专区 | 少妇一晚三次一区二区三区 | 欧美兽交xxxx×视频 | 任你躁在线精品免费 | 又色又爽又黄的美女裸体网站 | 国产高清av在线播放 | 色婷婷久久一区二区三区麻豆 | 大肉大捧一进一出好爽视频 | 亚洲日韩av一区二区三区四区 | 两性色午夜视频免费播放 | 久久国产劲爆∧v内射 | 人人澡人人妻人人爽人人蜜桃 | 久久精品女人天堂av免费观看 | 任你躁在线精品免费 | 无码午夜成人1000部免费视频 | 国产精品久久国产三级国 | 粗大的内捧猛烈进出视频 | 国产午夜无码精品免费看 | 亚洲精品无码人妻无码 | 亚洲理论电影在线观看 | av人摸人人人澡人人超碰下载 | 亚洲s色大片在线观看 | 国产国语老龄妇女a片 | 国产三级久久久精品麻豆三级 | 国产在线一区二区三区四区五区 | 色欲综合久久中文字幕网 | 国产精品第一国产精品 | 天天躁日日躁狠狠躁免费麻豆 | 免费看男女做好爽好硬视频 | 欧美午夜特黄aaaaaa片 | 青草视频在线播放 | 清纯唯美经典一区二区 | 国产精品a成v人在线播放 | 国产av无码专区亚洲awww | 97无码免费人妻超级碰碰夜夜 | 亚洲精品一区二区三区婷婷月 | 色诱久久久久综合网ywww | 娇妻被黑人粗大高潮白浆 | 乱中年女人伦av三区 | 亚洲熟妇色xxxxx欧美老妇 | 亚洲毛片av日韩av无码 | 午夜理论片yy44880影院 | 一本色道久久综合狠狠躁 | 亚洲日韩乱码中文无码蜜桃臀网站 | 成人女人看片免费视频放人 | 动漫av一区二区在线观看 | 性色欲网站人妻丰满中文久久不卡 | 亚洲区欧美区综合区自拍区 | 亚洲成av人综合在线观看 | 国产精品人妻一区二区三区四 | 亲嘴扒胸摸屁股激烈网站 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲综合在线一区二区三区 | 国产精品无码mv在线观看 | 久久久久久国产精品无码下载 | 自拍偷自拍亚洲精品10p | 香蕉久久久久久av成人 | 国产午夜亚洲精品不卡下载 | 日韩亚洲欧美中文高清在线 | 东北女人啪啪对白 | 国产激情无码一区二区app | 国产精品久久国产三级国 | 久久精品人妻少妇一区二区三区 | 综合激情五月综合激情五月激情1 | 亚洲精品成人福利网站 | 男女下面进入的视频免费午夜 | 国产免费无码一区二区视频 | 我要看www免费看插插视频 | 无码播放一区二区三区 | 精品水蜜桃久久久久久久 | 久久久久人妻一区精品色欧美 | 97无码免费人妻超级碰碰夜夜 | 亚洲日本va午夜在线电影 | 狠狠cao日日穞夜夜穞av | 免费观看又污又黄的网站 | 人人妻人人澡人人爽人人精品浪潮 | 人人妻人人澡人人爽欧美一区九九 | 国产精品无码mv在线观看 | 日欧一片内射va在线影院 | 1000部啪啪未满十八勿入下载 | 久久久久久久人妻无码中文字幕爆 | 欧美zoozzooz性欧美 | 理论片87福利理论电影 | 成人精品一区二区三区中文字幕 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲国产日韩a在线播放 | 国产精品久久久久7777 | 国产午夜手机精彩视频 | 99久久精品国产一区二区蜜芽 | 国产亚洲人成在线播放 | 野外少妇愉情中文字幕 | 国产综合久久久久鬼色 | 亚洲一区二区观看播放 | 亚洲第一网站男人都懂 | 亚洲精品久久久久avwww潮水 | 中国女人内谢69xxxxxa片 | 久在线观看福利视频 | 亚洲人成人无码网www国产 | 免费无码的av片在线观看 | 久久亚洲精品中文字幕无男同 | 日本www一道久久久免费榴莲 | 亚洲成a人片在线观看无码3d | 网友自拍区视频精品 | 亚洲熟女一区二区三区 | 国产亚洲精品久久久久久久 | 牲欲强的熟妇农村老妇女视频 | 爽爽影院免费观看 | 日韩精品成人一区二区三区 | 99久久精品国产一区二区蜜芽 | 色妞www精品免费视频 | 免费乱码人妻系列无码专区 | 久热国产vs视频在线观看 | 在线播放无码字幕亚洲 | 男女超爽视频免费播放 | 国产sm调教视频在线观看 | 欧美精品在线观看 | 欧美性猛交xxxx富婆 | 国产在线精品一区二区高清不卡 | 中文毛片无遮挡高清免费 | 无码av免费一区二区三区试看 | 亚洲精品鲁一鲁一区二区三区 | 午夜男女很黄的视频 | 少妇无码一区二区二三区 | 在线观看国产午夜福利片 | 中文字幕日韩精品一区二区三区 | 97久久精品无码一区二区 | 精品一区二区不卡无码av | 亚洲国产av美女网站 | 强辱丰满人妻hd中文字幕 | 国产精品国产自线拍免费软件 | 午夜精品久久久久久久久 | 国产欧美精品一区二区三区 | 亚洲国产精品久久久久久 | 四十如虎的丰满熟妇啪啪 | 色婷婷久久一区二区三区麻豆 | 无码人妻久久一区二区三区不卡 | 久久久精品国产sm最大网站 | 欧美 日韩 人妻 高清 中文 | 露脸叫床粗话东北少妇 | 青春草在线视频免费观看 | 国产精品美女久久久网av | 国产深夜福利视频在线 | 久久久精品成人免费观看 | 久久精品成人欧美大片 | 伊人久久婷婷五月综合97色 | 久久久久亚洲精品男人的天堂 | 免费播放一区二区三区 | 鲁大师影院在线观看 | 好屌草这里只有精品 | 亚洲七七久久桃花影院 | 国产精品二区一区二区aⅴ污介绍 | 亚洲综合无码一区二区三区 | 亚洲熟悉妇女xxx妇女av | 色综合天天综合狠狠爱 | 乱中年女人伦av三区 | 中文字幕 人妻熟女 | 久久人人爽人人爽人人片ⅴ | 亚洲乱亚洲乱妇50p | 成 人 网 站国产免费观看 | 久久久久成人片免费观看蜜芽 | 日韩精品成人一区二区三区 | 亚洲精品成人福利网站 | 99久久人妻精品免费二区 | 色窝窝无码一区二区三区色欲 | 久久天天躁狠狠躁夜夜免费观看 | 国产sm调教视频在线观看 | av无码不卡在线观看免费 | 少妇性俱乐部纵欲狂欢电影 | av小次郎收藏 | 亚洲国产精品美女久久久久 | 亚洲精品欧美二区三区中文字幕 | 少妇无码一区二区二三区 | 丁香啪啪综合成人亚洲 | 国产午夜无码精品免费看 | 国产婷婷色一区二区三区在线 | www国产亚洲精品久久网站 | 欧美性生交xxxxx久久久 | 国产在线aaa片一区二区99 | 妺妺窝人体色www婷婷 | 欧美丰满老熟妇xxxxx性 | 欧美性生交活xxxxxdddd | 国产激情无码一区二区 | 蜜桃无码一区二区三区 | 76少妇精品导航 | 欧洲美熟女乱又伦 | 内射巨臀欧美在线视频 | 国产尤物精品视频 | 黑人大群体交免费视频 | 国产麻豆精品一区二区三区v视界 | 在线观看国产午夜福利片 | 日本又色又爽又黄的a片18禁 | 久9re热视频这里只有精品 | 国产精品久久久久久久9999 | 国产特级毛片aaaaaa高潮流水 | 久久综合给久久狠狠97色 | 婷婷五月综合激情中文字幕 | 久久久久久av无码免费看大片 | 18精品久久久无码午夜福利 | 久久婷婷五月综合色国产香蕉 | 久久无码人妻影院 | 大地资源中文第3页 | 日本大乳高潮视频在线观看 | 久久综合狠狠综合久久综合88 | 国产肉丝袜在线观看 | 国产精品无套呻吟在线 | 国产精品亚洲综合色区韩国 | 久久伊人色av天堂九九小黄鸭 | 日日天日日夜日日摸 | 水蜜桃色314在线观看 | 国产精品高潮呻吟av久久4虎 | 久久综合香蕉国产蜜臀av | 久热国产vs视频在线观看 | 日韩成人一区二区三区在线观看 | 久久久久成人精品免费播放动漫 | 两性色午夜免费视频 | 中文字幕av日韩精品一区二区 | 日日碰狠狠躁久久躁蜜桃 | 日本丰满熟妇videos | 亚洲 高清 成人 动漫 | 激情内射亚州一区二区三区爱妻 | 日韩人妻无码一区二区三区久久99 | 国产黄在线观看免费观看不卡 | 成人亚洲精品久久久久软件 | 蜜桃臀无码内射一区二区三区 | 在线а√天堂中文官网 | 我要看www免费看插插视频 | 97精品国产97久久久久久免费 | 久激情内射婷内射蜜桃人妖 | 国产精品永久免费视频 | 国产亚洲精品久久久久久久久动漫 | 欧美人与物videos另类 | 野狼第一精品社区 | 2019午夜福利不卡片在线 | 精品无人区无码乱码毛片国产 | 鲁一鲁av2019在线 | 激情国产av做激情国产爱 | 兔费看少妇性l交大片免费 | 国产熟女一区二区三区四区五区 | 日产国产精品亚洲系列 | 久久综合给合久久狠狠狠97色 | 红桃av一区二区三区在线无码av | 亚洲成av人在线观看网址 | 国产精品久免费的黄网站 | 成人一区二区免费视频 | 国产乱人无码伦av在线a | 日韩亚洲欧美中文高清在线 | 亚洲 欧美 激情 小说 另类 | 国产亲子乱弄免费视频 | а√天堂www在线天堂小说 | 精品一区二区不卡无码av | 亚洲中文字幕无码中文字在线 | 中文字幕人妻丝袜二区 | 亚洲狠狠色丁香婷婷综合 | 日本熟妇人妻xxxxx人hd | 亚洲欧美中文字幕5发布 | 午夜成人1000部免费视频 | 最近免费中文字幕中文高清百度 | 强伦人妻一区二区三区视频18 | 国产精品欧美成人 | 国内揄拍国内精品少妇国语 | aⅴ在线视频男人的天堂 | 久久亚洲日韩精品一区二区三区 | 99久久婷婷国产综合精品青草免费 | 国产成人精品必看 | 牛和人交xxxx欧美 | 377p欧洲日本亚洲大胆 | 无码人妻精品一区二区三区不卡 | 国产人妻人伦精品1国产丝袜 | 国产精品高潮呻吟av久久4虎 | 亚洲成熟女人毛毛耸耸多 | 内射白嫩少妇超碰 | 国产免费无码一区二区视频 | 久久五月精品中文字幕 | 久久午夜无码鲁丝片 | 久久久精品国产sm最大网站 | 婷婷丁香五月天综合东京热 | 老熟妇仑乱视频一区二区 | 国产无套粉嫩白浆在线 | 中文字幕日韩精品一区二区三区 | 国产一精品一av一免费 | 妺妺窝人体色www在线小说 | 亚洲第一网站男人都懂 | 久久久久免费看成人影片 | 国产一区二区三区精品视频 | 国产成人无码午夜视频在线观看 | 亚洲阿v天堂在线 | www国产亚洲精品久久网站 | 日日鲁鲁鲁夜夜爽爽狠狠 | 无码国产激情在线观看 | 日韩欧美中文字幕在线三区 | 乱码av麻豆丝袜熟女系列 | 国产高潮视频在线观看 | 日本爽爽爽爽爽爽在线观看免 | 伊人久久大香线蕉午夜 | 国产午夜手机精彩视频 | 国产人妻精品一区二区三区不卡 | 又大又黄又粗又爽的免费视频 | 精品国精品国产自在久国产87 | 成人试看120秒体验区 | 中文字幕av伊人av无码av | 色综合久久网 | 国产成人精品视频ⅴa片软件竹菊 | 真人与拘做受免费视频一 | 国产亚洲人成在线播放 | 国产成人综合在线女婷五月99播放 | 在线亚洲高清揄拍自拍一品区 | 牲欲强的熟妇农村老妇女 | 亚洲日韩av一区二区三区中文 | 国产农村乱对白刺激视频 | 午夜福利电影 | 国产精品怡红院永久免费 | 久久久久久av无码免费看大片 | 国产精品多人p群无码 | 久久久精品欧美一区二区免费 | 亚洲の无码国产の无码步美 | 在线a亚洲视频播放在线观看 | 国产av无码专区亚洲a∨毛片 | 成人无码精品一区二区三区 | 亚洲综合伊人久久大杳蕉 | 久热国产vs视频在线观看 | 国产熟妇高潮叫床视频播放 | 人妻少妇被猛烈进入中文字幕 | 亚洲国产精品一区二区第一页 | 亚洲日本va午夜在线电影 | 中文字幕人妻无码一区二区三区 | 国产精品久久久久久久9999 | 综合人妻久久一区二区精品 | 日本乱偷人妻中文字幕 | 国产激情艳情在线看视频 | 午夜福利试看120秒体验区 | 亚洲一区二区三区香蕉 | 无遮挡国产高潮视频免费观看 | 国产国产精品人在线视 | 高清国产亚洲精品自在久久 | 久久熟妇人妻午夜寂寞影院 | 日韩亚洲欧美中文高清在线 | 老司机亚洲精品影院无码 | 国产av剧情md精品麻豆 | 丰满少妇人妻久久久久久 | 特黄特色大片免费播放器图片 | 东京一本一道一二三区 | 狠狠色欧美亚洲狠狠色www | 中文字幕无码日韩专区 | 高清国产亚洲精品自在久久 | 十八禁视频网站在线观看 | 人妻有码中文字幕在线 | 中文字幕无码日韩欧毛 | 精品aⅴ一区二区三区 | 色婷婷香蕉在线一区二区 | 婷婷五月综合激情中文字幕 | 荫蒂被男人添的好舒服爽免费视频 | 国产成人无码专区 | 免费无码的av片在线观看 | 熟妇人妻激情偷爽文 | 亚洲成在人网站无码天堂 | 中文字幕无码热在线视频 | 国产乱人伦偷精品视频 | 四十如虎的丰满熟妇啪啪 | 精品国产乱码久久久久乱码 | 国产综合色产在线精品 | 天堂在线观看www | 欧美日韩一区二区免费视频 | 精品人妻中文字幕有码在线 | 日本熟妇乱子伦xxxx | 国产人妻久久精品二区三区老狼 | 久久天天躁狠狠躁夜夜免费观看 | 一本无码人妻在中文字幕免费 | 欧美人与禽zoz0性伦交 | 激情综合激情五月俺也去 | 亚洲七七久久桃花影院 | 亚洲精品一区二区三区四区五区 | 熟妇人妻无码xxx视频 | 欧美精品无码一区二区三区 | 亲嘴扒胸摸屁股激烈网站 | 77777熟女视频在线观看 а天堂中文在线官网 | 国产精品99久久精品爆乳 | 亚洲人成人无码网www国产 | 特大黑人娇小亚洲女 | 国产精品亚洲а∨无码播放麻豆 | 精品成在人线av无码免费看 | 人妻体内射精一区二区三四 | 兔费看少妇性l交大片免费 | 亚洲一区二区三区四区 | 国产做国产爱免费视频 | 久久精品无码一区二区三区 | 亚洲s码欧洲m码国产av | 国产精品丝袜黑色高跟鞋 | 国产亚洲欧美日韩亚洲中文色 | 少妇被粗大的猛进出69影院 | 国产乱码精品一品二品 | 久久亚洲日韩精品一区二区三区 | 骚片av蜜桃精品一区 | 香蕉久久久久久av成人 | 人妻少妇精品久久 | 亚洲の无码国产の无码步美 | 精品国产成人一区二区三区 | 美女毛片一区二区三区四区 | 精品无码一区二区三区的天堂 | 日韩视频 中文字幕 视频一区 | 东京热一精品无码av | 日韩在线不卡免费视频一区 | 亚洲а∨天堂久久精品2021 | 色综合久久网 | 无码人妻精品一区二区三区不卡 | 亚洲乱码中文字幕在线 | 日本精品久久久久中文字幕 | 中文字幕人妻无码一区二区三区 | 性色av无码免费一区二区三区 | 日本xxxx色视频在线观看免费 | 国产激情无码一区二区app | 1000部啪啪未满十八勿入下载 | 久久国语露脸国产精品电影 | 风流少妇按摩来高潮 | а√资源新版在线天堂 | 精品国产一区二区三区四区 | 国产亚洲精品精品国产亚洲综合 | 亚洲日韩一区二区 | 久久综合网欧美色妞网 | 亚洲人成人无码网www国产 | 亚洲日韩一区二区 | 偷窥村妇洗澡毛毛多 | 综合网日日天干夜夜久久 | 奇米影视7777久久精品 | 国产精品成人av在线观看 | www国产精品内射老师 | 特黄特色大片免费播放器图片 | 国产欧美精品一区二区三区 | 国产乱子伦视频在线播放 | 丁香花在线影院观看在线播放 | 爱做久久久久久 | 亚洲精品鲁一鲁一区二区三区 | 国产精品igao视频网 | 国产精品福利视频导航 | 丰满人妻精品国产99aⅴ | 国产精品资源一区二区 | 99er热精品视频 | 国产99久久精品一区二区 | 人妻尝试又大又粗久久 | 国产又粗又硬又大爽黄老大爷视 | 日韩av无码一区二区三区不卡 | 97久久超碰中文字幕 | 天天做天天爱天天爽综合网 | 人妻与老人中文字幕 | 国产免费久久精品国产传媒 | 熟妇激情内射com | 奇米影视7777久久精品人人爽 | 在线观看欧美一区二区三区 | 撕开奶罩揉吮奶头视频 | 99久久人妻精品免费二区 | 国产亚洲视频中文字幕97精品 | 国产人妻人伦精品1国产丝袜 | 欧美丰满熟妇xxxx | 欧美色就是色 | 国产精品久久久久久亚洲毛片 | 婷婷丁香六月激情综合啪 | 欧美自拍另类欧美综合图片区 | 日本大香伊一区二区三区 | 国产一区二区三区日韩精品 | 亚洲自偷精品视频自拍 | 欧美黑人性暴力猛交喷水 | 三级4级全黄60分钟 | 亚洲综合在线一区二区三区 | 377p欧洲日本亚洲大胆 | 色欲综合久久中文字幕网 | 成人欧美一区二区三区 | 中文字幕无线码免费人妻 | 大地资源网第二页免费观看 | 国语精品一区二区三区 | 国产精品香蕉在线观看 | 中文字幕无码人妻少妇免费 | 国产成人精品视频ⅴa片软件竹菊 | 久久综合给久久狠狠97色 | 国产亚洲精品久久久闺蜜 | 少妇性l交大片欧洲热妇乱xxx | 99精品国产综合久久久久五月天 | 成人亚洲精品久久久久软件 | 国产亚洲欧美日韩亚洲中文色 | 成人欧美一区二区三区黑人免费 | 中文字幕无线码 | 一区二区传媒有限公司 | 特黄特色大片免费播放器图片 | 精品国偷自产在线 | 又大又硬又黄的免费视频 | 日本一区二区更新不卡 | 午夜丰满少妇性开放视频 | 色婷婷综合激情综在线播放 | 亚洲中文字幕在线观看 | 蜜桃视频插满18在线观看 | 国产猛烈高潮尖叫视频免费 | 亚洲人成影院在线观看 | 欧美怡红院免费全部视频 | 欧美阿v高清资源不卡在线播放 | 荫蒂被男人添的好舒服爽免费视频 | 亚洲日韩一区二区 | 一个人看的视频www在线 | 日日天日日夜日日摸 | 人妻熟女一区 | 人人超人人超碰超国产 | 国产在热线精品视频 | 精品无码国产自产拍在线观看蜜 | 国内丰满熟女出轨videos | 国产情侣作爱视频免费观看 | 亚洲日本在线电影 | 荫蒂被男人添的好舒服爽免费视频 | 色老头在线一区二区三区 | 欧美色就是色 | 国产美女极度色诱视频www | 性生交片免费无码看人 | 97久久国产亚洲精品超碰热 | 国产精华av午夜在线观看 | 一个人看的视频www在线 | 牲交欧美兽交欧美 | 久久久久成人片免费观看蜜芽 | 男女性色大片免费网站 | 青春草在线视频免费观看 | 97夜夜澡人人爽人人喊中国片 | 亚洲国产欧美在线成人 | 日本大香伊一区二区三区 | 人人妻人人澡人人爽人人精品浪潮 | 日本在线高清不卡免费播放 | 捆绑白丝粉色jk震动捧喷白浆 | 东京一本一道一二三区 | 亚洲 欧美 激情 小说 另类 | 亚洲国产高清在线观看视频 | 精品aⅴ一区二区三区 | 久久99国产综合精品 | 少女韩国电视剧在线观看完整 | 亚洲 a v无 码免 费 成 人 a v | 日本一本二本三区免费 | 全球成人中文在线 | 国产香蕉尹人综合在线观看 | 无套内谢老熟女 | 任你躁国产自任一区二区三区 | 天天摸天天透天天添 | 蜜桃视频插满18在线观看 | 亚洲精品一区国产 | 成人片黄网站色大片免费观看 | 又大又硬又黄的免费视频 | 国产亚洲精品久久久久久大师 | 亚洲精品鲁一鲁一区二区三区 | 国产亚洲人成在线播放 | 日本肉体xxxx裸交 | 亚洲成av人影院在线观看 | 一本色道久久综合狠狠躁 | 亚洲精品久久久久中文第一幕 | 偷窥村妇洗澡毛毛多 | 少妇厨房愉情理9仑片视频 | 日日橹狠狠爱欧美视频 | 大地资源网第二页免费观看 | 精品无码av一区二区三区 | 国产乱人无码伦av在线a | 久久久av男人的天堂 | 午夜精品一区二区三区的区别 | 大胆欧美熟妇xx | 欧美熟妇另类久久久久久不卡 | 亚洲第一无码av无码专区 | 国产suv精品一区二区五 | 无码免费一区二区三区 | 亚洲中文字幕无码中字 | a在线观看免费网站大全 | 亚洲 日韩 欧美 成人 在线观看 | 一本大道久久东京热无码av | 久久久婷婷五月亚洲97号色 | 成人精品一区二区三区中文字幕 | 日本又色又爽又黄的a片18禁 | 大胆欧美熟妇xx | 日日噜噜噜噜夜夜爽亚洲精品 | 中文字幕亚洲情99在线 | 成人动漫在线观看 | 国产午夜精品一区二区三区嫩草 | 无码国模国产在线观看 | 日本欧美一区二区三区乱码 | 精品国产青草久久久久福利 | 人人妻人人澡人人爽精品欧美 | 一本无码人妻在中文字幕免费 | 久久精品国产一区二区三区 | 欧美精品在线观看 | 久久伊人色av天堂九九小黄鸭 | 六月丁香婷婷色狠狠久久 | 四虎国产精品一区二区 | 无码av岛国片在线播放 | 一个人看的视频www在线 | 人妻与老人中文字幕 | 国产精品亚洲а∨无码播放麻豆 | 国产午夜无码精品免费看 | 东京热无码av男人的天堂 | 久久久久久国产精品无码下载 | 欧美freesex黑人又粗又大 | 久久综合给久久狠狠97色 | 亚洲国产精品久久久天堂 | 内射白嫩少妇超碰 | 色婷婷综合激情综在线播放 | 国产偷自视频区视频 | 国内综合精品午夜久久资源 | 亚洲爆乳大丰满无码专区 | 无码吃奶揉捏奶头高潮视频 | 99麻豆久久久国产精品免费 | 2020久久超碰国产精品最新 | 国产国产精品人在线视 | 丰满人妻被黑人猛烈进入 | 国产亚洲精品久久久闺蜜 | 大肉大捧一进一出好爽视频 | 亚洲国产高清在线观看视频 | 亚洲欧美日韩成人高清在线一区 | 白嫩日本少妇做爰 | 人妻无码αv中文字幕久久琪琪布 | 又大又硬又黄的免费视频 | 玩弄少妇高潮ⅹxxxyw | 性色欲情网站iwww九文堂 | 伊人久久大香线焦av综合影院 | 久久国产精品偷任你爽任你 | 在线a亚洲视频播放在线观看 | 成人无码精品1区2区3区免费看 | 亚洲精品中文字幕久久久久 | 99精品视频在线观看免费 | 久久精品人人做人人综合 | 免费观看激色视频网站 | 少妇的肉体aa片免费 | 国产精品丝袜黑色高跟鞋 | 久久久亚洲欧洲日产国码αv | 亚洲va欧美va天堂v国产综合 | 亚洲欧美日韩国产精品一区二区 | 蜜臀av在线播放 久久综合激激的五月天 | 大地资源中文第3页 | 国产成人精品一区二区在线小狼 | 日韩成人一区二区三区在线观看 | 国产av一区二区三区最新精品 | 波多野结衣高清一区二区三区 | 国产精品va在线观看无码 | 午夜熟女插插xx免费视频 | 男女猛烈xx00免费视频试看 | 国产精品自产拍在线观看 | 十八禁视频网站在线观看 | 成人欧美一区二区三区黑人免费 | 免费无码午夜福利片69 | 无码人妻av免费一区二区三区 | 夜夜高潮次次欢爽av女 | 久久人人爽人人爽人人片ⅴ | 亚洲日本va中文字幕 | 国产无遮挡又黄又爽免费视频 | 在线а√天堂中文官网 | 领导边摸边吃奶边做爽在线观看 | 精品无人区无码乱码毛片国产 | 激情亚洲一区国产精品 | 亚洲熟悉妇女xxx妇女av | 领导边摸边吃奶边做爽在线观看 | 欧美日韩一区二区三区自拍 | 成人影院yy111111在线观看 | 欧美人与禽猛交狂配 | 亚洲人成影院在线无码按摩店 | 人人妻人人澡人人爽欧美精品 | 西西人体www44rt大胆高清 | 又紧又大又爽精品一区二区 | 亚洲国产精品无码一区二区三区 | 一个人看的视频www在线 | 少妇人妻av毛片在线看 | 麻豆精产国品 | 麻豆精品国产精华精华液好用吗 | 狠狠色欧美亚洲狠狠色www | 伊在人天堂亚洲香蕉精品区 | 亚洲精品一区二区三区在线 | 日本熟妇人妻xxxxx人hd | 国产av无码专区亚洲a∨毛片 | 国产suv精品一区二区五 | 动漫av网站免费观看 | 亚洲精品中文字幕乱码 | 国产区女主播在线观看 | 亚洲精品国产品国语在线观看 | 久久亚洲a片com人成 | 日本大乳高潮视频在线观看 | 国产明星裸体无码xxxx视频 | 2020久久香蕉国产线看观看 | 国产艳妇av在线观看果冻传媒 | 欧美精品一区二区精品久久 | 无码av最新清无码专区吞精 | 一本久道久久综合婷婷五月 | 亚洲成av人片在线观看无码不卡 | 夜夜躁日日躁狠狠久久av | 伊在人天堂亚洲香蕉精品区 | 亚洲成a人片在线观看无码 | 牲欲强的熟妇农村老妇女 | 日韩精品一区二区av在线 | 久久天天躁狠狠躁夜夜免费观看 | www国产亚洲精品久久久日本 | 精品熟女少妇av免费观看 | 76少妇精品导航 | 久久久久久久久蜜桃 | 好爽又高潮了毛片免费下载 | 久久天天躁狠狠躁夜夜免费观看 | 亚洲乱码日产精品bd | 人妻少妇精品无码专区动漫 | a国产一区二区免费入口 | 扒开双腿吃奶呻吟做受视频 | 久久久久久国产精品无码下载 | 欧美老熟妇乱xxxxx | 国产成人综合色在线观看网站 | 六十路熟妇乱子伦 | 黑人大群体交免费视频 | 一本色道久久综合狠狠躁 | 久久久久久国产精品无码下载 | 国产一区二区三区精品视频 | 四虎国产精品一区二区 | 在线看片无码永久免费视频 | 国产成人精品三级麻豆 | 久久久久久久女国产乱让韩 | 人妻少妇精品无码专区动漫 | 色情久久久av熟女人妻网站 | 日日碰狠狠躁久久躁蜜桃 | 国产人妻精品一区二区三区不卡 | 国产亚洲精品久久久久久大师 | 国产乱人伦av在线无码 | 377p欧洲日本亚洲大胆 | 樱花草在线播放免费中文 | 国产一区二区三区影院 | 性开放的女人aaa片 | 久久久中文字幕日本无吗 | 久久国产自偷自偷免费一区调 | 午夜精品一区二区三区在线观看 | 日本乱人伦片中文三区 | 国产在线aaa片一区二区99 | 国产精品无套呻吟在线 | 国产免费无码一区二区视频 | 国产成人综合色在线观看网站 | 久久综合给合久久狠狠狠97色 | 国产精品久久久午夜夜伦鲁鲁 | 97夜夜澡人人爽人人喊中国片 | 伊在人天堂亚洲香蕉精品区 | 夜夜躁日日躁狠狠久久av | 欧美日韩在线亚洲综合国产人 | 国产精品无码mv在线观看 | 无码av岛国片在线播放 | 国产香蕉97碰碰久久人人 | 国产凸凹视频一区二区 | 免费人成在线观看网站 | 久久精品国产日本波多野结衣 | 国产熟妇另类久久久久 | 亚洲毛片av日韩av无码 | 成熟妇人a片免费看网站 | 大屁股大乳丰满人妻 | 天天躁夜夜躁狠狠是什么心态 | 欧美人与禽猛交狂配 | 无码中文字幕色专区 | 国产亚洲精品久久久久久久久动漫 | 国产偷抇久久精品a片69 | 亚洲综合另类小说色区 | 学生妹亚洲一区二区 | 久9re热视频这里只有精品 | 亚洲中文无码av永久不收费 | 国产精品美女久久久久av爽李琼 | 日本一区二区三区免费高清 | 76少妇精品导航 | 在线成人www免费观看视频 | 九九综合va免费看 | 日本一卡二卡不卡视频查询 | 人妻有码中文字幕在线 | 爆乳一区二区三区无码 | 久久精品人妻少妇一区二区三区 | 性啪啪chinese东北女人 | 天堂а√在线地址中文在线 | 国产绳艺sm调教室论坛 | 丁香啪啪综合成人亚洲 | 白嫩日本少妇做爰 | 人妻人人添人妻人人爱 | 中文字幕色婷婷在线视频 | 久久久久久国产精品无码下载 | 久久人妻内射无码一区三区 | 日韩精品乱码av一区二区 | 欧美亚洲日韩国产人成在线播放 | 丝袜 中出 制服 人妻 美腿 | 亚洲无人区午夜福利码高清完整版 | 久久久久成人精品免费播放动漫 | 人人妻人人藻人人爽欧美一区 | 久久精品国产亚洲精品 | 日本免费一区二区三区最新 | 久久人人爽人人爽人人片av高清 | 中国大陆精品视频xxxx | 国产亚av手机在线观看 | 亚洲码国产精品高潮在线 | 亚洲熟熟妇xxxx | 久久久久成人精品免费播放动漫 | 无码人妻丰满熟妇区五十路百度 | 久久这里只有精品视频9 | 亚洲午夜无码久久 | 东京热一精品无码av | 欧美xxxx黑人又粗又长 | 亚洲综合色区中文字幕 | 全黄性性激高免费视频 | 国产精品福利视频导航 | √8天堂资源地址中文在线 | 中文字幕无码热在线视频 | 男女作爱免费网站 | 人人超人人超碰超国产 | 欧美三级a做爰在线观看 | 国产97人人超碰caoprom | 国产精品久久久一区二区三区 | 天天摸天天碰天天添 | 亚洲aⅴ无码成人网站国产app | 亚洲精品一区二区三区大桥未久 | 国产内射老熟女aaaa | 亚洲日韩av一区二区三区四区 | 久久亚洲日韩精品一区二区三区 | 色综合久久中文娱乐网 | 在线看片无码永久免费视频 | 久久熟妇人妻午夜寂寞影院 | 荡女精品导航 | 日韩成人一区二区三区在线观看 | 老司机亚洲精品影院 | 国产精品亚洲综合色区韩国 | 日本一卡2卡3卡四卡精品网站 | 国产精品久久久久无码av色戒 | 中文字幕av日韩精品一区二区 | 在线观看国产午夜福利片 | 中文字幕av伊人av无码av | 久久亚洲中文字幕无码 | 亚洲a无码综合a国产av中文 | 国产成人综合色在线观看网站 | 久久亚洲日韩精品一区二区三区 | 欧美精品国产综合久久 | 美女张开腿让人桶 | 性欧美videos高清精品 | 77777熟女视频在线观看 а天堂中文在线官网 | 131美女爱做视频 | 无码人妻丰满熟妇区五十路百度 | 男女作爱免费网站 | 国产97色在线 | 免 | 我要看www免费看插插视频 | 久9re热视频这里只有精品 | 日日碰狠狠躁久久躁蜜桃 | 亚洲男人av天堂午夜在 | 国产乱人偷精品人妻a片 | 无人区乱码一区二区三区 | 欧美兽交xxxx×视频 | 最近中文2019字幕第二页 | 久久99精品久久久久婷婷 | 中文字幕无码日韩专区 | 伊人久久大香线蕉亚洲 | 亚洲人成网站色7799 | 精品人妻中文字幕有码在线 | 黑人玩弄人妻中文在线 | 免费看男女做好爽好硬视频 | 欧美 丝袜 自拍 制服 另类 | 精品国精品国产自在久国产87 | 一本色道久久综合狠狠躁 | 色婷婷综合中文久久一本 | 99久久精品日本一区二区免费 | 国产精品久久久 | 青草青草久热国产精品 | 最新国产乱人伦偷精品免费网站 | 日韩成人一区二区三区在线观看 | 少妇太爽了在线观看 | 18黄暴禁片在线观看 | 欧洲精品码一区二区三区免费看 | 55夜色66夜色国产精品视频 | 久久国产精品_国产精品 | 日本免费一区二区三区最新 | 国产亚洲精品久久久闺蜜 | 在线播放亚洲第一字幕 | 日韩精品a片一区二区三区妖精 | 玩弄人妻少妇500系列视频 | 国产精品久久福利网站 | 国产精品久久福利网站 | 久久99精品久久久久久 | 玩弄人妻少妇500系列视频 | 色一情一乱一伦 | 亚洲精品一区三区三区在线观看 | 青青草原综合久久大伊人精品 | 未满小14洗澡无码视频网站 | 久久天天躁狠狠躁夜夜免费观看 | 天天躁日日躁狠狠躁免费麻豆 | 久热国产vs视频在线观看 | 国产两女互慰高潮视频在线观看 | 高中生自慰www网站 | 高清国产亚洲精品自在久久 | 成人精品天堂一区二区三区 | 国产一区二区三区四区五区加勒比 | 日韩无码专区 | 日本大乳高潮视频在线观看 | 高潮毛片无遮挡高清免费 | 鲁鲁鲁爽爽爽在线视频观看 | 国内精品一区二区三区不卡 | 亚洲欧美日韩成人高清在线一区 | 成熟人妻av无码专区 | 国产福利视频一区二区 | 无码任你躁久久久久久久 | 久久亚洲精品中文字幕无男同 | 亚洲无人区一区二区三区 | 精品无人区无码乱码毛片国产 | 国内精品人妻无码久久久影院蜜桃 | 装睡被陌生人摸出水好爽 | 国产成人无码av片在线观看不卡 | a在线观看免费网站大全 | 大色综合色综合网站 | 久久天天躁狠狠躁夜夜免费观看 | 国产乱人伦av在线无码 | 精品人妻人人做人人爽夜夜爽 | 性生交大片免费看女人按摩摩 | 国产精品成人av在线观看 | 一本无码人妻在中文字幕免费 | 成人免费无码大片a毛片 | 国产网红无码精品视频 | 18无码粉嫩小泬无套在线观看 | 中文字幕乱码亚洲无线三区 | 欧美变态另类xxxx | 国产精品亚洲五月天高清 | 乱人伦人妻中文字幕无码久久网 | 国产超级va在线观看视频 | 76少妇精品导航 | 综合网日日天干夜夜久久 | 蜜臀aⅴ国产精品久久久国产老师 | 人妻少妇被猛烈进入中文字幕 | 久久亚洲精品中文字幕无男同 | 亚洲国产精品毛片av不卡在线 | 国产明星裸体无码xxxx视频 | 国产成人无码av在线影院 | 一本大道伊人av久久综合 | 无码精品人妻一区二区三区av | 丰满少妇人妻久久久久久 | 亚洲色大成网站www国产 | 一个人看的www免费视频在线观看 | 亚洲成熟女人毛毛耸耸多 | 欧美日韩亚洲国产精品 | 四虎国产精品一区二区 | 国产成人无码一二三区视频 |