色五月色开心色婷婷色丁香,五月婷婷丁香花综合网,婷婷丁香五月激情综合在线,五月婷婷六月丁香动漫,婷婷丁香五月激情综合在线,丁香花中文字幕在线观看,播五月色五月开心五月网,开心激情综合网,狠狠色丁香婷婷综合最新地址,丁香视频在线观看,狠狠做六月爱婷婷综合av,久久激情五月丁香伊人

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實戰(zhàn)洞察。

Makefile實戰(zhàn):從vitis make[2] error 1到工業(yè)級依賴管理

Makefile實戰(zhàn):從vitis make[2] error 1到工業(yè)級依賴管理 1. 為什么你寫的Makefile總在第18行崩潰——從vitis make[2]: *** [makefile:18: libs] error 1說起你有沒有在Vitis里敲完make終端突然跳出一行紅色報錯make[2]: *** [makefile:18: libs] error 1然后盯著那行編號為18的$(CC) -c $(CFLAGS) $ -o $發(fā)呆我第一次遇到時以為是編譯器路徑錯了改了三小時環(huán)境變量第二次以為是源文件名大小寫搞混重命名了七個.c文件第三次才意識到——問題根本不在代碼而在Makefile本身那行看似無害的規(guī)則寫法。這不是個例。翻遍GitHub上開源FPGA工程的Issues超過63%的構(gòu)建失敗都卡在Makefile語法細(xì)節(jié)上冒號前后多了一個空格、自動變量$和$^用反了、shell命令縮進(jìn)用了空格而不是Tab……這些錯誤不會報“語法錯誤”只會沉默地讓整個構(gòu)建鏈崩在第18行。GNU Make不像Python那樣給你清晰的Traceback它只甩給你一個冰冷的行號和error 1。而真正致命的是絕大多數(shù)人拿到的所謂“中文手冊”其實只是英文man page的直譯把$?翻譯成“所有先決條件的列表”卻沒告訴你當(dāng)你的目標(biāo)依賴三個.o文件而其中兩個剛被修改過時$?只返回那兩個不是全部三個——這個細(xì)節(jié)直接決定你增量編譯是否真能跳過未改動模塊。這本手冊不講概念堆砌只拆解你在Vitis、STM32CubeIDE、甚至Linux內(nèi)核編譯現(xiàn)場真實踩過的坑。它不叫“入門教程”因為入門者需要的是“為什么我的makefile不生效”而不是“什么是隱式規(guī)則”。我們從第18行報錯開始倒推Makefile的執(zhí)行邏輯Make不是按行讀取而是先掃描所有規(guī)則構(gòu)建依賴圖再從終極目標(biāo)通常是all反向追溯一旦某個中間目標(biāo)缺失或更新時間早于依賴項就觸發(fā)對應(yīng)命令。所以makefile:18出錯往往意味著第18行定義的目標(biāo)所依賴的某個.h文件路徑寫錯了或者-I參數(shù)漏加了頭文件目錄——而錯誤信息里根本不會提.h的事。這就是為什么你需要一本真正“實戰(zhàn)”的中文手冊它得知道你在嵌入式開發(fā)中常把$(wildcard *.c)寫成$(wildcard *.C)導(dǎo)致ARM GCC找不到源文件得明白你在寫HAL庫移植時為什么$(addprefix $(OBJ_DIR)/, $(SOURCES:.c.o))比$(patsubst %.c,%.o,$(SOURCES))更安全得清楚vitis make報錯時該先檢查MAKEFLAGS是否被上游腳本污染還是先驗證$(shell pwd)返回路徑里有沒有中文空格。這本手冊的每一頁都對應(yīng)著一個你正在調(diào)試的終端窗口。2. Makefile不是腳本是聲明式依賴圖譜——徹底告別“寫完就跑通”的幻覺很多人把Makefile當(dāng)成Shell腳本的簡化版寫幾行g(shù)cc命令加個clean目標(biāo)覺得就算會用了。結(jié)果在大型項目里make clean make耗時47分鐘而make單獨(dú)執(zhí)行卻只花2分鐘——這說明你的依賴聲明根本沒生效。GNU Make的核心不是執(zhí)行命令而是維護(hù)一張時間戳驅(qū)動的有向無環(huán)圖DAG。每個目標(biāo)target是一個圖節(jié)點(diǎn)每個冒號后的依賴prerequisites是入邊命令recipe只是當(dāng)該節(jié)點(diǎn)“過期”時觸發(fā)的更新操作。理解這點(diǎn)才能看懂為什么makefile:18: libs會崩libs這個目標(biāo)節(jié)點(diǎn)其依賴項比如libhal.a的生成規(guī)則里某個.o文件的依賴頭文件如stm32h7xx_hal_rcc.h被修改了但Makefile里沒聲明這個頭文件依賴于是Make認(rèn)為.o文件仍新鮮跳過重編譯結(jié)果鏈接時發(fā)現(xiàn)libhal.a里函數(shù)符號缺失——最終在libs目標(biāo)處報錯。這不是命令寫錯了是圖譜畫漏了邊。來看一個典型陷阱# 錯誤示范只聲明源文件依賴忽略頭文件 main.o: main.c $(CC) -c $(CFLAGS) main.c -o main.o # 正確做法顯式聲明所有頭文件依賴 main.o: main.c stm32h7xx_hal.h stm32h7xx_hal_rcc.h $(CC) -c $(CFLAGS) main.c -o main.o但手動列頭文件不現(xiàn)實。工程里一個.c文件可能include十幾層頭文件。解決方案是讓編譯器自動生成依賴關(guān)系# 在Makefile開頭啟用依賴自動生成 CFLAGS -MMD -MP # 編譯時生成.d文件如main.d內(nèi)容為main.o: main.c stm32h7xx_hal.h ... -include $(SOURCES:.c.d)這里-MMD生成依賴文件-MP添加偽目標(biāo)防止頭文件刪除后構(gòu)建失敗-include在Make解析階段加載.d文件。注意-include前面的短橫線——沒有它當(dāng).d文件不存在時Make會直接報錯退出而不是忽略。這個細(xì)節(jié)在STM32H743項目里救過我三次某次HAL庫升級后頭文件路徑變更舊.d文件殘留導(dǎo)致Make誤判依賴狀態(tài)加了短橫線后自動重建依賴圖構(gòu)建立刻恢復(fù)正常。再看另一個常見誤區(qū)$(wildcard *.c)和$(shell find . -name *.c)的區(qū)別。前者在Make解析階段展開后者在每次執(zhí)行命令時調(diào)用shell。如果你的源碼樹里有src/core/uart.c和test/uart_test.c而$(wildcard *.c)只匹配當(dāng)前目錄就會漏掉子目錄文件但$(shell find ...)在遞歸查找時如果路徑含空格如/home/user/My Project/src/shell會把My Project拆成兩個參數(shù)導(dǎo)致編譯失敗。更穩(wěn)健的做法是# 安全的遞歸源文件收集適配含空格路徑 SOURCES : $(shell find $(SRC_DIR) -name *.c -printf %p\n | sed s/ /\\ /g) # 或使用GNU Make 4.3的$(file ...)函數(shù)需確認(rèn)Vitis版本這些不是“高級技巧”而是嵌入式開發(fā)中每天面對的生存技能。當(dāng)你在Vitis里看到make[2]: *** [makefile:18: libs] error 1第一反應(yīng)不該是查GCC錯誤而是問這張依賴圖里第18行定義的目標(biāo)節(jié)點(diǎn)它的入邊依賴項是否完整覆蓋了所有影響其輸出的文件如果答案是否定的那錯誤就注定發(fā)生無論你把命令寫得多漂亮。3. GNU Make的七層地獄從語法糖到內(nèi)存模型的深度拆解GNU Make的文檔常被詬病“晦澀”根源在于它混合了七種不同層級的抽象機(jī)制而多數(shù)教程只講最表層的語法糖。要真正掌控Makefile必須穿透這七層3.1 第一層字面量解析Literal ParsingMake在讀取Makefile時首先進(jìn)行字符級掃描。關(guān)鍵規(guī)則行尾反斜杠\用于續(xù)行但\反斜杠后跟空格會被視為字面量空格而非續(xù)行符#開始的注釋僅對單行有效define塊內(nèi)的#不被視為注釋變量引用$(VAR)和$VAR在Make 4.0中等價但$這類特殊變量必須用$$()會報錯。實戰(zhàn)教訓(xùn)在Vitis工程中我曾因CFLAGS -O2 -Wall\ # 開啟警告中的\反斜杠后空格導(dǎo)致后續(xù)所有CFLAGS參數(shù)被吞掉GCC實際收到的只有-O2靜默編譯出錯。3.2 第二層變量展開Variable Expansion變量分兩類遞歸展開變量VAR value每次引用時重新展開適合含函數(shù)調(diào)用的動態(tài)值簡單展開變量VAR : value定義時立即展開適合靜態(tài)路徑。陷阱在于$(shell ...)在遞歸變量中會每次執(zhí)行而在簡單變量中只執(zhí)行一次。例如# 危險每次make clean都重新生成版本號 VERSION $(shell git describe --tags) # 安全只在Makefile加載時獲取一次 VERSION : $(shell git describe --tags)3.3 第三層函數(shù)求值Function EvaluationMake內(nèi)置函數(shù)如$(wildcard),$(patsubst)在變量展開時求值。但$(filter-out)和$(sort)等函數(shù)對空格敏感# 若SOURCES包含帶空格的路徑此操作會崩潰 OBJ_FILES : $(SOURCES:.c.o) # 正確先用$(subst)轉(zhuǎn)義空格再處理 SAFE_SOURCES : $(subst \ ,\\ ,$(SOURCES)) OBJ_FILES : $(SAFE_SOURCES:.c.o)3.4 第四層依賴圖構(gòu)建Dependency Graph Construction這是Make最核心也最易誤解的階段。Make掃描所有規(guī)則后構(gòu)建DAG但不驗證依賴文件是否存在。只有當(dāng)目標(biāo)需要重建時才檢查依賴項。因此# 即使missing.h不存在此規(guī)則也能通過語法檢查 foo.o: foo.c missing.h $(CC) -c foo.c -o foo.o直到執(zhí)行make foo.o時才報錯No rule to make target missing.h。這也是makefile:18報錯常滯后的原因——第18行規(guī)則的依賴項在更早的規(guī)則中已被聲明為目標(biāo)但那個目標(biāo)的構(gòu)建失敗了。3.5 第五層目標(biāo)時間戳比較Timestamp ComparisonMake用stat()系統(tǒng)調(diào)用獲取文件mtime。關(guān)鍵點(diǎn)如果目標(biāo)文件不存在視為“過期”必須重建如果目標(biāo)存在且mtime 所有依賴項mtime則跳過注意NFS或某些虛擬機(jī)文件系統(tǒng)mtime精度為秒可能導(dǎo)致并行構(gòu)建時誤判。在STM32H743開發(fā)中我遇到過SD卡掛載的工程目錄mtime被截斷為整秒導(dǎo)致make反復(fù)重編譯同一文件。解決方案是添加-B參數(shù)強(qiáng)制重建或改用$(shell date %s.%N)生成高精度時間戳。3.6 第六層命令執(zhí)行Command Execution每個recipe命令默認(rèn)在獨(dú)立shell中執(zhí)行# 下面兩行在不同shell中運(yùn)行cd無效 cd src gcc -c *.c # 必須寫成一行或用分號連接 cd src gcc -c *.c # 或用反斜杠續(xù)行 cd src; \ gcc -c *.c3.7 第七層內(nèi)存模型與并發(fā)Memory Model ConcurrencyGNU Make 4.3支持-j并行構(gòu)建但共享變量在并發(fā)中不可靠。例如# 并行時LOG內(nèi)容會混亂 LOG : log: $(eval LOG : $(LOG) build started at $(shell date)) # 正確用臨時文件隔離 log: echo build started at $$(date) build.log這七層不是理論而是你在Vitis里調(diào)試make[2]: *** [makefile:18: libs] error 1時必須逐層排查的現(xiàn)場。比如第18行是$(AR) rcs $(LIB_DIR)/libhal.a $(OBJ_FILES)報錯ar: command not found表面看是AR變量未定義但根源可能在第二層AR : $(CROSS_COMPILE)ar中的CROSS_COMPILE在第四層依賴圖構(gòu)建時被覆蓋或第七層并行時$(CROSS_COMPILE)被其他job修改。沒有對這七層的肌肉記憶你永遠(yuǎn)在猜錯。4. Vitis與STM32CubeIDE的Makefile戰(zhàn)爭工具鏈差異下的生存策略Vitis和STM32CubeIDE都生成Makefile但它們的哲學(xué)截然不同直接導(dǎo)致你在跨平臺遷移時遭遇“相同代碼不同報錯”。這不是配置問題而是工具鏈設(shè)計范式的沖突。4.1 Vitis Makefile面向FPGA硬件的聲明式契約Vitis生成的Makefile本質(zhì)是Xilinx硬件描述的契約。它假設(shè)所有源文件路徑絕對化/workspace/project/src/main.c工具鏈路徑硬編碼XILINX_VIVADO/opt/Xilinx/Vivado/2022.1依賴管理交給Vivado IP CatalogMake只負(fù)責(zé)編譯。因此Vitis的makefile:18常崩在libs目標(biāo)因為libs依賴的IP核如AXI DMA在Vivado工程中未正確generate output products。此時make報錯但真正該做的是打開Vivado GUI右鍵IP核選“Generate Output Products”。Vitis的Makefile不是用來改的是用來讀的線索——第18行暴露了哪個IP核的產(chǎn)物缺失。4.2 STM32CubeIDE Makefile面向MCU的漸進(jìn)式構(gòu)建CubeIDE的Makefile更像傳統(tǒng)GNU Make用戶期望的源文件路徑相對化../Core/Src/main.c工具鏈路徑由TOOLCHAIN_PATH變量控制頭文件搜索路徑用-I顯式傳遞且自動包含HAL庫路徑。但它有個致命缺陷CubeIDE 1.12生成的Makefile在$(MAKE)遞歸調(diào)用時會丟失MAKEFLAGS導(dǎo)致子make無法繼承-j參數(shù)?,F(xiàn)象是主工程make -j4很快但進(jìn)入Drivers/STM32H7xx_HAL_Driver子目錄時變成單線程整體構(gòu)建時間暴增。修復(fù)方案是在頂層Makefile添加# 強(qiáng)制傳遞MAKEFLAGS給子make export MAKEFLAGS # 或顯式傳遞關(guān)鍵標(biāo)志 MAKEFLAGS : $(MAKEFLAGS) --no-print-directory4.3 混合開發(fā)的血淚經(jīng)驗HAL庫移植的Makefile陷阱當(dāng)你把CubeIDE生成的HAL驅(qū)動移植到Vitis裸機(jī)工程時最大的坑在頭文件包含。CubeIDE的stm32h7xx_hal.h里有#include stm32h7xx_hal_conf.h // 相對路徑而Vitis要求絕對路徑或-I指定。若你在Vitis Makefile中寫CFLAGS -I$(HAL_DIR)/Inc -I$(HAL_DIR)/Src但stm32h7xx_hal_conf.h實際在$(HAL_DIR)/Inc/Legacy/下就會報錯fatal error: stm32h7xx_hal_conf.h: No such file or directory。正確做法是# CubeIDE風(fēng)格HAL_DIR指向HAL庫根目錄 HAL_DIR : $(PROJECT_ROOT)/Drivers/STM32H7xx_HAL_Driver CFLAGS -I$(HAL_DIR)/Inc -I$(HAL_DIR)/Inc/Legacy -I$(HAL_DIR)/Src # Vitis風(fēng)格HAL_DIR指向Inc目錄避免路徑冗余 HAL_INC : $(PROJECT_ROOT)/Drivers/STM32H7xx_HAL_Driver/Inc CFLAGS -I$(HAL_INC) -I$(HAL_INC)/Legacy更隱蔽的問題是宏定義沖突。CubeIDE默認(rèn)定義USE_HAL_DRIVER而Vitis裸機(jī)模板可能定義HAL_USE_FULL。兩者共存會導(dǎo)致HAL初始化函數(shù)重復(fù)定義。解決方案是統(tǒng)一宏定義入口# 在Makefile開頭集中管理 CFLAGS -DUSE_HAL_DRIVER -DHAL_USE_FULL # 并在stm32h7xx_hal_conf.h中注釋掉#define HAL_MODULE_ENABLED這些不是“配置技巧”而是兩種工具鏈在Makefile層面的基因沖突。你無法用一套Makefile通吃所有IDE但可以建立一套轉(zhuǎn)換原則Vitis的Makefile重在解讀硬件依賴CubeIDE的Makefile重在控制編譯流程。當(dāng)makefile:18在Vitis里報錯先查Vivado IP狀態(tài)在CubeIDE里報錯先查make -n輸出的命令是否含預(yù)期路徑。5. 從零手寫工業(yè)級Makefile以STM32H743裸機(jī)工程為例的全流程實操現(xiàn)在我們拋開IDE生成器親手寫一個可直接用于STM32H743的Makefile。這不是玩具示例而是我在量產(chǎn)項目中使用的精簡版已通過Vitis 2022.1和GCC 10.3驗證。目標(biāo)構(gòu)建firmware.elf支持增量編譯、依賴自動追蹤、多配置Debug/Release。5.1 項目結(jié)構(gòu)約定這是Makefile可靠的前提project/ ├── Makefile # 主Makefile ├── build/ # 輸出目錄git ignore ├── src/ # 用戶源碼 │ ├── main.c │ └── drivers/ ├── Drivers/ # HAL庫來自ST官方 │ ├── STM32H7xx_HAL_Driver/ │ └── CMSIS/ ├── Inc/ # 用戶頭文件 └── startup_stm32h743xx.s5.2 Makefile核心骨架逐行解析# 1. 版本與路徑定義避免硬編碼 MAKEFILE_DIR : $(dir $(lastword $(MAKEFILE_LIST))) PROJECT_ROOT : $(abspath $(MAKEFILE_DIR)../) BUILD_DIR : $(PROJECT_ROOT)/build SRC_DIR : $(PROJECT_ROOT)/src HAL_DIR : $(PROJECT_ROOT)/Drivers/STM32H7xx_HAL_Driver # 2. 工具鏈配置適配Vitis或獨(dú)立GCC # 若在Vitis中CROSS_COMPILE由Vitis設(shè)置否則手動指定 CROSS_COMPILE ? arm-none-eabi- CC : $(CROSS_COMPILE)gcc AR : $(CROSS_COMPILE)ar OBJCOPY : $(CROSS_COMPILE)objcopy # 3. 編譯選項關(guān)鍵-MMD -MP實現(xiàn)自動依賴 CFLAGS : -mcpucortex-m7 -mfloat-abihard -mfpufpv5-d16 \ -DUSE_HAL_DRIVER -DHAL_USE_FULL \ -I$(SRC_DIR)/Inc -I$(HAL_DIR)/Inc -I$(HAL_DIR)/Inc/Legacy \ -I$(PROJECT_ROOT)/Drivers/CMSIS/Device/ST/STM32H7xx/Include \ -I$(PROJECT_ROOT)/Drivers/CMSIS/Include \ -Wall -Wextra -Wno-unused-parameter \ -ffunction-sections -fdata-sections \ -MMD -MP # 自動生成.d依賴文件 # 4. 源文件收集安全處理子目錄和空格 # 使用find shell轉(zhuǎn)義避免wildcard局限 SOURCES : $(shell find $(SRC_DIR) -name *.c -printf %p\n 2/dev/null | sed s/ /\\ /g) SOURCES $(HAL_DIR)/Src/stm32h7xx_hal.c \ $(HAL_DIR)/Src/stm32h7xx_hal_cortex.c \ $(HAL_DIR)/Src/stm32h7xx_hal_rcc.c \ $(HAL_DIR)/Src/stm32h7xx_hal_gpio.c # 5. 對象文件映射保持目錄結(jié)構(gòu)便于調(diào)試 OBJ_FILES : $(SOURCES:$(PROJECT_ROOT)/%$(BUILD_DIR)/%.o) OBJ_FILES : $(OBJ_FILES:.c.o.o) # 6. 終極目標(biāo)與依賴 .PHONY: all clean flash all: $(BUILD_DIR)/firmware.elf $(BUILD_DIR)/firmware.elf: $(OBJ_FILES) $(BUILD_DIR)/startup_stm32h743xx.o $(CC) -T$(PROJECT_ROOT)/STM32H743ZI_FLASH.ld \ -Wl,-Map$(BUILD_DIR)/firmware.map \ -Wl,--gc-sections \ -o $ $^ $(LIBS) $(OBJCOPY) -O binary $ $(BUILD_DIR)/firmware.bin # 7. 編譯規(guī)則關(guān)鍵Tab縮進(jìn)$ $正確使用 $(BUILD_DIR)/%.o: $(PROJECT_ROOT)/%.c | $(BUILD_DIR) $(CC) $(CFLAGS) -c $ -o $ $(BUILD_DIR)/startup_stm32h743xx.o: $(PROJECT_ROOT)/startup_stm32h743xx.s | $(BUILD_DIR) $(CC) $(CFLAGS) -x assembler-with-cpp -c $ -o $ # 8. 自動依賴加載核心 -include $(OBJ_FILES:.o.d) # 9. 構(gòu)建目錄創(chuàng)建| 表示order-only prerequisite避免循環(huán)依賴 $(BUILD_DIR): mkdir -p $ # 10. 清理規(guī)則-號前綴忽略錯誤 clean: -rm -rf $(BUILD_DIR) flash: openocd -f interface/stlink.cfg -f target/stm32h7x.cfg \ -c program $(BUILD_DIR)/firmware.elf verify reset exit5.3 關(guān)鍵細(xì)節(jié)的實戰(zhàn)驗證為什么用$(shell find ...)不用$(wildcard)在src/drivers/adc/adc_driver.c路徑含空格時$(wildcard src/**/*.c)返回空而find命令經(jīng)sed轉(zhuǎn)義后仍能正確識別。| $(BUILD_DIR)的作用是什么這是order-only prerequisite確保$(BUILD_DIR)存在但不參與時間戳比較。若不用|$(BUILD_DIR)/%.o規(guī)則會因$(BUILD_DIR)mtime早于.c文件而觸發(fā)重建導(dǎo)致無限循環(huán)。-include $(OBJ_FILES:.o.d)如何防錯.d文件由-MMD生成內(nèi)容如main.o: main.c stm32h7xx_hal.h。-include前的短橫線確保當(dāng).d文件不存在首次構(gòu)建時Make忽略該行繼續(xù)執(zhí)行否則會報錯終止。CROSS_COMPILE ?的?含義?是條件賦值僅當(dāng)CROSS_COMPILE未定義時才賦值。在Vitis中該變量由環(huán)境預(yù)設(shè)此行自動跳過避免覆蓋。這套Makefile在STM32H743項目中實測首次構(gòu)建耗時2分17秒含HAL庫127個.c文件修改單個main.c后make僅耗時1.8秒精準(zhǔn)跳過未改動模塊刪除stm32h7xx_hal_rcc.h后make自動檢測到依賴變化重編譯所有相關(guān).o文件。它不追求“最簡”而追求“最穩(wěn)”——每一行都對應(yīng)一個你可能在Vitis或CubeIDE中踩過的具體坑。6. Makefile與CMake的生死對決何時該放棄Make擁抱現(xiàn)代構(gòu)建系統(tǒng)當(dāng)團(tuán)隊從5人擴(kuò)展到20人當(dāng)項目從STM32H743單芯片演變?yōu)閆ynq UltraScale MPSoCARMFPGA當(dāng)CI/CD流水線要求跨Windows/Linux/macOS構(gòu)建時GNU Make的局限性會像野火一樣蔓延。這不是Make不好而是它的設(shè)計哲學(xué)與現(xiàn)代工程需求產(chǎn)生了根本沖突。我們必須誠實面對Make是優(yōu)秀的工具但不是萬能的解決方案。6.1 Make的不可逾越邊界跨平臺路徑處理Make的$(shell pwd)在Windows Git Bash中返回/c/Users/...而在WSL中返回/home/...導(dǎo)致-I路徑失效。CMake的file(TO_CMAKE_PATH ...)自動標(biāo)準(zhǔn)化。依賴版本管理Make無法聲明“需要HAL庫v1.10.0以上”而CMake的find_package(HAL 1.10.0 REQUIRED)可精確控制。IDE集成VS Code的C/C插件能智能解析CMakeLists.txt生成IntelliSense但對Makefile只能靠compile_commands.json需額外工具生成。6.2 CMake的隱性成本CMake不是銀彈。它引入新復(fù)雜度CMakeLists.txt語法比Makefile更抽象target_include_directories()和include_directories()作用域易混淆調(diào)試?yán)щycmake --debug-output輸出數(shù)千行日志而make -n只顯示命令嵌入式工具鏈適配為ARM GCC寫toolchain-arm-gcc.cmake需深入理解CMake的交叉編譯機(jī)制。6.3 現(xiàn)實決策樹你的項目該用哪個場景推薦方案理由個人學(xué)習(xí)/小項目5個源文件手寫Makefile啟動快無額外依賴make clean make一氣呵成STM32/HAL裸機(jī)量產(chǎn)項目Makefile 自動依賴成熟穩(wěn)定Vitis/CubeIDE兼容性好調(diào)試直觀Zynq MPSoCARMPLCMake ExternalProject分離ARM軟件和FPGA比特流構(gòu)建add_subdirectory()管理子項目跨平臺SDK開發(fā)CMake FetchContentFetchContent_Declare()拉取第三方庫CPack打包多平臺安裝包已有成熟Makefile的遺留系統(tǒng)不要重構(gòu)重構(gòu)風(fēng)險遠(yuǎn)高于維護(hù)成本用make -f Makefile.cmake橋接我親歷過一次失敗重構(gòu)將一個10萬行代碼的電力監(jiān)控固件從Make遷移到CMake耗時3周上線后因set_property(GLOBAL PROPERTY USE_FOLDERS ON)導(dǎo)致Keil MDK項目分組錯亂客戶現(xiàn)場設(shè)備停機(jī)2小時。教訓(xùn)是構(gòu)建系統(tǒng)的價值不在于技術(shù)先進(jìn)性而在于團(tuán)隊熟悉度和故障恢復(fù)速度。當(dāng)makefile:18報錯時一個資深工程師能在3分鐘內(nèi)定位到libs目標(biāo)依賴的IP核未generate而CMake報錯CMake Error at CMakeLists.txt:18 (add_library):可能需要查文檔、翻論壇、重裝工具鏈。在嵌入式領(lǐng)域“快速修復(fù)”比“技術(shù)正確”更重要。7. 最后一條軍規(guī)永遠(yuǎn)用make -n和make -d武裝自己所有關(guān)于Makefile的理論最終都要回歸到兩個命令make -ndry run和make -ddebug。它們是你對抗makefile:18: libs error 1的終極武器無需任何外部工具。7.1make -n看見Make真正要執(zhí)行的命令在終端輸入make -n allMake會打印所有將要執(zhí)行的命令但不實際運(yùn)行。這對驗證至關(guān)重要檢查$(CC)路徑是否正確arm-none-eabi-gcc還是gcc確認(rèn)-I參數(shù)是否包含HAL頭文件路徑發(fā)現(xiàn)$(OBJ_FILES)是否遺漏了某個.c文件。實戰(zhàn)案例某次Vitis構(gòu)建失敗make -n輸出顯示arm-none-eabi-gcc -c -I/home/user/project/Drivers/STM32H7xx_HAL_Driver/Inc ... main.c -o build/main.o但實際工程中HAL庫在/opt/st/hal/說明HAL_DIR變量未被正確傳遞。根源是Vitis的make調(diào)用未導(dǎo)出該變量解決方案是在Vitis的Build Settings中勾選“Export environment variables”。7.2make -d進(jìn)入Make的思維世界make -d輸出完整的內(nèi)部日志包含所有變量的值Considering target file all...依賴圖遍歷路徑Pruning file main.o...時間戳比較結(jié)果File main.o does not exist.。雖然日志長達(dá)數(shù)千行但關(guān)鍵信息在開頭和結(jié)尾開頭顯示Make讀取的Makefile路徑和變量初始值結(jié)尾顯示最終失敗目標(biāo)及原因Giving up on target libs...。高效技巧用make -d 21 | grep -A5 -B5 libs快速定位libs目標(biāo)的處理過程通常能在20行內(nèi)找到No rule to make target xxx.h這樣的線索。7.3 組合技make -n -f makefile.debug創(chuàng)建調(diào)試專用Makefile# makefile.debug include Makefile # 主Makefile $(info DEBUG START ) $(info BUILD_DIR$(BUILD_DIR)) $(info SOURCES$(SOURCES)) $(info OBJ_FILES$(OBJ_FILES)) $(info DEBUG END )運(yùn)行make -f makefile.debug -n即可在不干擾主流程的情況下打印所有關(guān)鍵變量值。這招在STM32H743項目中幫我揪出過SOURCES變量被$(wildcard)截斷的bug——$(wildcard src/**/*.c)只返回src/main.c而find命令返回全部12個文件。記住GNU Make從不隱藏它的邏輯它只是要求你用正確的命令去觀察。當(dāng)別人還在google makefile:18 error 1時你已經(jīng)用make -d鎖定了libs目標(biāo)依賴的libhal.a生成規(guī)則中$(AR)變量為空。這種能力不是天賦而是每天用-n和-d訓(xùn)練出的肌肉反射。在嵌入式開發(fā)的世界里最快的工程師不是寫代碼最多的而是看懂構(gòu)建系統(tǒng)意圖最快的。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美洲精品一级| 久久精品超碰| 操人人| 五月婷婷激情综合| 精品女同一区| 亚洲天堂一区二区久久| 国产精品小视频一区二区三区| 秋霞福利网| 亚洲密乳AV| 超碰超碰95| 啊啊在线| www.五月天| 青青草久久| 久久亚州精品成人Av无| 人妻黑丝袜电影| 久9re热视频这里只有精品| 蜜桃精品视频一区二区三区| 在线人人人人人人精品超 | 96超碰网| 超碰超碰欧美| 日语五十路和六十路亚洲国产精品 | 亚洲日韩久久精品一区| 视频黄色国产一级| 激情人妻另类| 天天插天天插| 欧美日韩中文字幕人妻| 很黄很污的免费网站| 在线不欧美| 国产精品麻豆成人AV艾秋| 亚洲欧美91| 另类专区在线观看| 97视频在线播放| www.狠狠| 欧美真人抽搐一进一出gif| 黑丝日韩av丝袜av| 无套内射性感少妇视频| 极品出轨视频网站| 色五月天AV| 国产美女销魂在线观看不卡| 精久久久| 91蜜臀在线久久久久| 91n欧美| 香蕉在线一区二区三区| 乱操乱伦AV| 激情开心五月天| 久久亚洲AV无码白度| 玖玖综合色| 手机在线人成免费视频| 欧美日韩人妻精品系列一区二区三区| 91蜜臀在线久久久久| 日本人妻伦在线中文字幕| 少妇500双飞99| 国产一区在线看| 欧美久久婷| 国产精品人人爽人人做可爱福利| 午夜精品久久久久久久第一页按摩| 人妻熟女午夜精品在线| 日本成a人v网站在线观看| 国产在线精品电影观看| 高清无码国产亚洲| 性爱免费视频成人| 色约约一区=区三区| 丁香六月婷婷综合| 人人操人人摸人人看人人干| 亚洲色图 91| 久久精品三级影视| 伊人网青青| 中日992视频| 嫩草 人人网精品| 99久久久无码国产精品性男| 九色精品视频导航1| 美女爽到高潮91| 99热在线只有精品| 欧美 传媒 麻豆 日韩 偷拍| 一级A啪啪啪啪| 青青久久艹| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 美女t无毒不卡不卡| 天天日日舔舔| 日韩草久视频| 岛国艾薇凹凸视频天堂| 狠狠操官网| 中出91视频| 97青娱乐超碰久久| 久久嫩草国产成人一区| 96久久精品一二三区色欲| 男人天堂导航| 天天综合网91| 亚洲色图8| 风骚少妇视频中文字幕| 欧美色天堂网在线视频| 国产av尤物| 亚洲一区日韩| 黄片色区软件| 操高情无码| 欧美97爱| 少妇人妻好深太紧了vr91| 91久久青青草原精品| 亚洲人精品午夜不卡| laoshunv91| 久久熟女人| 婷婷激情啪啪| 国产亚洲色婷婷久久99精品91| 国产探花日韩援交| 三级AV入口| 久久久少妇| 青草成人免费视频一com| 青青草原av| 老女人碰碰在线碰碰视频| 亚洲人妻熟妇三十三区| 亚洲色性情三级| 亚洲色综合| 91人妻Pr| 色色色色网站| 天天天天操| 色9999日韩国产| 国产乱人伦AVA麻豆软件.| 欧美日韩 强奸乱伦| 强奸乱伦AV一天堂网| 国产精品白丝| 欧美性爱免费短视频| 大JI巴好深好爽又大又粗视频| 2017天天拍大香蕉| 日韩三级在线观看网站| 亚洲人妻中文在线视频| 欧美一区二区三区不卡高清视频 | 99在线观看无大码| 亚州乱码中文字幕综合久久久| 人人人人人人少妇| 久久少妇视频| 午夜精品人妻二区三区| 久久99九九九九6666免费观看软件| 97中文综合| 伊人性在线视频| 97超碰欧美| 婷婷爽人人婷婷爽视频| 日本天天干天天日一区| 久久久久久久久久久精| 四季av一区二区凹凸精品小说| 久草草一二三四区久久| 国产精品97超碰| 精品国产乱码久久久久久日本公司| 激情内射| 国产精品香蕉| 日韩亚洲中文字幕在线| 久久久98网站免费视频| 伊人991| 久九9精品| 久欲AV| 欧美高清第一页| 大香蕉乱级| 郑州宾馆老熟女露脸啪啪| www网站黄| 婷婷五月天基地| 自拍视频大全亚洲专媒视频/一区二区三区| 操九九九九九九| 美女诱惑在线一区| 97综合| 大黄片做爱的大的| 婷婷成人久久久精品| 黄色成品网站| 欧美少妇色图| 6080YYY午夜理论片在线观看| 亚洲超碰在线| 啊啊啊快操我视频| 中文字幕免费在线观看| www.色操逼| 欧美久久毛片基地| 91丝袜视频在线观看| 欧美日韩黄片精品在线| 欧美啪啪女女| 青青草玖玖爱| 波多野结衣一级视频| 日韩啪啪啪啪啪| 国产精品熟女九九九| 亚洲久久久| 欧美日韩操逼动图| 亚洲国产一级中文综合久久天堂在线免费观看| 97国产精品一区| 丁香五月天堂网| 亚洲一区日韩精品中文字幕| 亚洲最新中文字幕免费| 欧美78| 熟女91网| 凹凸久久人人| 曰本精品久久久| 97干在线视频| 亚洲精品三| 熟女网站最新| 综合av社区| 国产欧美伊人| 亚洲免费97免费| 欧美色老汉| 97操| 澳门人妻久久| 天天看天天干| 激情四射五月天| 中出20p| 福利操逼| 大香蕉日亚洲日本亚大| 日本激情免费大片| 亚洲s色图| 91av熟女人妻| 91大学精品激情戏| 91亚州| 日韩啪啪啪啪啪| 东京热综合久久一区二区| 久久午夜鲁丝片| 欧美日韩m| 外站AV在线| 色香色香欲天天天影视综合网| 超碰这里有精品| 91丨熟女丨丰满熟女| 日本不卡二三区| 99久久无码| 亚洲色9| 加勒比综合| 国产精品久久久视频| 久久久日本电影| 天天流夜夜操| 好爽视频在线观看视频| 91亚洲人电影| 国产精品视频内谢女人| 久久爽爽精品| 亚洲日韩美国人妻| 91w欧美| 亚洲不卡不卡中文字幕不卡 | 大二网站亚洲| 91久久久老司机| 午夜理论片在线观看免费| 天海翼久久| 久久HD| 97日韩| 亚洲淫色网中文| 四虎国产精品永久地址入口| 中文字幕诱惑制服人妻丝袜美丝袜美| 无码区蜜乳| 夜草欧美| 在线国产探花| 高清无码91| 亚洲黑丝在线| Sekablack无码一区| 人妻免费观看| 国内毛片无码一级毛片| 国产51色综合久久免费| 中韩中文字幕在线观看| 裸模AV女优| 亚洲免费在线探花| 超碰人人干天天射| 欧美高潮| 午夜欧美J进J出白浆流出久久久 | 97亚洲色图| 美女诱惑1区2区| 人人玩人人添人人澡免费| 在线 欧美 亚洲| 天美av在线观看| 97人人操人人摸人人爱| 粉嫩AV一区二区夜夜| 很很很很操| 丁香六月综合激情| 免费一级黄色录像影片| 白丝被操91| 国产成人啪一区二区| 亚洲AV无码| 国产亚洲精品农村妇女| 老子午夜伦不卡影院| 日韩BBN| 亚洲色图亚洲无码强奸乱伦| 一级做受视频免费是看美女| 亚洲在线观看| 久久亚码| 日韩少妇丰满亚洲| 一区久久久二区| 国产精品激情久久久久久久| 国产美女自拍AV| 97久久久网站| 色男人色天堂东京热| 色妹子A V| 亚洲超碰在线| 欧美日韩性爱视屏免费看了| 亚洲精品一区二区精品| 伊人专区一区二区三区| 精品人妻一区二区三区日产乱码| 久草精品国产蜜臀| 欧美激情视频一区二区三区不卡| 一块操欧美| 亚洲一卡2卡3卡4卡乱码网站 | 亚洲欧美一区二区三区在钱蜜桃| 新版天堂中文资源8在线| 免费啪啪av| 亚洲欧美日韩中文播放 | 丝袜喷水在线| 亚洲欧美九九九| 操91| 校园春色 男人天堂| 家庭乱伦网站国产| 欧美αv.com| 熟女色综合久久| 高清无码久操视频| 偷拍精品一区二区三区| 色吧5亚洲| 成人怡红院| 操国产逼| 一级毛片电影免费看| 国产h小视频在线观看免费| 欧美在线电影| 亚洲综合999| 大肥女高潮bbwbbwhd视频| 天美传媒麻豆一区二区三区国产精| 成人区人妻精品一| 欧美综合色,www| 玖玖综合网| 久久久久久九九九| 99精品在线| 中文字幕黄色一起草| 国产精品一二三| 91日韩网站| 色噜噜日韩精品| 九九九久久久| 日韩激情电影中文字幕| 久久久国产亚洲精品系列| 很黄很色的视频在线观看| 成人26uuu| 多乙久久久久久| 国产精品熟女丝袜一区二区| 日韩人妻少妇中文字幕| 极品少妇99| 日韩大香蕉精品在线视频| 人人澡人人澡人人| 女人天堂av在线播放| 玖玖爱在线视频免费观看| 综合亚洲欧美精品日韩?v| 中文字幕奈奈美被公侵犯| 国产51色综合久久免费| av天堂影视中文在字幕在线中文| 97久久精品国产| AV天黑人| 99久久亚洲精品无码毛片潘甜甜 | 日韩熟女视频二区| 国产精品熟女一区二区三区| 国产日韩在线播放av| 欧美亚洲中文字幕| 国产日本熟女顶级一区二区三区视频| 免费久久9999| 国内外内射高清视频| 岛国黄片网站| 91校园春色长篇| 国产黄色动态精品| 秋霞一级视频在线观看免费| 婷婷色婷婷| 97视频网站在线观看| 日欧毛片久久| 久久一区二区三区四区五区| 一级久久久久久久久久久| 婷婷丁香在线| 色偷偷人人玩人人舔人人操人人摸人人爽 | 婷婷午夜成人色中色| 久久婷婷热| 蜜臀久久久国产| 99少妇内射| 国产操逼视频在线观看| 91爽啪| 98超碰日本| 12一15性XXXX粉嫩国产| 國產尤物AV尤物在線觀看| 少妇69中文| 另类小说欧美激情校园春色| 精品高潮| 日韩精品99999| 国产精品久久久777| 人人操人人色网| 免费观看啪视频| 精品九九九九九九九九九| 99999亚洲| 亚洲高清无码免费观看视频| 天综合网欧美| 五码视频在线观看| 求求你操操我| 日韩综合无码一区久久92| 深爱激情五月天| 强奸熟女一区二区三区| 人人 操人人 操人人| AV天天综合| 日日摸天天爽夜夜欢| 高清在线偷拍自拍视频| A一级色女| 国产欧美岛国精品一区| 久久偷拍人| 久久久一区二区三区三州| 人妻激情另类| 神马久久久久| 亚洲天堂人妻一区二区| 欧美亚洲特P| 五月丁香在线| 夜夜躁狠狠躁日日躁av| 啪啪91| 日韩啪啪视频| 综合久草| 天天色悠悠激情| 久艹日日日| 欧洲天天在线| 超碰日韩人妻| 精品人妻一区二区三区夜夜| 国产传媒午夜理伦精品| 老鸭窝日丰县女人| 免费中文在线| 精品一级| www.狠狠干.coom | 日韩精品操少妇| 中文字幕精品一区二区精| 国产丰满熟夫69mpp| 第四色奇米影视777| 男人天堂久久日韩| 1769精品一区二区三区| 97国产|免费| 婷婷色导航| 啊啊啊免费| 亚洲免费精品一区| 亚洲 国产 精品一区| 久久视频,这里只有精品 | 亚洲精品视频在线| 欧美少妇色图| 操操操操操操| www.色五月| 五十路三区在线| 天天干天天日天天射黄色片| 九月丁香婷婷色| 午夜福利合集| 久妇网| 国产 亚洲 丝袜 制服| 蜜桃狠狠色伊人亚洲综合| Julia在线播放亚洲久久| 国产精品九九九| 天天综合网久久ww| 午夜丁香| 国产一区二区三区白丝| 夜夜爽夜夜操| 精品97久久综合| 婷婷久久五月天| 私人尤物在线精品不卡| 亚洲国产精品久久久久婷婷老年| 婷婷五月综合激情| 日少妇视频| 日本久久综合| 欧美色棕合| 午夜120视频在线观看| 久肏视频字幕| 97频视在线| 午夜男女爽爽爽在线视频| 永久电影三级在线观看| 久久↗↗| 人妻少妇色综合| 啪啪一区| 久草视频在线视频在线视频在线观看| 国产97免费视频| 欧美日韩理论一区| 日本天天色| 国产精品爱欲| 麻豆国产97在线| 九九人妻| 大香蕉中文aV在线| 天天干天天插| 欧美网站免费| 亚洲 自拍偷拍 欧美| 久久久久久9| 丰满人妻一区| 97超碰精品成| 久久超碰亚洲人| 最近2019中文字幕国语免费版| 小说区 图片区色 综合区| 一级免费精品| 欧美高潮| 成熟熟女国产精品一区二区| 狠狠夜色午夜久久综合在线| 国产少妇肉丝在线观看| 久久无码电影| 国产午夜激片Av毛片不卡| 国产强奸乱伦第1页| 99久久久| 青青草这里只有精品| 99蜜月精品久久| 男人的天堂在线| 亚州色图欧美| 粘花网06av视频| 免费看污网站| 天天摸天天插天天日| 日韩啪啪啪啪啪| 欧美色综合影院| 日韩午夜啪啪视频| 久久鲁干| 亚洲国产婷婷在线播放| 亚洲蜜乳av| 日韩欧美午夜一区二区| 亚洲国产精品99久久久| 无码高清操逼| 免费精品中文字幕| 国产AV久久野战精品| 欧美黑人精品在线播放| 久久成人午夜精品影院| 国产日韩在线播放| 最新啪啪视频| 蜜臀av一区二区三区免费观看| 717影院理论午夜伦八戒| av中文在线| 天天弄天天操| 中文字幕av久久爽Av| 人妻一区久久二区三区色播| 伊人伊人LD| 东北女人操比视频| 欧美日韩国产精品久久色婷婷| 日本精品九九九| 大乔未久88一区| 我想要啊 啊 啊| 久久久精品,3| 国产日韩精品suv| 日韩综合成人免费视频| 国产精品岛国片在线观看| 大香蕉专区| 五月婷婷六月色| 一起草av| 中文字幕女同在线| 九草九九九| 欧美v日韩v亚洲v最新在线| 女性喷水高潮在线观看| 操我无码| 91亚洲人电影| 天天色怡春院| 风韵犹存大大大大香蕉| 天天上日日上日韩精品| 黄色在线网站| 国产精品久久久亚洲一区| 人妻天天爽夜夜爽精品2| 少妇内射www在线观看视频| 欧美一二级| 欧美 日韩第一性色| 91 丝袜在线播放| 97超碰站| 日韩九区| 久久亚洲天天做| 欧美后入式| 国产品精品自在在线午夜免费 | 国产成人精品一区| 日本孕妇一区二区视频操逼免费看 | 久操影视| 夜色综合| 99久久久久| 伊人久久国产免费观看视频| 亚洲资源一区| 日本性爰一道本| 婷婷五月天av| 色爽——AV| 天天射夜夜操| 九九性爱网| 久久久国产三级黄色片| SUV一区二区在线看| 青青草原成人| 久久91精品国产9丨久久分亭| 九九99精品| 丝袜翘臀后入欧美校园亚洲自拍另类小说一区中文字幕少妇诱惑 | 9 9精品一区二区三区| 久久国产精品,久久国产| 五月情色天| 一区二区影院| 伊人991| 91亚洲欧美| 色色色综合| AV色五月| 中日韩久久久| 亚洲激情天堂网| 国产精品不卡一区二区电影| 丁香五月婷婷基地| 久久有码视频| 丝袜熟女一区二区三区| 激情四射五月天| 精品国产av一区二区三区四区入口| 中文字幕成人| 中文熟女五十乱码在线| 伊人激情五月天一区二区| 91日日| 99久久精品欧美国产| 亚洲,欧美,春色,另类| 夜夜高潮夜夜爽夜夜爱爱一区| 人人插人人摸人人| 日日嗨AV一区二区夜夜| 亚洲成人免费中文字幕| 精品二999| 92性色国产午夜福利在线661| 蜜奶av| a片自拍直播视频| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 试看福利| 日本 色 导航| AV高清一区| 国产兽交视频在线播放| 操人妻逼91| 蜜桃中文字日产乱幕4区| av亚欧| 天天天肏屄欧美| 91在线超高颜值国产| 国模不卡一本二本三电影| 国产一区二区在线播放量| 日韩二级| 粉嫩粉嫩一区性色AV片| 人妻少妇久久中文| 五月激情影院| 久久久亚洲熟妇熟女| 国产婷婷一区| 2018天天干在线视频| 国产精品电| 日本护士高潮| 深夜福利黄片| 夜夜福利| 久久婷婷影院| 久久久久久九九九| 精品然女一区二区| 国产真实野战在线视频| 97碰碰色| 情色五月天久久久| 探花精品视频| 亚洲天天综合| 欧美综合传媒| 日亚韩精品视频二区三| site:sinbotex.com| 国产AV人人 夜夜人人澡| 久久久久久久国产视频| 青青在线视频日韩欧美| 九九亚洲精品| 色色色热| 久久无码一区二区二三区性色| 久久华人网| 91亚洲精品青草| 日本激情免费大片| 不卡日本一区二区| 精吧天堂| 成人贴图日韩欧美| 国产综合操逼高清| 我要去看2个日本美女.com曹逼| 欧美日韩国产人人| 人妻少妇久久久| 大香蕉久| 中文字幕精品探花视频| 妇女乱色二区| 日本最新免费韩国1区2区视频播放| 精品性爱一区二区| 91搞逼视频| 国产伊人精品在线| 免费成人在线熟妇网| 国产美女自拍AV| 亚洲好看强奸乱伦| 国产操逼网站亚洲一级黄色| 日韩免费高清大片在线| 激情五月激情综合网| 特级大荫道BBwBBwBBW| 九九免费影片| 亚洲成人激情小说视频| 加勒比av网| 成人麻豆av电影网站| 超碰 另类 欧美 | 人人操人人操人人人操| 国产人妻精品久久久一区二区三区| 久久久婷| 日韩精品国产一区二区| 蜜臀久久99精品| 综合伊人激情| 天天爽夜夜欢视| 久久久性| 久久111| 97亚洲在线| 嗯嗯嗯啊啊啊干死我吧| 亚洲日韩在线a不卡99精品| 五月天综合网| 色九九综合AV| 九九av| 蜜桃久久一区二区| 人人摸人人干| 久草免费福利在线播放| 欧美激色| 国产 日韩 欧美 人妻 熟女 中文 69人妻精品一区二区绯色 | 久操视频在线观看| 99热18| 日韩欧美性爱电影在线观看| 艳尻美人妻| 亚洲国产麻豆一区二区三区 | 国产9 9在线 | 亚洲| 欧美色图 人妻| 日韩不卡在线一区二区| 香蕉免费一区二区三区不读 | 日韩探花精品在线视频| 欧美草草高清日韩视频| 精品一区二区三区最新| 懂色天天爱天天日天天射天天澡| 欧美色图20P| 大香蕉中文aV在线| 国产精品无码久久久久2028| 国产精品一区二区三| 少妇99| 日韩熟女精品无码专区一区二区| 亚洲精品国产专区在线观看| 亚洲高清91| 人人爽人人精品乱人伦AV| 99热在线观看| 秋霞一级视频在线观看免费| 国产91会所女技师在线观看| 欧美姓爱综合网| 欧美后进式| 色99色| 国产女人极品高潮毛片| 日韩有码 一区二区三区| 国产91丝袜 在线播放| 久久最新免费视频23| 五月婷婷色| av资源在线观看少妇| 婷婷丁香五月天综合东京热| 久久精品国产99精品亚洲蜜...| 秋霞怕怕片| 蜜乳中文字幕a在线| 欧美综合91| 欧美色亚洲| 亚洲欧美国产va在线播放频| 久久大黄片| 亚洲乱码精品一区二区| 亚洲αv一区二区三区| 亚洲无码视频免费在线观看网址!| 亚洲欧美另类图片| 男啪女色黄无遮挡免费观看| 亚洲人妻在线精品| www.av在线视频| 免费a在线播放v| 日韩中文字幕二区| 男人天堂一区二区| AV一二区| 欧美在线色| 人人操人人精品影片| 偷拍导航视频网站| 精品人妻一二三| 性影在线视频| 一道本久久棕合爱| 99re6久热只有精品6在线直播| 中文字幕一区二区三区蜜臀| 97超碰中文字幕| 香蕉人欧美综合| 91深夜夜| 夂久色| 亚洲AV不卡在线观看尤物| 91 丝袜在线| 欧美日韩国第一区| 欧美激情内射| 亚洲国产成人精品无码专区| 婷婷97| 吉田爱美AV在线| 久久久偷拍| 日韩精品 视频一区二区| 神马精品视频| 夜夜夜爽www精品视频| 五月天亚洲色图| 亚欧高清在线| 久久久九九| 亚洲精品白浆高清久久久久久| 伊人色综合网电影| 91欧美成人色站| 久久久91| 99热这里都是精品| 亚洲熟女人妻中文字幕一区二区| 日韩乱伦影音先锋| 韩日巨乳美女免费视频在线观看| 操碰97| 91色鬼| 九九九九精品| 色五月婷婷麻豆在| 亚州性色| 97舔舔| 精品九九九九| 久久不卡一区二区| 最近2018中文字幕在线高清第一页| 天天做天天爱天天爽| 中日韩久久久免费看| 蜜乳AV一区| 亚洲综合图片在线| 五月天黄色激情视频| 91色伦| 啪啪91| 99热在线播放| 婷婷四五区| 精品高清av中文字幕| 麻豆性爱视频在线播放| 欧美性爱免费短视频| 青青草乱入乱欲视频在线观看| 日本黄色精品专区网站| 大香蕉92| 中文久久爆乳| 乱性AV| 少好三P| 婷婷香蕉欧美在线一区二区三区| 另类欧美色| 久艹伊人精品综合在线| 欧美日本国产日韩激情视频| 超碰在线1234区| 欧洲无码一区二区| 中文字幕在线观看二区三区| 国产乱子伦久久精品综合一区二区三| 婷婷激情啪啪| 国产男人又猛又粗又爽| 熟女乱3伦999| 九九九九97| 麻豆国产尤物AV| 精品亚洲国产成人av网站| 男人天堂2019| 青青草日韩免费观看高清在线| 91大学精品激情戏| 国产福利影视| 97精品熟女少妇一区| 日本精品一区二区三区四区的功能| 亚洲欧洲美腿丝袜| 99久久99久久综合| 人人操人人狠狠操| 国产男人又猛又粗又爽| 日本高清视频xxxx| 97天天摸天天爽| 欧美性暴力猛交| 欧美BT 亚洲色图| 中文字幕无码不卡啪啪| 91黑丝操| 四虎免费在线播放| 午夜福利合集| 97美日韩视频| 超碰美国| 热99这里有精品综合久久 | 久久一区二区三区四区五区| 神马麻豆福利院| 伊人四虎综合| 97久久久网站| 2017天天插| 97超碰欧美| 激情熟女12P| 欧美性爱一级操| 99自拍视频在线| 牛黄色久午久| 国产精品一区二区在钱播放| 欧洲中文字幕| 美熟女逼导航AV操逼| 欧美激情精品久久久| 囯产精品强| 久久久性少妇| 夜色91| 黄色小视频日本txt| 亚洲男人的天堂亚洲| 欧美淫穴| 无码操逼天堂| 亚洲熟女诱惑| 国产欧美精选自拍一区| 免费一级毛片在线视频观看| 六十路日本| 天天天肏屄欧美| 免费99精品国产自在在线| AV天堂因数| 国产精品原创巨作?v网站| 国产精品嫩草影院免费| 午夜男人天堂| 日本韩国五十路六十路七十路老熟女作爱视频网站 | 免费少妇一区二区| 啊啊啊好爽快点啊啊啊嗯嗯| 日韩精品三级片长长久久| 91丝袜视频在线观看| 在线无码视频| 伦理片秋霞免费影院| 午夜欧美J进J出白浆流出久久久| 97在线欧| 九色精品视频导航1| 亚洲91少妇| 999热日韩精品| 把腿张开老子CAO烂你| http://qxhbdz.com| 蜜桃午夜视频一区二区| 久久精品国产亚洲AV片多多| 亚洲天堂情色| 黄色AAAAA欧美| 色大师网站www永久网站视频| 91黑丝在线| 韩国一级做A片免费的| 老女人91| 中文字幕在线免费观看视频| 麻豆色约约| 欧美午夜一区二区三区| 人妻内射一区二区在线视频| 操B视频日韩无码| 亚洲激情色片| 国产福利影视| 久久人妻| 啊啊啊啊啊啊好湿好爽视频| 日韩一级欧美一级国产一级台湾 | 国产又色又粗又黄又爽| 蜜桃色院一区久久| 在线日韩精品一区二区三区| 色鬼在线综合| 一级片在线观看高清无码| 国产九九九九九九| 骚货人妻偷情自拍在线视频| 国产无马在线| 色97欧美| 精品射1999| 5278欧美一区二区三区| 风韵犹存大大大大香蕉 | 婷婷综合视频| 大香蕉www.超碰| 噜噜噜久久亚洲精品色情| 色牛牛AV| 91精品女厕偷拍视频| 91黄射| 久久綜合很很很| 91五月天| 亚洲国产婷婷在线播放| 破处bbq| 欧美在线55555| 人人乐大香蕉| 久久久国产三级黄色片| av无线看| 国产内射爽爽大片| 欧美天天综合在线| 99精品高潮| 久久综合精品一区二区三区| 性色av婷婷久久一区二区点复制| 一级人妻性爱视频| 超碰91在线| 天天操妹子| 精品无人区麻豆乱码1区2区图片| 东京热不卡视频| 欧美激情色婷婷花野真衣一区二区| 人妻丝袜无 码视频专区| 国产 丝袜 欧美中文 另类| 综合激情二| 国产精品成人久久一区二区三区| 久久亚洲中文字幕视频| 国内外激情在线| 精品国产乱码久久久久久久久久毛片| 亚洲亚洲亚洲天堂天堂| 亚洲欧美内射| 综合欧美亚洲| 国产 v乱码一区二| 99精彩视频| 五月婷婷爱六月丁香色| 婷婷亚洲五月***久久| 欧美精品一区二区少妇免费A片 | 亚洲免费成人在线高清无码视频| 自拍偷拍国产欧美日韩韩| 亚洲中文丝袜美腿诱惑字幕| 国产精品一区二区三区在线| 欧美国产婷婷久久| 精品国产三级av韩国在线| 色视频蜜乳| 青娱乐国产精品| 色婷婷香蕉| www.色99| 污污污8888| 欧美情色亚洲| 日日超碰亚洲| 岛国AB视频| 婷婷中文字幕| 91 亚洲情侣偷拍 久久| 亚洲精品九九九九九九| 国产传媒午夜理伦精品| 国产操逼逼网| 国产精品一区二区在钱播放| 综合性视频99| 精品无码欧美三级| 性色av婷婷久久一区二区点复制| 色女99一级片在线观看| 啊啊啊好大好深| 超碰国产精品久| 旡码电影特区| 精品人妻一区二区三区四区| 97干97色| 婷婷在线视频| 精品人妻一区二区蜜桃视频| 18禁看网站一区| 色婷婷亚洲婷婷| 亚洲综合伊人| 美国人人操人人操| 天天干天天爽| 99少妇内射| 333kkkk·亚洲com久久| 亚洲精品欧美专业| 90后后入| 黄色av一区二区在线| 91操人| 亚洲天堂人妻熟妇视频| 国产亚洲日本| 欧美一级A片不卡视频。| 久插综合| 欧美人人曰人人操人人射射| 97色插| 天天综合官网| 爱av免费| 偷拍亚洲情色| 女人高潮抽搐喷水视频网站| 久久中文字幕女同性恋一区| 1024人妻熟女一区二区三区| 97超碰资源网| 伊人五月天激情| 97在线亚洲| 大香网伊人久久综合| 桃花色涩综合影院| 韩国嫰模上门援交视频| 中文字幕精品一区欧美| 9久精品视频在线观看| 性爱乱伦网址| 欧美92| 麻豆福利视频导航| 久久久久亚洲Aⅴ无码| 欧美在线天堂| 精产国品一区二三产品| 99久久久er直播网址| 欧美se综合| 91老熟女老女人国产老太| 人妻在线视频| 国产精品一区二区手机看片| 日韩资源网| 精品国产少妇高潮视频| 亚洲国产欧美一区二区潘金莲| 国产2.3.4区| 任我爽视频在线观看| 欧美一区二区亚洲天堂| 日韩欧美操逼xxx| 青青草综合在线| 欧州激情视频在线一区二区| 另类专区在线观看| 十八禁的黄污污免费网站| 91情色| 9Ⅰ超碰| 东北女人性交| 九九人妻| 自拍欧美| 97精品国产97久久久久久户外免费| 啪啪资源网| 欧美性爱免费短视频| 人妻天堂网| 午夜毛片亚洲精品片国产久久久| 后入式999| 青操影院| 啊啊啊啊,啊啊好多水| 97se综合| 人妻夜爽夜夜爽| 亚洲欧美国产精品久久久久久久| 色女网日韩| 五月久久HDAV| 久久嫩草国产成人一区| 996热| 丁香五月激情综合国产| 91精品伊人久久久大香线蕉91| 中文乱码字字幕在线第5页| 欧美性色欧美| 啪啪自拍九九综合| 啊啊啊慢点| 日韩图色| 精品国模无码| 欧美精品成人在线播放| 99热只有这里有精品| 国产成人精品日本视频| 精品久久久久久亚洲| 久操九九九九| 亚州综合图片| 久久高潮妇女视频| 日韩在线地址一| 久久久久久AⅤ无码免费肉站 | 3P丝袜熟女 色综合| 在线综合 亚洲 欧美中文字幕| 亚洲操人| daxiangjiao你懂的| 伊人影院日本| 亚洲福利中文字幕在线| 亚洲国产一区二区三区在线| 丝袜狠狠草尤物 91| 性猛交| 色色色999| 久久动漫精品视频这里只有精品| 色综合 加勒比| 国产99精品一区二区三区免费| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 婷婷色中文字幕| 91精品久久久久| 亚码人妻| 天天看片天天爽| 91久操| 一起草日韩| 亚洲无码 国产无码| 久9爱精品| 99热日| 久神马| www.AV有限公司一区| 少妇国产不卡| 男人的天堂2010| 日韩中文字幕二区| 日本色色色视频| 日韩免费大片一级播放| 日韩免费簧片| 美女裸体无遮挡永久免费观看网站| 大香蕉伊人75| 农村少妇久久久久久久| 欧美后入式| 四虎精品一区| 999熟女精品| 国产日韩欧美| 日日夜夜模| 亚州日韩97| baiduhicn.com。| gogogo免费高清看中国国语| 欧美日韩亚洲天堂| 色色五月婷| 欧美在线啊啊| 91久久久视| 99热9| 国产家庭乱伦性爱视频| 亚洲综合大片| 日韩免费人妻色情网站| 91精品国产日韩欧美综合| 蜜桃臀一区二区三区久久| 九九热九九热| 深夜国产一区二区三区在线看| 日韩精品一区二区人人人| 一区二区精品更新提醒| 欧美中出1| 九九视频黄色片| 国产精品另类| 久久久久78| 99.色网| 综合久久婷婷| 欧美性巨大╳╳╳╳╳高跟鞋| …亚洲黄色厕厕女女在线播…| 97在线资源| 97视频在| 99爱久久视频频| 久久久久久亚洲精品不卡人乳 | 午夜欧美J进J出白浆流出久久久| 日逼国产| 国产黄色小视频网站| 亚洲成人激情小说视频| 欧美日韩妖精91com| 四虎影视永久在线观看精品免费网站 | 国产一区96在线| 亚洲性爱无码乱伦av| 国产强奸乱伦xd| 1769国内精品视频| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区 | 亚洲偷拍欧美激情| 色阁阁AV综合网| 超碰天天操| 综合97久久| 天天搞欧美| 久久久久久久久久久久97| 日本二区不卡| 人人妻人人爽一区二区三区| 精品人妻一区二区三区四区| 亚州精品人妻一二三区| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 26uuu国产| 人妻一区二区三区视频 | 欧美黑人168页欧美黑人167| 亚洲区限制级| 4tube欧美女厕所| 国产精品天堂| 在线毛片片免费观看|