日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满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免费网站| 久久久久久波多野吉衣高潮| 欧美色91| www.av在线视频| 精品九九九九九九九| 大香樵伊人网| 超碰97最新人妻| 欧美久久九九| 激情婷婷丁香网| 国产福利第一视频| 久久精品一区二区一8| 色综合一区二区三巨| 精品999一区二区| 国产一区二区三区高清视频| 婷婷五月天激情小说| 麻豆a'v电影| 色色毛片| 韩日精品福利视频一区不卡在线免| 国产中文字幕曰本毛片| 毛片久久| 欧美性第一页| 亚洲污污网站| A一级色女| 亚洲AV乱码专区国产噜噜亚洲| 国产专区第一页| 亚洲资源吧| 久久大陆| 午夜无码熟妇丰满人妻| 美美91成人国产精品欧美精品久久久久久久| 国产毛片在线| 精品对白久久不卡| 欧美97色| 东京热,男人的天堂| 蜜乳av一区二区三区四区不卡| 欧美亚综合色图| 精品人妻二区三区| 9长久久精品| 操淫穴亚洲五月丁香| 97视频新免费| 亚洲性网| 啪啪视频亚洲第一| 级做a爱无码性色永久免费| 丁香六月激情综合| 亚洲日产专区| 性色一线| 操国产高清| 四色永久成人网站| 中国操逼无码| 免费精品AB| 日韩精品一区二区三区色欲| 婷婷久久五月综合激情| 亚洲熟妇综合久久久久久| 国产伦精品一区二区三区在线观| 中国熟女老妇仑乱一区二区三区| 啊啊啊好舒服好爽啊啊啊视频| 无码日韩人妻av一| 亚洲国产美女久久久久| 欧美在线电影| 亚洲脚交| 97资源站久久| 神马精品视频| 日韩免费福利在线观看| 一二三区视频在线观看| 91模特在线观看| 欧美午夜视频| 青青草玖玖爱| 亚洲精品久久一区二区三区蜜桃臀| 国产精品亚洲高清在线| 日韩免费av片高清无码| 性天堂| 日韩欧美天堂| 制服诱惑亚洲一区二区三区在线观看| 狠狠图片青青草| 骚逼一区二区| 欧美综合 站| 欧美一级A片在线看视频性色| 婷婷色综合欧美日韩| 亚洲自拍青操视频| 五月天黄色激情视频| 欧美日韩精品青青| 懂色AV网| 国产精品久久伊人| 久久鲁夜| 日韩专区久久久| 日本99一区二区| 亚州熟女乱伦| 91无码精品| 欧美色66| 男人的天堂2018东京热啪啪啪| 在线视频 亚洲精品| 少妇精品久久久八区九区| 久久大香蕉手机高清视频| 思思热影视| 91亚洲图片| 91熟女综合| 日本在线不卡123| 亚洲精品人妻吞精av | 天美麻豆精品视频99| 亚洲天堂在线怕怕视频| 大香蕉日亚洲日本亚大| 歐美性天天| 日韩99神马视频播放| 色色色天美视频| 精品日韩人妻视频| 国产极品粉嫩馒头一线天av| 伊人黄色片| 黄色免费网| 亚洲人妻精品一区二区| 后入式福利| 啊啊啊好舒服好爽啊啊啊视频| 国产亚洲国产超碰| 亚洲国产天堂| 亚洲91在线| 亚州性色| 综合久久97| 国产成人网址| 4399成人黄A片| 五月丁香六月婷| 九九色色| 天天综合网一91网| 97一区二区三区视频| 日本精品性生活久久久| 中文在线视频| 亚洲精品国产熟女久久久| 欧美成人精品一区二区男人蜜臀| 伊人国产AV| 人人妻人人爽人人精品| 国产97视频| 日韩性爱小视频| 日语五十路和六十路亚洲国产精品 | 嗯嗯啊啊操我| 国产精品原创巨作?v网站| 亚洲无码超碰免费| 成人乱人伦一区二区| 狠日操| 国产精品一区二区黄片| 黑人天8A∨高清网站| 蜜臀久久99'精品久久久| 欧美日韩狠狠爱| 日本精品一级二级三级| 五月丁香综合啪啪| 91久久久久久久| 肉动漫无遮挡h在线观看| 人妻91少妇| 中文字幕日韩精品久久| 艹我哪美一区无码| 丰满熟女人妻一区二区三五十一路| 乱伦Av网| 大香蕉520| 天天看综合网| 欧亚 另类 久| 国产精品视频精品一二| 91在线丝袜| 婷婷10月天青娱乐| 国产成人无码高清| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | www.激情| 麻豆区久久久久亚| 无码动漫av中文字幕| а√天堂资源官网在线资源| 久久久久久午夜男人的天堂| 欧美综合第一页| 十八禁啪啦拍视频无遮挡| 精品视频97| 青青草综合在线| 亚洲一区二区精品福利| 青青草手机在线免费观看| 夜夜高潮夜夜爽国产伦精品| 岛国黄色大片网站| 亚洲美女黄色| 久草国产在线视频| 国产精品视频麻豆入口| 亚洲性猛| 国产精品宅男免费| 亚洲天天影视色综合| 欧美日韩 强奸乱伦| 国产第11页| 亚洲高清无码在线桃色| 国产日韩美女小穴视频网站不卡| 色噜噜婷婷| 九九人妻| 国产精品无码在线| 深喉吞精| 乱理日韩中文| 人人操我人人干| 色综合美国| 99热这里只有精品地址| 丰满熟妇大乳做爰| 久久精品国产亚洲AV无码电影| 九九九精品一区二区无码| 亚洲免费成人在线高清无码视频| 91久久久久| 色色色色色色色色色色色色色色综合 | 无码精品久久久久久亚洲| 99热这里只有精品9| av天堂电影网| 自拍亚洲综合| 国产强奸超碰AV| 精品九九| 啊啊啊啊网站| 黑人在线91| 欧美猛交黑寡妇中文字幕| 午夜免费视频1000| 成人午夜小视频手机在线看| 99热这里都是精品| 久久久内射良家| 久久久9品一区二区三区| 色乱二区| 超碰97色| 日韩久久艹| 日韩AV电影网站| 色9999日韩国产| 免费1级a做爰片观看| 日韩欧美麻豆| 国产91丝袜在线播放蜜月| 激情五月综合| 伊人久久婷婷| 亚洲激情av| 欧美成人一级免费电影| 国产理论视频在线播放| 91内射| 中字乱伦AV| 老外又粗又长一晚做五次| 老鸭窝成人免费毛片视频| 国产十八禁视频| 国产四虎在线| 亚洲影院小综合| 亚洲天堂另类小说男人| 91在线丝袜视频| 口爆综合网| 国产小炒后入式| 67914亚洲精品| 爱射综合| 久久一二三四五六七八九区区| 欧美中文字幕男人天堂久久精品 | 天天夜夜久久| 天美精品一区二区三区四区在线观看| 91色堂| 欧美亚洲韩国视频十五区| 国产91精品久久久久久久网曝门| 亚洲区限制级| 国产AV人人夜夜澡人人爽麻豆| 欧美性暴力猛交XXXX | 超碰av人人人| 丝袜天堂| 狠狠爱AV| 国产精品肉丝自拍| 无码人妻丰满熟妇奶水区毛片| 嫩草 人人网精品| 亚洲精品人伦一区二区| 国产视频第2页| 啊啊在线| 国产午夜在线观看视频| 六月色色| 国产久久久久久久久一区二区| 国产1769在线| 97久久久久久久精| 舔舔啊| 男人的天堂2019| 欧美亚洲色图另类国产| 日韩一区二区精品视频| 综合性视频99| 99re这里只有精品9| 性爱Av免费| 激情六月天| 超碰97最新人妻| 丝袜足交视频| 日韩中文欧美| 欧美日韩中国x| a级免费在线观看| 国产主播福利| 91色综合激情| 91综合网| 凸凹视频在线观看| 男人天堂综合| 欧美91在线| 人妻少妇久久久| 日韩综合97P| 日本中文熟女视频| 久久久久久夜夜夜夜夜| 亚洲精品人体| 色精品极品| 男人天堂久久日韩| 天堂网亚洲区手机版| 国产高清吃奶免费视频网站| 婷婷五月天久久精品视频一区二区三区 | 嗯嗯啊啊操我| 欧美日韩青操| 久96热在线观看视频| 嗯嗯啊啊视频在线看| 亚洲综人| 日本中文字幕在线电影| 蜜臀中文无码午夜| 99人人干| www男人天堂| 久久婷婷伊人| 91精品国产一区三一| 老熟女乱子伦中文字幕一区二区| 爆乳免费黄网站| 天天干天天操天天操夜夜操天天操| 116美女午夜| 97一区二压| 伊人久久大香线蕉无码| 夜夜操天天肏| 强奸乱伦中文字幕AV| 久神马| 人妻天堂综合网| 精品视频在线观看精品| 久久av网| 黄片www视频免费| 色女99一级片在线观看| 麻豆久久精品亚洲精品88 | 国产高清在线观看欧美| 美女露胸露奶头| 亚洲情欲| 不卡一区视频| 一区二区三区在线资源| 中文字幕中文字幕一区二区| 久久久内射良家| 成人精品电影| 久久99精品视频| 激情小说图片亚洲首页| 日韩欧美女求操每天更新| 日韩熟妇二区| 天天看夜夜看日日干| 激情啪啪视频| 99ri视频| 国产亚洲精品激情| 国产精品白领在线观看 | 蜜臀久久99精品久久久| 91精品微拍福利| 国产精品网址| 97网址www| 国产精品香蕉热久久新品| 亚洲高清自拍| 新精精品久久精品| 97久久免费| 高清在线偷拍自拍视频| 小视频国产| 中文字幕一区二区无码成人 | 97色爱| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 国产自产22区| 激情久久久| 9色国产精品一区粉嫩| 欧美综合中文| 国产综合久| 嗯~啊~快点 死我视频免费看网站| 97干在线视频| 五月天婷婷色| 极品尤物女神在线观看| 翔田千里一区二区三区奶水| 亚洲资源一区| 嗯嗯啊啊好大好爽| 色鬼在线综合| 日韩成人电影AV| 女人爽到高潮潮喷18禁网站| 久久99久久99精品免视看婷婷| 91精品无码人妻系列| 八戒午夜福利理论片| 91无遮挡| 色欲av国内精品久久久久久| 我想要 啊 啊 啊| 蜜臀Av一区二区三区| 好湿好紧视频| 精品人妻一区二区蜜桃视频| 330Dv国产女人终合视频极品人与兽| 天堂射| 啊啊啊97视频| 日本黄页视频在线观看| 国产高清不卡视频| 国产亚洲精品自在线亚洲情侣| 欧美很很操视频| 中亚精品极乱| 亚州熟妇精品| 欧美性xxxxx狂欢| 男人亚洲天堂| 日韩中文字幕二区| 97 视频在线| 超碰人妻中文在线| 亚洲综合色图欧美| 亚洲一区二区三区不卡国产欧美| 97色色婷婷| 91电影色诱| 330Dv国产女人终合视频极品人与兽| 嗯嗯啊啊亚欧精品| 96超碰网| 欧美精品一区二区少妇免费A片 | 96AV精品| 吉川爱美98堂在线| 色欧美色交综合| 国产家庭乱伦性爱视频| 欧美综合骚| 密臀AV在线| 亚洲中文字幕av| 亚洲视频1区| 久久精品人体| 日本韩国国产精品一区| 国产亚洲99久久精品熟| 做爱A级亚欧| 亚洲中文一区二区三区| 大香蕉手机视频| 骚货| 亚洲无码视频免费在线观看网址!| 欧美大香蕉久| 伊人五月天青青草婷婷| 97精品在线| 熟女精品日韩一区二区三区| 国产美女口爆吞精视频| 99国产在线绯色一区| 99re这里只有| 欧美精品自慰系列寂寞少妇| 日韩啪啪啪视频| 91色狼| 欧洲综合视频| 另类图片综合| 日本丝袜美腿人妻九九| 五月天婷婷在线看 | 亚州综合色| 五月色网| 91老司机精品| 欧美色图亚洲色图成人在在线| 玖玖综合网| 蜜臀AV一区二区三区激情综合| 久久久久久久97| 中文字幕视频2区| 亚洲春色一区二区三区| 中文幕97| 天天日天天色| 国产成人91一区二区三区| 色狠狠综合噜一二三区| 91人妻在线视频| 一区久久久二区| 九月丁香婷婷色| 大香蕉国产中文自拍| 成人羞羞视频国产| 国产亚洲精品美女| 日韩pv中文| se吧提供91精品国产91久久久久久| 中文字幕文字幕无码一区二区三区电影99| 亚洲中文字母在线播放| 国产精品久久久亚洲第一牛牛_在线观看| 色情综合网| 激情抓乳插进去啪啪啪日韩| 久久久精品九| 日韩不卡码| 五月天色五月| 国产亚洲色婷婷久久99精品91葵花宝典| 久久久四区| 亚洲丝袜制服国产91_国语字幕免费观看完整版下载第5集_ | 操逼网站视频漫画国产| 久久男人的天堂| 欧美久久久| 综合五月天| 精品久久无码午夜福利| 91 丝袜在线播放| 欧美激情 亚洲色图| 人妻内射一区二区在线视频| 九九视品黄色| 人人操人人插人www| 国产成人精品网站| 啊啊啊啊啊舒服| 久久久久久久 九九九九九九九| 国产懂色精品国产av| 五月丁香六月综合缴清无码| 97色香蕉| 99999亚洲| 亚洲欧美变态| 国产97色在线 | 亚洲| 亚洲精品一卡二卡三卡福利视频网站| 美女久久久久久久| 亚洲精品亚洲人成人网| 亚洲操逼无码| 91强热人妻| 99久久精品无码一区二区| 18禁免费视频| 特级毛片特黄久久免费看| 久久久蜜桃臀无码视频| 美女让帅哥通她小鸡鸡| 久久综合超碰| 超碰欧美97资源| 黄色十八禁网站| 国产乱人妻精品入口| 99xav| 天天天天做夜夜夜夜做| 无码抄逼网| 亚洲av无码成人精品国产| 强奸乱伦大香蕉| 东亚亚洲无码高清| 九九成人视频| 97青青操视频| 狠色婷婷久久一区二区三区_| 亚洲情色一区三区| 亚洲人人夜夜澡人人爽| 91大香蕉伊人| 亚洲av国产av综合av卡| 丝袜美腿制服人妻二区中文字幕| 色爱国产| 欧美大香蕉97| 欧美色图在线视频少妇| 97久久天天综合色天天综合色电影| 久久欧洲| 亚洲亚洲亚洲天堂天堂 | 色噜噜综合在线| 国产欧美一区二区| 92大香蕉| 91亚洲欧美激情| 一级性爱网| 久久性视频| 九九热视频这里只有精品| 天天激色| 久久久久久国产成人| 免费在线黄片视频| 精品区9| 国产蜜臀在线| 97综合激情| 国产乱伦亚洲| 中文字幕在线观看AV| 亚洲影视第一页| 九久久精| 日本肉体xxxx裸交| 啊啊啊啊啊啊啊啊啊在线观看| 中文字幕第2页| 精品亚洲国产成人AV制服丝袜| 久久做97| 国产日韩手机视频在线| 性色高清在线| 欧美色干| 五月婷婷六月天| 91精品国产91熟女| 久操网线| 天天草AV| 秋霞影音一区二区三区| 美女黑人91神马| 美女操逼A A| 日本 免费 一区二区三区 久久香蕉| 中文久久久| 18禁超污无遮挡无码免费网| 加勒比东京热五月天天堂网| 乱伦Av网| 天美传媒精品久久视频| 女同在线视频一区| 明星性猛交ⅹxxx乱大交| 920日本午夜免费| 91精品国产91久久久久久久久久久久| 日韩成人精品视频自拍| 死我十八禁| 国产高潮AA片免费看| 久久久久久99999国产精品| 在线性黄高清免费视频| 欧美 色 亚洲| 激情久久久| 色逼综合| www.99热在线只有精品| 人人操肉肉| 久久久久久久久久久久久久久性生活视频| 中文字幕日韩专区精品系列| 青青草精玖玖69精品| 亚洲精品国语在线播放| 免费成人在线熟妇网| 唐山老熟妇露脸啪啪叫| 国产性爱强奸乱伦大全| 碰超人人在线一区二区三区| 亚洲少妇喷视频看| 岛国视频一二三区| 国产91 丝袜在线播放| 欧美色五月| 在线观看成人性爱免费小视频| 欧美在线第五页| 日本精品不卡一二三区| 国产精品一区二区手机看片| 久99久视频精选| 欧美性巨大╳╳╳╳╳高跟鞋| 夜夜爽夜夜| 成人综合网 欧美| 超碰99在线观看| 天天综合网日韩7799| 天天插网| 国产91美女视频| 久日综合网| 欧美日韩人人精品| 亚洲骚女一区二区三区| 国产激情久久久| 成人免费在线网站| 自怕偷自怕亚洲精品| 日本国产二线女色| 色婷婷综合久久久久中文国产精品一区中文字幕,国产福利电影一区二区三区 | 强奸乱亚洲| 国人欧美精品一区二区| 日本成人A片网站| 人人干黄色| AV一区观看| 国产精品嫩草影院午夜两性 | 亚洲最新中文字幕免费| 尤物黄色在线观看网站| 最新岛国大片| 美女极品一区二区三区| 波多野42部无码喷潮在线观看 | 日韩成人电影AV| 93人人操人人| 69精品久久久久中文字幕| 先锋色眉乱伦资源| 无遮挡h肉动漫在线观看| 国产精品久久久久久久久AV大片| 黄片不用下载在线观看| 婷婷激情四射| av中文字幕在线熟女| 色色色综合| 五月丁香综合网| 强奸乱伦av电影| 欧美人人AAA| 丁香五月激情综合| 欧美色三级片91| 国产视频三区四区| 日本九九久久99| 欧美在线视频观看一二三四区高清| AV男人天堂网| 蜜臀久久99精品久久久久电影| 蜜臀在线视频| 亚洲日本激情| 免费观看网黄| 秋霞蝌科网日本一区| 丁香婷婷久久 | 亚洲精品aa久久伊人| 一色网男人的天堂| 熟妇国产免费一区| 91丝袜在线观看| 欧美日韩操逼动图| 激激五月| 青青青青草av在线观看| 亚洲人妖网| 亚洲精品蜜桃久久久| 俞拍久久国应视频| 秋霞Av理论一级在线| 蜜桃视频成a人v在线| 黑人精品成人一区二区三区| 亚洲色五月| 60秒试看最爽10分钟网站| 自拍啪啪视频| 亚洲黄色a级片| 欧美中文字幕男人天堂久久精品 | 成人欧美一区二区三区黑人一| 亚洲熟女乱熟乱熟妇综合网二区| 外国免费性情大片| 欧美系列在线一区二区| 国产午夜视频| 少妇久久久久久| 性做久久久久久免费观看软件| 亚洲欧美中日韩| 99热一区二区三区四区| 91在线精品一区二区三区| 丁香五月激情综合| 白嫩91在线亚洲| 91欧美长吊| 亚洲欧美黄| 国产精品免费视频人成| 久久99深爱久久99精品| 免费国产电影一区二区| 99精品视频在线观看| 国产午夜视频| 男人天堂导航| 日本操BAV| 日韩一级二级在线| 台湾一区国产高清在线| 国产福利精品最新在线| 偷拍片久久| 91丨九色丨国产丨人妻在线 | 成人八戒网站| 密臀在线视频| 92福利社视频| 欧美91在线| 欧美日本久久精品一区 | 国内自拍 日韩激情 99| 欧综合网| 国产玖玖| 少妇啪啪自拍| 99热在线只有精品| 91 亚洲 欧洲| 在线无码网站| 97在线青| 啊啊啊操一区| 成年人黄色小视频网站| 日本天堂在线播放| 色欧美综合| 99色婷婷中文字幕乱色| 99色在线观看| 另类小说综合网| 伊人久大| 丁香五月天久久精品视频一区二区三区| av天堂精品久久| 走光一区92下载| 国产情侣自拍在线播放| 少妇人妻在线| 亚洲情色五月天 | 五月天综合网| 国产激情综合五月久久| 国产欧美日韩一区二区三区| 成熟熟女国产精品一区二区| 91视频国品一二三区| 女同女同恋久久级三级| 久久精品| 麻豆一区二区三区精品| 黄色欧美性爱视频| 狠狠操狠狠操操| 色悠悠伊人网五月天| 国产成人AV麻豆| 性爱久久| 亚洲五月婷| 天天天天天天天天天天干美女| 国产精品人妻免费精品| 大逼色网站| 9ⅰ久久久天天| 91狠狠色丁香婷婷综合久久精品| 人人摸人人叼| 日韩综合无码色欲vv| 不卡日本一区二区| 天天操天天7| 欧美精品久久96人妻无码| 一级啊性爱在线视频| 久操凹凸视频| 日韩欧美aⅴ综合网站发布| 84YTCOM性无码| 日日爱99| 黄色片A级一区二区三区| 蜜臀99久久精品| 囯产精品强| 99re在线视频国产| 大香蕉伊然在亚洲91| 欧美国产有色电影| 941超碰| 99在线精品观看视频中文| 欧美 日韩 另类 亚洲| 亚洲综合小视频小说在线观看| 丁香六月综合激情| ′ !γ}丶。。久久精品欧美一区二区三区| 亚洲aV性爱| 中文字幕 码 自拍 视频 区| 男人的天堂,欧美亚洲另类国产日韩,日本高清一区二区 | 综合五月婷婷亚洲一区| 丝袜亚洲综合| 性饥渴少妇av无码毛片| 狠狠干91| 在线观看色视频| 中文字幕AV乱伦| 高跟丝袜AV专区国产| www.99在线| 青青草吊丝| 亚洲情色综合网| 久久精品操| 97在线资源| 精品人妻一区二区三区四区| 新亚洲无码| 一线黄色免费性爱片| 激情久久久| 黑丝91视频| 色九九九九| 久操影视| 免费99精品国产自在在线| 日韩综合无码一区久久92| 久久亚洲AV无码专区国产精品 | 日日做夜狠狠爱欧美黑人| 97久久超碰日韩精品| 中文字幕五月婷婷免费| 人人干人人搞人人摸| 夜夜嗨av午夜成人| 久久久久久十| av2014 日韩在线中文字幕| 久久透逼视频| 日韩丝袜人妻AV| 精品无人区麻豆乱码1区2区图片 | 性欧美天天| 久操免费观看| 韩国黄片aaaa| 亚洲色性情三级| 色老大| 丁香六月激情综合| 夜夜高潮夜夜爽夜夜爱爱一区| 亚州免费啪啪视频| 日本色色视频网站| 防屏蔽在线视频| 久久九操在线观看| 伊人网高清| 欧美麻豆成人同性GⅤ在线| 日本A级视频| 韩国一级婬片A片无码天美| www.99视频| 九九九九九九精品| www.丁香五月| 亚洲日韩乱码中文无码蜜桃臀网站| 日韩电影在线观看网址| 色五月激情网| 大香蕉综合网| 4141514逼喷水三级片| 亚洲成人在线乱码色午夜| 亚洲精品中文字幕一区在线视频| 欧美人人天天网| 性爱av网站| 久操精品| 嫩草伊人久久精品| 一,爱啪啪,在线免费视频| 亚洲日本大香蕉1| 韩日无码在线观看| 日韩精品午夜操呦呦不卡影院| 午夜福利视频在线一区| 麻豆区久久久久亚| 精品人妻伦一区二区三区久久| 7777奇米影视久久| 禁十八久久| 精品中文字幕第一页| 欧洲精品久久| 91粉芽高清在线一区二区 | 综合色色婷婷| 天堂69亚洲精品中文字| 蜜桃精品一区二区三区久在线| 手机看av网站在线看| 日本精品五区| 97超碰影音| 欧美性,色九九| 蜜乳AV一区| 天美传媒AV在线| 性色一线| 18禁超污无遮挡无码免费网| 亚洲第一页综合在线| 97五月天| 亚洲伊人a线观看视频| 欧美丝袜亚洲| 亚洲精品久久久久久| 在线视频一区二区传媒| 一区三区啪啪| 2017人人操,人人摸| 97操| 精品人妻少妇| 大香蕉伊人一区在线观看| 日本操大逼| 啪啪啪精品| 欧美劲爆第一页| 欧美色图小说综合| 天天综合站| 我中文字幕6区| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 欧美影音在线| 麻豆性爱视频在线播放| 中文字幕少妇色| 亚洲日本韩国极品一区二区| 人妻嗯啊啊在线播放| 亚洲无码免费看| 中文字幕亚洲永久精品| 日韩成人高清一区二区| 亚洲欧美电影| 青娱乐老司机视频| 超碰色男人操熟女| 无码外流操逼视频| 欧美gv在线观看| 亚洲婷婷丁香在线| 欧美亚洲首页| 国产伊人精品在线| 日韩天天本| 国产欧美黑人丰满在线| 四虎AV在线观看| 日韩丝袜人妻AV| 欧美日动态视频| 国产精品国产| 久久久无码精品人妻二区 | 快播电影网日韩新片| 97亚洲色图| 秋霞怕怕片| 久久av无码| 欧美顶级黄色大片免费| 国产99久久99热这里只有精品15 | 最新av在线| 国产熟女自拍| 加勒比伊人| 无码区蜜乳| 91精品无码人妻系列| 又黑又大又粗| 亚洲精品视频在线| 另类图片亚洲加勒比另类图片亚洲加勒比另类图片亚洲加勒比 | 欧美性高潮| 国产成人亚洲精品无码最新在线| 久久东京伊人一本到鬼色| 抽插无码高清一区| 67914在线精品观看| 久久人妇| 99热销国产这里有精品| 国产精品久久久久久久久久久久久久吹 | 福利在线黄片| 超碰成人最新最好看| 久久综合久久综合人久久夜精品| 90后后入| 操逼逼中文字幕| 91爽啪| 99热精品在线观看| 久久久久久电影| 婷婷日韩一区二区三区中文字幕在线| 天天综和| www.av在线观看| 乱码熟妇人妻久久久| 日本三级A片网站com| 超碰久久精品| 日韩性爱视频在线免费观看| 91国产美女丝袜足交精品视频| 你想操日本小逼吗| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师 | 你懂得91| 正宗无毛一线天嫩逼| 亚洲精品啪视频| 中文字幕综合人妻| 欧美色视频在线| 亚州综合图片| 波多野42部无码喷潮在线观看| 99热在线播放| 日本三级韩三级99久久| 制服中出中文人人精品| 欧美激情亚洲| 屌逼麻豆| 欧美性性性| 蜜臀少妇一区二区| 福利视频网站| 一区二区激情国产熟女 | 蜜桃成人1区2区3区| 青青草日韩免费观看高清在线| 久草免费在线一区二区| 亚洲人精品久久久| 东北丰满熟女国产一区| 蜜桃精品一区二区三区久在线| 色伊人91| 国产区在线| 国产精品宅男免费| 青青五月天| 亚洲91少妇| 特级特黄一级毛片免费| 91国产在线精品| 国产高清1234区| 久久精品女同亚洲女同13| 蜜臀av在线播放一区二区三区| 国产精品成久久久久午夜午夜| 一二三四日本视频高清| 思思热在线视频免费| 77国产精品| 亚州情色j区| 日本日逼高清| 97鸡把在线视频| 色婷婷香蕉| 最新国内自拍av免费| 欧美后入式| 亚洲综合九九| 日本三级一区二区 在线| 91亚洲综合在线| 欧美无圣光在线| 激情五月天色播| 日韩不卡在线一区二区| 亚洲色电影在线| 啊…啊…操我用力操我 | 亚洲黄色视频在线观看视频| 97香蕉人人乳| 国产伦乱91| 国产精品原创巨作?v网站| 中文字幕综合人妻| 久久思思热| 国产网红精品| 狠狠久久手机视频精品| 蜜臀va69| 999热这里只有精品| 亚洲乱色视频一区、二区在线| 高清国产av无码| 天天做日日爱夜夜爽| 在线观看日韩av不卡| 国产毛片在线| 上海一级黄片| 丁香婷婷五月| 成人无码电影在线观看网| 日韩av免费一级电影| 天天躁日日躁成人字幕aⅴ| 九九精品99| 日韩欧美综合激情| 郑州宾馆老熟女露脸啪啪| 操逼1区| 欧美做爰无码A片视频| 日本一级性爱| 91蜜臀熟女| 中出789在线视频| 欧美人妻另类在线| 日本2020一区二区| 97精品久久| 澳门黄片一香蕉视频| 国产三级多多影院2022国产AA一级毛片无码 | AAAA级日本片免费视频| 久久透逼视频| 深田咏美亚洲精品福利社 | 亚洲欧洲国产综合av| 伊人影院中文字幕| 亚洲色性情三级| 台湾佬中文娱乐网久久久久久久久久com | 国产精品白丝AV| 亚洲综合影院| 成人性爱高清视频免费看| 久久黄黄| 狠狠躁天天躁日日躁97| 成人五月天丁香激情综合| 人人干黄色| 玖玖婷婷五月天| 欧美一二在线| 一级AAA片一区二区三区| 黄片qw| 最近2019中文字幕国语免费版| 曰韩精品九九无码| 亚洲日韩欧美一区二区| 91丨人妻丨国产丨丝袜| 亚洲AV成人无码一区二区三区在线观看 | 涩涩久久精品| 久久午夜鲁丝片| 五月丁香| 中文精品少妇天堂| 性爱边摸边日免费AV| 色av中文字| 99在线观看视频在线高清| 日本视频一区二区三区| 久操高青| 色九久| 夜夜爽33333| 综合少妇网| 中文字幕精品区先锋资源| 精品国产国产AV| 五月天我淫我色av| 午夜呻吟欧美| 九九综合九九综合| 婷婷尹人大香蕉免费| 老熟女乱伦片| 亚洲色图a| 中文字幕日韩人妻视频| 性性久久| 精品中文字幕第一页| 国产小炒后入式| 欧美成人一级免费电影| 亚洲自拍欧美色综合| 欧美1区二区三区公司| 很很很很操| 一级黄色牲爱A级片| 一本一道久久综合久久| 国内三级自拍小视频在线观看| 大茄子熟女AV导航| 天天色粽合合合合合合合| 秋霞成人做爱| 九月婷婷| 97视频在线播放| 国产传媒美日韩av| 中日韩免费看男女操逼大全| 国产SV一线| 精品黑人一区二区| 夜夜骑日日| 熟妇熟女视频一区二区三区| 东北老熟女| 蜜桃视频精品一区二区| 三级日本一区二区三区| 中文字幕人乱码中文字的预防方法 | 成人久久久精品| 99热| 黄页av| av在线浏览| 亚洲综合一区二区| 精品免费视频国产一区| 日本精品人妻少妇一区二区| 俄罗斯一区二区视频在线观看 | 清纯唯美第一页| 精品十三区| 丁香五月天视频| 日韩精品亚洲专区在线影视| 一区二区三区免费视频入口| 欧美综合色综合| 日日日骚女人精品| JULIA人妻风俗店中出电影| 国产三区免费在线观看| 人人玩人人添人人澡免费| 色区97| 亚洲天堂一二| 五十路人妻在线| 亚州色图片在线色| 天天天肏屄欧美| 色噜噜人妻av 中文字幕| 婷婷尹人大香蕉免费| 亚洲欧美日韩夜夜| 国产成人精品无码久久| 久热在线精品免费观看| 欧美精品二区视频在线| 亚州男人天堂| 免费精品AB| 欧美人妻一区二区| 另类专区加勒比| 天天操天天日天天干| 99啪啪| 熟妇视频一区二区三区在线观看| 五月婷在线| 久久久18| 日韩人妻资源网| 亚洲色图在线视频| 国产青视频| 亚洲色图欧美色图日韩色图| 亚洲日韩精品久久久久一区壹牛| 亚洲加勒比| 天天综合网~91| 女人香蕉久久毛毛片精品| 中文字幕1区2区| 欲香欲色| 亚洲小电影免费涩涩成人在线高清| 两女互慰AV高潮喷水在线观看| 秋霞一级A片黄色视频| 午夜操逼不卡| 小情侣高清国产在线视频| 一区三区啪啪| 超碰久久性爱| 天天做天天爱天天爽AV| 五月丁香在线| 夜色五月天| 亚洲视频一二区| 夜夜国自区| 日韩一级欧美一级国产一级台湾| 午夜视频久久久久一区| www..com操老师| 蜜乳AV.COM| 久久久爆乳翘臀一线天伦理视频| 一区中文字幕二区日韩| 精彩久久中文| 麻豆成人AV| AV污污污污| 狠狠躁AV| 综合少妇网| 欧美另类精品xxxx| 夜夜操天| 九九久精品| 黄色片一区二区三区四区五区| 97任你吞精| 人人超碰在线观看黄| 躁躁躁日日躁2020| 囯产乱伦一区二区三女| 东京热亚洲一区二区| 国产精品在线一区二区| 亚州综合| 久久久久久久久久久久久久久性生活视频 | 亚洲精品成人激情在线| 青青草啪啪网| 一起草三级AV电影在线观看| 中文字幕一区二区三区视频播放| 综合97亚洲| 日韩性爱1级片视频| 日本有码影片下载| 日韩小电影| 亚洲精品亚洲人成在线麻豆| 东京热精品97综合网| 伊人久久综合影院精品久久久| 天天日日日射| 久草新在线| 国产91美女高潮| 亚洲无码日韩电影| 国产欧美美女免费观看视频| 蜜臀Av一区二区三区| 国产精品无码AV网站| 婷婷15月天青娱乐| 欧美成人一区二区三区在线播放|