久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码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
返回資訊列表
久久久久人妻| 精品人妻一区二区三区四区石在线 | 国产丝袜美女诱惑| 欧美gv在线观看| 丝袜视频一区二区在线播放国产中文| 秋霞视频一区二区| 在线一道啪| 欧美色图另类图片| 亚洲熟妇熟在线电影视频| 91人妻最真实刺激绿帽| 日韩一级二级三级免费看完整版国语版 | 青青草无码视频| 激情第四色| 插穴性爱视频在线观看| 亚洲激情视频| 日本一二区不卡| 日日做夜狠狠爱欧美黑人| 91色艳| 人干人人人操人人摸| 极品人妻少妇综合| 玖玖草久草99蜜月一区二区三区| 黄片www.| 欧亚乱色熟女一区二区| 欧美v亚洲v综合v国产v妖精| 日韩强奸av| 强乱老妇中文字幕| 久久偷拍人| 综合久| 丰满人妻一区二区三区性色| 亚州男人天堂| 无码人妻一区二区三区免费九色| 色网亚洲人| 亚洲情色综合网| 青青草十区九区爱夜| 大鸡巴久久久| 密臀视频一区二区三区| 亚洲三级网址久久最新| 久热久一区二区三区| 人妻中文在线| 欧美日韩高潮喷水91| 天天色综亚洲91污| 亚洲日韩美女中文字幕乱| 久久六六| 成·人免费午夜在线观看| 日韩 欧美 国产 麻豆| 国产乱弄免费在线视频。| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 粉嫩少妇自慰在线| 性欧美精| 久久人人爽av亚洲精品天堂桃色| 做爱福利视频一区二区| 精品无码产区一区二| 日日黄色三级网站| 久久久久9999妇女| 91亚洲丝袜| 久久九操在线观看| 亚洲国产97在线精品一区| 啊嗯嗯啊好大好爽| 日韩久射综合| av橘色网站| 久久伊人东京热| 亚洲色图片区| 亚洲天天在线| 日B操| 日本乱人伦片中文三区| 中日韩久久久| 日韩中文字幕二区| 淫色网综合| 麻豆AV96熟妇人妻| AV天堂因数| 亚洲激情综合另类| 精品欧美老熟女一二区| 人人操人人摸人人看人人插| 夜夜操美女| 亚洲无线码一区国产欧美国| 色吧5亚洲| 午夜男人av| 国产精选三级在线观看| 国产人妻一区二区三区欧美毛片| 91天堂| 78超碰| 青青草中文字幕| 天天操夜夜操狠很操| 国产一区二区三区导航| 在线视频97| 亚洲一级性爱视频免费看| 国产精品一级片在线看| 91丨国产丨白浆| 青苹果影院男人的天堂| 欧美啪啪天堂| 2021国产成人精品久久| 温婉少妇玩3p| 日韩精品高清资源在线| 国产AV线| 口爆吞精在线观看| 日本一区三级韩国| 丝袜视频网国产90| 日韩在线观看中文字幕视频| 超碰综合色| 色香综合| 日本性爱少妇| 裸模AV女优| 久久啊啊| 国产成人免费观看在线视频 | 区一二区日韩亚洲乱码av电影| 99re热| 百度百度日本操逼| 色噜噜人妻av 中文字幕| se吧提供91精品国产91久久久久久 | 九草在线大香蕉| 成人九九| 亚州国产成人精品女人久久| 国产一区二区三区,在线观看观看| 久久久999日本大片| 偷窥自拍亚洲天堂网爆| 国产亚洲禁久一区二区| 操逼操网| 手机在线看片免费人成视频| 中文字幕av乱伦| 久久九九视频九九视频| 五月丁香拍拍激情综合三级| AV污污污污| 久久久97| 黄色电影在线播放综合网站| 丁香五月天激情| 丝袜美腿诱惑亚洲欧美视频在线观看 | 日韩99999| 久久激情综合| 97亚洲综合电影| 后入美女国产| 人妻出轨一区二区三区| 青青操在线亚洲视频观看欧美在线| 99热精品在线| 91精品大奶人妻| 操我无码| 极品美女福利在线观看| 国产乱伦性爱AV| 亚洲色图欧美视频| 亚洲欧美精品福利在线| 色婷婷在线视频| 亚洲欧美大香蕉| 色综合网1| 日韩中文字幕二区| 澳门成人网站久国产日韩| 啊啊啊好舒服好爽啊啊啊视频| 亚洲一本色码中文字幕| 婷婷五月天色网| 精品国产乱码久久久久久久久久毛片 | 亚洲色图欧美色图另类图片| 密乳视频在线| 超碰人人超在线观看| 逼逼逼逼操操操操操操操操操午夜剧场| 操逼啊啊啊91| 九九九久千久久激情蜜桃在线看 | 国产伦精品一区二区三区在线观| 婷婷丁香五月激情啪啪| 野狼激情网| 国产美女口爆吞精| 欧美第二页| 午夜福利av电影在线| 久久婷色| 欧洲射精91| 国产AV线| 国产女人高潮嗷嗷嗷叫小说 | 午夜男女爽爽大片免费观看| 人人看人人爰人人操| 操逼逼无码| 毛片中心9视频99| 日本最新免费韩国1区2区视频播放| 日本黄色XXX| 亚洲色图欧美一区二区不卡| 人妻熟女av国产网站| 亚州性色| 99精品热| www国产无码| 精品久操| 九九自拍伦理| 性色avv| 国产女同在线观看视频| 日本精品一区三区| 欧美青青视频| 亚洲国产精品无码AV久久| 久久欧洲| 男人的天堂2018东京热啪啪啪| 日本黄色天堂| 91精品人妻一区二区三区蜜臀| 日韩免费三级黄片电影| 亚洲五月丁香花狠狠干一区二区三区 | 97高清啪啪| 97这里都是精品| 国产精品爆乳懂色蜜乳| 精品熟女一区=区三区| 亚洲另类在线观看| 国产AV高清AV无码| 婷婷色综合| 91青青草| AA丁香综合激情| 天天添天天干电影| 国产高清在线观看欧美| 亚洲黄日韩无码专区| 超碰在线免费一区二区三区| 操逼日韩无码 | 国桃视频产巨乳精品一区二区在线| 97天天日| 99热国产| 亚洲高清欧美总合| 国产精品一区二区黄片| 精品十八在线观看| 人人考人人摸人人干| 久草草一二三四区久久| 欧美午夜精品久久久久久3D| 国产精品高潮久久久无码| 日本免费一区二| 久久黄黄黄| 国产性爱欧美性爱在线| 91露脸熟女专区| 狼人久草| 日日嗷| 乱伦av麻豆| 天天澡天天爽日日av| 黄片qw| 精彩国产视频播放1区2区| www国产精品| 天天综合~91入口| 欧美日韩久久精品爱爱| 97天天爽| xxxx网站亚洲精品| 蜜桃狠狠色伊人亚洲综合| 永久免费发布性爱网| 无码男人天堂| 亚洲砖码砖专无区2023| 好色美女九七第一页| 欧美性爱18观看| 香蕉久久精品| 亚州色站 日韩电影| 91情色| 伊人97色天使| 一级片视频啪啪| 亚州综合AⅤ| 男女激情黄色网址| 情色大香蕉| 色婷视频| 大香蕉免费3| 国产熟女二区| 神马久久久久眼| 亚洲一区日韩精品中文字幕| 久久久久国产| av一区二区三区 中文| 久久久久久十| 亚洲宗合电影| 亚洲精品尤物yw在线影院| 亚洲免费97免费| 大香蕉视频一二三区| 九九九九九九免费视频| 精品久久一区二区三区四区五区| 欧美成人性爱视频在线播放 | 欧美激情亚洲情色| 激情文学 国产一二三aV| 欧美日韩操逼动图| 婷婷综合在线| 精品视频一区二区| 久操视频在线| 校园春色欧美色图| 99这里有精品视频| 黄色AAAAA欧美| 欧美综合综合| 龙兴卡官方查询| 亚洲人妻一区二区三区| 操逼不卡中文字幕| 亚洲春色一区二区三区| 国产农村妇女毛片精品久久| 性爱AV天堂| 国产乱伦一二三区| av最新免费中文字幕| 久久久偷拍| 国产第二页| 殴美牲| 家庭乱伦网站国产| 热思思免费视频| 97日韩欧美亚洲| 日韩精品99久久久久久中文字幕| 水澄无码AV| 亚洲一卡2卡3卡4卡乱码网站| 啪啪啪亚欧美视频| 久久久久久十| 亚洲国产成人福利在线观看| 中文操逼字幕| 欧美国产婷婷久久| 99少妇| 天堂精品一区| av线电影| 91爰爱欧美| 人人喜人人妻| 日韩人妻操B| 免费精品福利在线观看| 干干干天天| 欧美片第一页| 久操精品| 久久线上视频免费看| 91美女看B| 淫骚熟女一区二区三区| 射丝袜高跟鞋99| 天天综合,91综合永久| 91快色色色色色| 伦激情人妻另类人妻| 欧美第一页| 欧美色女人| 男人精品区| 午夜男人的天堂| 久热精品在线| 清纯唯美激情| 国产呦精品一区二区三区下载| 东北少妇高潮zzzz| 日韩精品一区二区日韩| 日韩人妻 中文字幕| 亚欧成人中文字幕一区| 在免费jIzzjIzz在线视频| 最近2019中文字幕国语免费版| 亚洲蜜乳av| 久久成人午夜精品影院| 欧美日韩 强奸乱伦| 色狠狠 - 百度| 为用户提供免费看黄网址在线观看| 国产狂喷潮在线精品| 久久久精品网站| 中文字幕国产在线天堂| 91看黄片| 黄片无码在线制服| 国产精品三级视频网站| 六月婷婷激情| 小泽玛利亚一二三| 久久久久9999妇女| 人妻少妇久久| 97精品久久| 国产精品原创巨作?v网站| 美女尤物福利视频| 日日夜夜骚| 1204金沙人妻懂旧版免费| 天综合网欧美| 欧美人妻少妇| WWW操逼| 亚洲强奸乱伦影视网| 日韩性爱播放| 欧美香蕉视xxx| 欧美激情久| 熟妇一区,二区,三区。| 蜜臀久久99精品久久久久| 午夜a成v人电影| AV免费在线播放一区| 亚洲丁香花色| 亚洲精品蜜桃久久久久久久| 97久久久久| 视频国产成人精品日本亚洲18| 无码WWW免费视频网站| 九九AV| 亚洲天天影视综合网| 久久大香蕉97| 亚洲第一免费视频| 丰满人妻一区二区三区四| 日韩视频中文字幕| 亚洲高清无码在线桃色| 亚洲欧美一区二区三区在钱蜜桃| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 蜜臀AV成人精品蜜臀| 亚洲91综合| 91这里只有精品| 日韩成人性爱AV| 天天日天天插| 丝袜美腿丝袜| 中文字幕在线观看永久| 日本天天吊| 欧美综合传媒| 久久精品国产AV一区二区三区| 亚洲精品人妻吞精av| 97视频在线观看免费高清| 欧美日韩*字幕一区| 成人国产精品三级A片| 国产肏屁眼视频| 亚洲色图欧美色18直播在线| 色婷婷九月天天综合| 日韩熟女精品无码专区一区二区| 日韩电影中文字幕| 精品人体无圣光凹凸| 日韩亚洲美女一区久久| 这里都是精品| 99久久综合| 舔舔啊| 国产精品极品美女视频| 天堂国产AV| 国产精品96| 九九99久久| 草B在线| 国产福利小视频高清在线观看| 欧美综合第一页| 欧美伊人久久综合网| 美国美女AV在线| 成人一二三区| 超碰在线人妻| 日本媚薬中文字幕在线| 五月天激情婷婷| 亚洲欧美激情小说| 91丨九色丨43老版熟女| 亚洲色图8| 国产精品久久久久久片| 国产人妻精品一区二区三区秋霞 | 在线免费试看60秒| 日韩Va亚洲va欧美Ⅴa久久| 色爱欲亚洲| 日本人妻伦在线中文字幕| 国产精品视频精品一二| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 加勒比伊人| 国产自偷自拍一区| 72av视频| 91欧美高清| 九九草| 精品精品精品| 成人AV超碰免费在线| 日本精品免费一区二区三区四区| 日本操逼视频在线| 樱花草社区www中国| 国产又黄又粗的视频| 狠综合网| 日韩欧美经典在线观看| 超碰超碰超碰超碰的大鸡吧操黑丝袜 | 精品欧美日韩在线观看| 欧美日韩中文亚洲v在线综合| 精品人妻视频一区二区在线播放| 亚洲精品亚洲人成人网| 亚洲无 码A片在线观看麻豆| 青青草国产亚洲精品久久| 免费久久一级毛片大黄| 久久成人午夜狠狠| 激情综合五月| 日本乱人伦片中文三区| 亚洲春色一区二区三区| 人人澡人人弄| 婷婷五月综合激情| 日韩极品无码B| 99精品久久久久久| 亚洲综合网电影91| 日韩无码a片| 亚洲狠狠入| 中文字幕日产av人| 国产精品久久久无码AV网站| 人妻久久| 安徽熟妇视频| 婬女免费一二三区A片| 草草草视频| 亚洲精品国产精品乱码不卡| 青青草天天亲夜夜操网| 日韩黄色片子| 999热这里只有精品| 色大师网站www永久网站视频| 日本一本道A级黄色毛片试看60分钟| 青青草色AV| 欧美美女在线高潮999| 亚洲综合精品国产一区| a片久久久久久久久久久久 | 丁香五月天社区| www.91人妻.com| 大色网久久| 精品国产99| 丁香婷婷久久 | 欧亚第一综合网| 夜夜操中文字幕| 99热这里| 国产一区二区三区精品观看啪| 久久精品国产亚洲AV先锋| 少妇熟女视频一二三区| 白丝少妇一区二区| 色女女女导航| 婷婷五月天福利| 亚洲国产麻豆一区二区三区| 无码高清少妇久久| 久久78| 99在线观看视频在线高清| 91N综合在线| 国产亚洲99久久精品| 欧美日韩亚洲一区二区在线观看| 另类图片欧美激情综合| 高清国产精品福利网站| 91美女小视频| 91欧美网| 国产搭汕a级片| 韩国毛片一区二区三区| 综合视频91| 鸥美插入视频| 曰本熟女视频| 色婷婷小说| www.黄色在线| 91成人久久| 日韩欧美大力操| 综合影院永久入口国产| 中文字幕欧美日韩三级| 亚洲色图亚洲| 欧美精品宗合| 中出91| 精品成人av一区二区三区在线| 日本色色视频网站| 久久亚洲欧美中文字幕国语| 国产精品高清2021在线| 亚洲欧洲中文日韩女优乱码| 九九九不卡| 欧美精品丝袜久久久中文字幕| 啊…啊…操我用力操我 | julia国产在线 | 看黄片视频免费| 自拍视频一区在线观看| 新婚人妻扶着粗大强行坐下| 综合久久六月久久婷婷| 欧美性爱十八禁| 日本在线视频导航| 午夜精品久久久久久久男人的天堂| 久久婷婷亚洲| 人妻天天夜夜爽一区二区| 欧美三级一级| 久久久久78| 东北女人操比视频| 日韩欧美麻豆 | 亚洲国产欧美日韩精品一区二区三区,国产一区二区三区在线看片,欧美性猛交 XXX | 久久精品午夜国产亚洲AV无码| 无遮挡又黄又刺激的视频| 亚洲天堂综合AV| 欧亚综合一卡二卡中文字幕| 日日干日日操五月天伦理视频| 好吊色一区| 色婷婷淫色网| 久草综合网| 超碰欧美97| 中国操逼无码| 综合 欧美 亚洲 日本| 亚洲 欧美日韩 另类| 99综合免费视频| 日韩影片中文字幕一区二区三区| 亚洲精品一卡二卡三卡福利视频网站| 久久华人网| 亚洲se91| 一线黄色免费性爱片| 免费av大片| 欧美午夜精品久久久久久超碰| 欧美色图中文字幕| 精品999日本| 久久精品噜噜噜成人看免欧美大片| 偷拍综合网| 久思思热视频在线观看| 超碰国产在线| 综合九九| 欧美视频一| 亚洲av淫乱| 欧洲乱码一区二区| 超碰天天去日穴| 国产精品人妻无码久久久互動交流| 五月天久久综合网| 激情第四色| 校园春色欧美色图| 在线不欧美| 三级网色| 日韩国产十八禁| 久久精品无码专区| 91小视频| 国厂麻豆77q4| 另类图片天天影视| 91在线无码精品秘 软件| 91九色丨国产丨爆乳| 91处女视频在线观看| 色欲天香天天综合网-成年人三级片网站-欧美乱妇狂野-日韩国产专区-久久久久久 | 亚洲综合校园春色| 色屁屁影院www国产| www.91久久| 亚洲日产专区婷婷| av爱爱爱| 人妻夜夜爽天天爽麻豆三区网站| 五十路成人在线视频二区三区| 午夜男女爽爽爽影院视频| 九色婷婷| 亚洲综人| 91人妻做a观看视频| 欧洲免费一区二| 密臀视频三区免费网站| 99热这里只有精品地址| 久久久久久九九九九九九| 一区不卡在线观看av| 久久久啊啊| 亚洲91色| 亚洲情色91| 欧美亚洲首页| 凹凸视频特色日本特黄| 天天欧美97| 欧美性爱一级操| 啊啊啊啊啊操我视频| 风月影院十八禁| 久久极品伊人| 天天干18禁| 午夜天堂精品久久久久91| 91久久国外网| 亚洲成?V人片在线观看福利| 激情小说亚洲视频| 久久久久久久国产a∨| 日韩欧美偷拍美女视频| 久久首页| 99精品高潮| 亚洲少妇综合在线播放| 超碰97首页| 国语av最新自产拍在线观看| 嗯~啊~快点 死我视频免费看网站| se吧提供国产乱老熟视频胖女人| 少妇人妻精品| 精品人体无圣光凹凸| 夜夜青青无码影院| 99久久网站| 久久久久久久9999| 亚洲熟女国产综合另类| 亚欧免费| 精品成人久久久人人亚洲| 婷婷综合五月天| 欧美不卡五十路| 九九国产| 久久精品国产精品亚洲艾通辽熟妇 | 婷婷色五月激情| 91精品人| 在线五区| 老女人日韩美91| 久久久亚洲高清不打码| 超碰碰97资源站| 欧亚日韩三区| 涩五月婷婷| 51国产午夜精品视频| 久久久久久裸体| 天无日色综合| 国产综合网站在线播放 | 亚洲诱惑天堂| 中文字暮97| 欧美日韩国产高清在线一二三区 | 欧美啪啪色吧在线| 蜜桃色院一区久久| 五月婷婷色| 欧美一区二区三区入口| 深夜国产福利| 欧美91久久久久| 日本久久久久久久久| 特级毛片特黄久久免费看| 男人的天堂2018| 国产丝袜高跟美女av免费观看| 色97| 色牛牛AV| 成全在线观看免费观看| 九九九免费视频| 91在线丝袜| 一区中文字幕二区日韩| 丁香五月AV| 加勒比久久综合网高清| 69XX一中文字幕人妻91| 男人的天堂一区| 9ⅰ久久久天天| 国产中文福利| 国产视频一区二区在线观看| 综合网色| 欧美网站免费| 可以在线观看的黄色网址| 免费在线看黄片av| 密臀视频三区免费网站| 91狠狠狠| 伊人久久亚洲色欲综合网站 | 精品一区二区2| 日韩精品怡红院| 99re这里只有精品3| 色99在线| 丁香五月天激情综合| 国产亚洲精品第一最新| 中日韩久久久| 国产日韩区| 在线观看不卡一区二区三区| av亚欧| 青青在线视频日韩欧美| 欧洲精品二区| 91n处女在线观看| chaopen97久久| 曰本特级特黄特色黄色A级网站高清在线免费看 | 亚洲制服aⅴ中文字幕| 日韩熟女操逼| 91伊人久| 新久久AV| 亚洲成a人片在线观看中文!!!| 日本精品网站在线中文| 国产精品ⅴ无码大片在线看.| 2023天天操夜夜操| CCYY草草影院地址入口| 国产美女销魂在线观看不卡| www.91人妻.com| 天天操夜夜操狠很操| 午夜AV人气不卡| 国产AV激情无码久久无码| 约操熟妇| 亚洲黄网在哪免费看| 日韩人妻一区二区精品| 久久九九网| 黑丝少妇在线观看| 嗯~啊~快点 死我视频| 97硬碰| 亚洲一区亚洲天堂| 九99久久| 亚洲熟女诱惑| 放黄片放3级黄片没穿衣服| 秋霞Av理论一级在线| 国产福利一区二| 欧美性爱免费短视频| 中国乱伦一区二区| 九色婷婷| 五月天色图| 98精品国产乱码久久久久久| 91精品少妇搡搡搡| 欧美激情区| 粉嫩av平台| 精品人妻一区| www.超碰| 日韩午夜国产| 色狠狠一区二区三区香蕉| 特色a在线上| 亚洲精品一区二区精品| 亚洲一本大道中文字幕无码在线| wwwss在线观看| 男人天堂站| 91日日夜夜| 中文视频在线观看| 久久九九视频九九视频| 国产毛片精品一区二区色欲黄A片| 久久一二区四| 少妇高潮喷水无套久久久久久| 欧美色干| 国产欧美精选激情视频| 综合婷婷| 91日产欧美| 天天干18禁| 欧美αv.com| 日本高清电影欧美色图| 久久精品人妻一区二区| 超碰2017| 日本五十路熟女一区二区| 亚洲日韩AV视色| 欧美在线中M| 性夜影院爽黄A爽免费动漫| 国产黄色 A 片免费看| 殴美牲| 亚欧操逼片在线观看| 色欲天天婬色婬香WWW夜色| 亚洲午夜福利视频| 久久久久久中文版| 欧洲精品一级二级精品综合视频综合 | 日韩欧美水蜜桃人妻| 欧美色图亚洲色| 日本性爱网址| 爱欲AV| 亚州综合在线| 国产精品亚洲免费| 欧美成人一区二区| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 蜜汁欧美| 日韩一级特黄av毛片| 人妻日日夜夜精品| 久久这里只| 日韩女模中文造逼| 国产精品一区二区后入| 黄色香蕉视频网站一区| 亚洲综合色男人网| 超碰97日韩| 亚洲成人性爱在线观看| 超碰地址97| 亚洲成人精品在线一区| 色性综合| 久久超碰com| 欧美在线播放aaaa| 丰满欧美放荡少妇在线| 多毛小伙内射老太婆| 美女的肌被草喷水视频| 日本乱人伦片中文三区| 欧美|91色综合| 999精品女人| 婷婷激情综合网| 久草成人影片| 国产精选三级在线观看| 肉丝中文无码高清| 日韩精品亚洲专区在线影视| 国产后入清纯| 日韩AV无码中文一区二区| 亚洲在高跟鞋自慰久久在色线| 成人午夜高潮av猛片| 国产无遮挡| 人妻偷拍一区二区三区| 久久做97| 亚洲色图尤物视频| 91亚洲欧美色图| 欧美的性爱网站免费| 伊人一区二区三区| 午夜福利av电影在线| 久色99999| 久久国内| 啊啊啊水好多| 亚洲nv男人的天堂网| 96精品久久| 日韩中字av一区| 欧亚无码视频| 欧美伦乱爱| 精品中文字幕一区二区l - 百度| 福利大香蕉| 99啪啪视频| 91久久久久久久久18| 日韩一999精品| 操逼日批| 亚州Av天美传媒| 一区二区三区机械有限公司| 丰满少妇一区二区三区免费看| 天天综合亚在线| 日韩黄片影院| 久久精品99久久久久久| 99热在线观看| 丁香色狠狠色综合久久小说| 久久超碰、| 久久人人舔人人爽舔人人av片| 久久久久久免费电影| 亚洲天堂电影精品一区| www.亚洲成人一区| 91日日夜夜| 亚洲 欧美 91| 欧美性爱日韩性爱| 天天天干977| 蜜桃在线观看一区二区三区| 秋霞影音一区二区三区| 欧美色院| 亚州日韩97| 天天插天天操天天摸天天射天天看| 亚洲天堂AV在线播放| 中文字幕一区二区无码成人| 夜夜操av亚洲一区二区| 精品v日韩欧美国产| 女性91网站| 国产精品在线一区二区| 超碰97爽| 干婷婷综合网| 日韩精品资源专区二区| 人妻激情视频| 夜夜人妻爽| 日本特黄f c2| 日本视频在线观看污污污| 超碰色综合| 人妻色情天天操| 亚91亚洲网| 色播五月婷婷| 中日韩熟女| 天堂69亚洲精品中文字| 91久久国产精品| 久久日本熟女精品一区| 久久日韩毛| 国产乱伦性爱AV| 日本熟女免费視颖| 啪啪综合网| 婷婷丁香人妻| 精品综合久久久久久97| 91丝袜人妻| 色眯眯射| 9久综合网| 黄片免费看黄片免费看| 日本1区2区不卡视频| 久久精品店| 久久一二三四五六七八九区| 久久久久ab| 久久久久久大| 99热免费| 曰韩无码777| 日本免费一级AAA大片器| 国产女同在线观看视频| 91老司机视频| 蜜桃午夜视频一区二区| 曰韩少妇无码| 亚洲激情色片 | 成人八戒网站| 一本精品日本在线视频精品| 性夜影院爽黄A爽免费动漫| 97视频播放| 欧美色爱综合| 天天干夜夜操一区二区| 日本熟妇精品九九| 九九热精彩视频| 热久日综合| 神马久久久久久久久久久久| 亚洲AV乱码专区国产噜噜亚洲| 夜夜嗨AV一区天天| 日产狠狠干| 久久,精品一二三| 激情综合五| 啪啪91| 日韩AV一区二区三区四四| 日本色婷婷| 九九亚洲视频| 丁香五月激情网| 超91综合网| 伊人影院中文字幕| 欧美色偷拍| 有码免费观看| 99re95| 欧美大片一区二区三区| 精品无码久久久久| 午夜无码熟妇丰满人妻| 亚洲极品| 国产精品久久泡妞网站| 色九久| 丰满人妻一区二区三区蜜桃视频| 亚洲欧美天堂| 日韩偷拍一区二区三区| 26uuu性| 亚洲码专区| 91超级碰碰碰| 亚洲国产精品乱码在线观看| 夜夜狼人妻| 一区,二区,三区视频| 欧美在线视频观看一二三四区高清| 嗯,啊。舔我逼| 妇女乱色二区| 啊啊啊免费| 香蕉国产精品麻豆亚洲欧美日韩| Av手机版天堂网| 天天干夜夜一操| 五月天色色色| 午夜久久一区二区无码中出| 97精品国产手机| 热热色青青草| 久热一区二区| 国产精品 久久久精品一牛| a v网站在线播放| 超碰av人人人| 国产福利夜| 久艹99| 欧美97爱| 国产av又色又爽又黄| 色五月首页| 伊人久久大香线综合无码| com 首页 18岁 禁区 女优 免费 精选 同城| 夫妻日逼| 中文日本免费高清| 婷婷激情五月| 97精品第3页| 啊啊啊骚| 色操逼网| 五月婷婷啪啪| 国产精品视频播放| 久久久久久十| 黄色片一区二区三区四区五区| 精品国产久热在线观看| 丝袜喷水在线| 欧美高清91| 乱伦1色页| 性欧美另类高清| 黑人综合色| 国产一区二区成人av在线播放| 国产CHASE男男GAYGA 毛多色婷婷| 婷婷情色综合网| 中文无线日韩一区| 在线中文字幕| 九九内射在线| 欧美第一页| 2023天天操夜夜操| 日日夜夜狠狠| 亚洲诱惑天堂 | 久久亚洲欧美一区二区三区-亚洲国产精品第一区二区 | 人妻天天爽夜夜爽2| 日韩免费福利在线观看| 婷婷中文字幕| 97草草| 日韩国产欧美伦理在线| 国色天香av| 少妇的嫩逼图片| 秋霞免费AV| 今日头条成人一区二区三区四虎精品| 深夜国产福利| 国产精品久久久久av| 亚洲性少妇| 为用户提供免费看黄网址在线观看| 亚洲,欧美,春色,另类| 啊啊啊水好多| 欧美日韩性爱操大逼| 欧美大片天天看| 狠狠操狠狠插| 91色s| 一本一道波多野毛片中文在线| 青青草视频爽一爽| 亚洲综合97| 伊人AAA| 韩日欧亚a级| 亚洲精品无码少妇久久| 亚洲美女黄色| 上海一级黄片| 夜夜爽爽夜夜精品视频| 欧美探花网| 少妇三P| 素人一区二区三区日韩| 2025亚洲男人天堂| 欧美综合天天| 欧美国产日韩清纯唯美| 色淫网站优优视频| 五月天激情婷婷| 999久久久久久久久| 亚洲国产欧美中日韩成人综合视频| 锕锕好爽 死我在线观看| 大香蕉一区二区在线观看.| 老师充足的奶水小说| 亚洲天堂男| 色色色欧美| 日曰骚久久精品| 99视频只有精品| 国产97视频| 青青草日韩无码| 啊啊啊操死我| 亚洲精品一二三四区| 精品亚洲| 校园春色欧美色图| 26uuu欧美日韩| 亚洲激情色片| 欧亚乱色熟女一区二区| 人妻无码一区二区三区久久99| 国产一级特黄大片处女| 欧美在线视频观看一二三四区高清| 最新中文字幕精品在线| 久操 高清| 波多野结衣先锋影音| 少妇久久久免费| 婷婷丁香在线| 久久这里只有精品9| 欧美成人亚洲精品| 天天操夜夜嗨| 午夜福利一区二区三区四区五区色婷婷| 狠狠激情综合狠狠操中文字幕| 操久久久久| 国内精品999| 精品成人亚洲午夜电影| 天天日骚逼熟女| 99色色网| 欧美不卡在线一区二区| 日韩精品三级片长长久久| 最新中文字幕在线亚洲| 91n处女在线观看| 亚洲AV免费在线观看| 欧美亚洲中文| 亚洲一二三| 91日韩在线| 亚洲AV无码乱码| 亚洲美女黄色| 91人人爽人人爽人人人,gav福利视频导航,日韩欧美亚洲国产字幕四区 | 97天天爽| 91精品微拍福利| 亚洲成人AB| 粘花网06av视频| 91操人| av网站免费看| 精品综合久久久久久97| 女同亚洲欧美一二三区久久电影| 伊人一级免费黄片| 久草毛片| 九九热视频这里只有精品| 新婚人妻扶着粗大强行坐下| 亚洲自拍97| 超碰欧美在线欧美| 人妻激情偷乱视频一区二区三区 | 青草香蕉网| 综合久久欧美| 91精品国产91综合久久蜜臀| 江都AV在线| 在线综合色| 一区二区三| 亚洲999综合| 色婷五月| 人妻献身系列第54部| 91痴汉| 中文字幕精品久久久久人妻红杏ⅰ| 五月丁香色色网| 欧美十八禁视频| 欧美精品黑人猛交高潮| 青青草狠狠撸| 五月丁香久久| 亚洲欧美国产其他二区| 亚洲啪AⅤ永久无码| 91爱| 97草草| 99精品伊人| 色香阁在线| 十八禁啪啦拍视频无遮挡| 看大黄色大片原件| 亚欧免费观看视频| 国产精品视频在线观看| 碰人碰碰人人开房人肉| 精品96久久| 99999精品成人| 成人资源中文字幕在线观看天天| 96久久精品一二三区色欲| 69少妇一区二区| 日本东京热久久久电影| 999热这里只有精品| 国产一区二区精品久久久不卡蜜臀| 国产妇女精品视频青青草| 顶级少妇BT天堂| 天天操天天射青青草| 熟女性视频| 五月丁香综合激情| 日韩操逼HD| 色哟哟 日韩精品| 欧美瑟综合| 色阁阁AV综合网| 亚洲综合骚逼| 91在线/欧洲| 久久99精品九九久久久婷婷| 欧洲中文字幕| 少妇诱惑视频| 四季AV综合网址| av天堂影视中文在字幕在线中文 | 免费αV在线视频| 中字幕人妻一区二区三区| 秋霞Av理论一级在线| 91激情| 久久伊人最新网址视频| 色综合一区二区三区| 精品一区二区三区麻豆| 午夜毛片亚洲精品片国产久久久| 亚洲 欧美 第一页| 久久综合97| 综合第一页| 日本一区二区中文字幕久久| 亚洲图片另类| 亚洲人妻在线精品| 人妻9117c| 又大又长又粗又爽又黄| 黄色区免费观看中文字幕| 亚洲精品无码久久AV| 国内毛片国产专区二| 狠狠激情综合狠狠操中文字幕| 亚洲欧洲综合视频在线| 99热91| 久久欧美1卡2卡3| 青草香蕉网| 我爱搞逼综合网| 天天干天天日天天射黄色大片 | 夜夜欧美 | 91逼逼女人91| 人妻插插人妻人| 亚州色图欧美| 日韩特一级久久| 亚州五月| 亚洲加勒比| 欧美精品23| 91动漫操逼视频| 婷婷五月天AV| 亚洲精品欧美专业| 强奸熟女一区二区三区 | 99无码视频| 日韩熟女精品无码专区一区二区| 亚洲情色在线| 亚洲图片偷拍欧美| 久久久不卡| 国产精品探花色| 日本午夜久久电影| 久久久久久久久久久久久9999| 刺激精品视频|