亚洲有码Av一区二区三区_国产高清啪啪免费视频_69色视频国产_国产成人人人爆出白浆_国产精品自在线拍国_一本久久伊人热热精品无码_午夜性刺激在线看免费带字幕_助力高品质欧美狂喷水_亚洲精品日韩无码_精品无码一区二区三区蜜臀_麻豆高清国产AV_熟妇人素无码中文字幕_亚洲a级片在线观看_国产欧美日韩三区_99国产成人高清在线观看

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
返回資訊列表
久这精品中文在线观看视频| 六月丁香啪啪啪| 国产超碰在线| 老色鬼成人精品视频下载大在线观看| 日韩簧片免费看| 人妻少妇久久久| 999熟女精品| 无码精品久久| 精品视频日日夜夜| 97综合激情| 看黄片视频免费| 亚洲国产剧情少妇激情| 999精品久久久久久久| 97亚洲中文| 亚洲精品日日夜夜52| 91少妇香蕉久久精品| 99精品国产户外露出| 伊人综合色网| 小说区 图片区色 综合区| 日本福利社| 精品国产99| 欧美综合91| 这里有精品| 人妻 欧美亚洲| 亚洲成人日韩小说| 99爱爱| 一级AV性爱| 美女刺激久久国产欧美| 91久久婷婷| 亚欧洲一区二区视频| 国产嫩草精品A88AV| 中文字幕精品丝袜| 我想要啊 啊 啊| 91N综合网| 人妻少妇久久中文字幕一区二区 麻豆 | 你草精品在线视频| SUV一区二区在线看| 97国产|免费| 狠狠亚洲| 大学生口爆吞精| 人妻一区二区三区| 国产精品久久久久久久久久二区三区| 尤物视频视频官网| 91丝袜美女| 精品人成视频在线观看| 熟女突然公开看18禁影片| 久久久天美| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 人妻插插人妻人| 国产综合久| 国产精品久久久久久无码红治院| 美女露胸露尿口| 12一15性XXXX粉嫩国产| 青青草啪啪网| 岛国片在线播放| 91国内外在线| 91oumei| 少妇无码999| 亚洲综合91| 久久久精品电影| 久久黄黄| 久久精品久| 亚洲蜜桃V妇女| 人妻精品一区二区全免费| 亚洲精品美女久久久久久久久| 蜜桃臀一区二区aV| 蜜臀th| 久久五月份| 性色av大全| www老逼91| 蜜臀久久久99久久久久| 999久久久精品国产| 欧美综合网1| 九七毛片九九毛片| 欧美淫乱视频| 国产精品天美传媒| 国产白嫩漂亮KTV在线| 97国产精品久久久久| 另类天堂| 国产精品久久久久无码AV会牛| 青青草啪啪网| 国产免a费看黄片在线| 日韩精品国模| 裸体女人草逼视频播放一区,二区,三区,四区,五区 | 天天色,天天干,天天干| 国产女同在线观看视频| 中文字幕精品亚洲熟女| 美女诱惑爱爱| 欧美疯狂做爰xxxx| 婷婷激情丁香| 久久精品国产亚洲妲己影视| 男同专区一区二区三区在线| 精品无码一区二区人妻久久蜜桃| 一区二区日韩欧美久久| 曰韩精品视频一区二区| 伊人久久AV诱惑悠悠| 中文字幕一区二区三区蜜臀| 成人九九| 午夜爽爽爽在线观看永久入口姬片| 婷婷丁香六月| 久久九九精品一区二区| 精品欧美А∨无码黑人大荫蒂| 男人天堂网手机版婷婷| 最新日产中文在线麻豆| 无码操逼视频一下| 加勒比性爱成人在线| 狠狠狠狠狠干| 性感女人网页在线观看视频| 最新中文字幕在线亚洲| 啪啪啪东京| 人妻第一页| 日韩电影天堂视频一区二区| 3P乱轮视频| 欧美色www亚洲国产阿娇要播| 91欧美www| 国产成人天堂| 深夜操逼网| 尤物网站91| 黑丝少妇| 亚洲欧美另类激情小说| 丝袜熟女2P| 欧美日韩1234| 欧美色图人妻| 99热网站| 国产成人主播| 日本九九久久99播| 青青草视频导航官网| 国产亚洲精品第一最新| 久热伊人| 99久久久久久亚洲精品不卡| 青娱乐91| 亚洲欧美setu| 久草在| A一级色女| 四季AV综合网址| 欧美午夜熟妇黑人精品91| 园内精品自拍视频在线播放| 天天干人妻| 性天堂| 国产高清1234区| 97干在线| 亚洲熟女乱熟乱熟妇综合网二区| 亚洲熟妇A V黑人| 黄色性爱网网| 色区97| 婷婷伊人| 色噜噜国产精品视频一区二区| 国产小u女在线观看| 亚洲。日韩。欧美| 天天躁日日躁AAAAXXXX国产 | 国产精品久久久久久亚洲色欲| 69一区二区| 国产精品一级二级在线| 人妻精品一区二区在线| 俞拍久久国应视频| 啊好爽快点-国产一区二区三区撒尿在线-成人AV | 开心五月婷婷| 乱伦熟女专区| 3571色综合一区二区二区| 欧美综合色图片| 大香蕉一区二区在线观看.| 96国产污污污丝袜| 色婷婷亚洲婷婷| 八戒无码国产午夜福利| 99热这里只有精品1| 国产av尤物| 污污汅18禁网站在线永久免费观看| 新91视频.cmp| 成人热久久精品| blacked精品一区国产| 高清孕妇孕交 交| 久日91在线| 精品久久99| 午夜亚洲WWW湿好大| 色综合20p| 亚洲精品一区二区三区在线播放| 熟妇女伦乱视频| 内射卯月麻衣| 蜜桃色院一区久久| 日本超碰在线国产一区| 97人人干| 日韩人妻无码专区| 欧美一级A片在线看视频性色| 九九九九9999| 97香蕉网| 亚洲影院无码在线| 九九九九精品一区| 激情情色五月天| 国产精品3| 草伊人高潮喷水超碰| 99热91| 不卡av在线中文字幕| 人人妻人人爽人人精品| 丝袜美腿91| 精品一区99999| 9997se| 亚州色阁| 精品一区99999| 五十路人妻在线| 色呦呦、国产精品| 亚 欧 美 综合| 欧美在线啊啊啊| 亚洲欧美另类图片| 国产精彩女在线观看视频| 国产精品夜夜夜| 两性色网| 亚洲经典啪啪| 久久99热这里只频精品6学生| 人人色人人射人人妻| 翔田千里AⅤHD无码| 亚洲欧美一区二区网址| 另类小说综合网| 亚洲第一精品在线视频| 色9999日韩国产| 91蜜臀熟女| 免费人成?大片在线播放| 激情视屏国产乱伦强奸| 99热亚洲| 久久综合18p| 国产精品久久久久久久久久久久久久久 | 台湾佬大香蕉| 精品国产三级av韩国在线| 日韩乱伦AⅤ| 日韩综合无码色欲vv| 色婷婷亚洲婷婷| 日韩精品 视频一区二区| 一块操欧美性爱| 婷婷五月天基地| 成人在线永久| 欧美精品三级黄片| 亚洲精美粉嫩嫩泬在线观看| 欧美成人9797| 9999九九九久久久| 秋霞一级A片黄色视频| 国产精品一区二区 尿失禁| 91色碰| 欧美亚洲特P| 欧美另类综合久久| 天堂九九九九九九九九九| 婷婷丁香一区二区三区| 91综合站| 天天干少妇| 啊啊啊水好多| 99亚洲天堂| 俺也射| 激情婷婷丁香网| 亚洲不卡不卡中文字幕不卡 | 精品偷拍13p欧美dodk视频| www.激情| 国产一级久久久| 欧美 色 亚洲| 婬女免费一二三区A片| 91色鬼| 大色网久久| 中国操逼无码| www.99热在线只有精品| 伊人热综合| 天堂资源欧美| AV女优男人的天堂| 精品超碰中文在线| av网站免费看| 蜜桃精品一区二区三区ww | 国产又大又粗又长视频| 伊人黄色视频免费观看| 后入日本1234| 久久久久久精品免费看A级| 粉嫩久久久极品| 99精品久久久久久久婷婷| 日韩精品一区二区三区色欲 | 精品白丝一区| 久久久婷婷| 97伊人超碰| 四虎影视永久在线免费| 99少妇| 人人综合| 爽极品影院| 亚州高清色综合| 亚欧毛片基地国产毛片基地| 免费观看成人www精品视频| 日本精品一区二区中文字幕| 久久精品操| ,国产乱人伦精品一区二区三区| 91操熟女| 亚洲揄拍网| 亚洲aV性爱| 亚洲综合草草| 欧美性生活综合| 在线免费观看高清无码视频| 欧美一区二区三区蜜桃| 久久久久久中文字幕中文字幕最新| 91精品女厕偷拍视频| 午夜无码熟妇丰满人妻| 久久丁香五月天| 欧美人与动性人交a| 亚洲男人天堂网久久| 亚洲无码一区二区三区三州| 精品人妻一区二区免费看| 色性荡荡荡荡视频| 91久久免费视频互動交流| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 亚州综合AⅤ| 激情久久av一区av二区av| 夜夜精品视频| 黑丝日韩av丝袜av| 久操com| 天堂成人网| 天天干2区3区| 自拍鲍鱼一区在线高清观看免费| 一区二区乱码福利| 91日日夜夜| 久久,精品一二三| 一本一道vs波多野结衣| 天久久久噜噜噜久久国产精品爽爽| 夜夜久久久| 亚洲高潮少妇| 蜜臀久久久| 久操在97| 久久久91福利姬| BBBBB97COM| 久久激情婷婷| 国产精品三级视频网站| 99久草| 亚洲国产午夜真人一级片中文字幕精品黄网站 | 好爽视频在线观看视频| 激情五月综合网| 激情四射婷婷六月天| 欧美日韩99| 九9热伊人| 啊啊啊好疼| 91在线丝袜| 欧洲色| 精品久久久久久AV无码| 国产日产欧产美韩系列麻豆免费| 色97欧美| 人妻人人澡人人爽人人| 精品欧美А∨无码黑人大荫蒂 | 欧美熟妇精品黑人巨大91| 97超碰超碰| 天天看天天综合成人网| 伊人AAA| 秋霞曰韩R级| 小说区 图片区色 综合区| 嗯嗯啊啊好疼| 熟妇熟女视频一区二区三区| 色色香蕉| 欧美日韩不卡a片| 中文字幕丰满人妻日本| 国产精品白领在线观看| 一区二区中文| 久操精品网| 成人情色一区二区| 欧美性爱免费短视频| 色综合20p| 色性综合| 久久a久久| www.激情| Av色五月| 日韩亚洲中文字幕在线| 成人小说视频在线精品欧美| 欧美一区二区三区互相| 情色大香蕉| 夫妻AV网站| 久草电影网| 国产少妇内射| 草久在线| 超碰97综合在线| 老女人91| 东京热男人天堂| 91处女在线观看| 国产中文字幕在线点播| 一起草三级AV电影在线观看 | 日本熟女不卡视频| 国产女大学生AV| 午夜毛片亚洲精品片国产久久久| 天天干天天日天天射黄色| 青青草天天亲夜夜操网| 丁香九月激情| 亚洲天堂自拍| 91亚洲黄色网| 一区二区乱码福利| 久久精品中文字幕无码l| AV免费在线播放一区| 91日本在线观看| 色五月激情网| 欧美激情一区二区| 日日骚中文字幕| 国产精品一区二区校花| 十八禁啪啦拍视频无遮挡| 亚洲成人免费中文字幕| 国产精品久久久久久片| 久久久久久91香蕉国产| 2019午夜福利视频| 日韩三A大片在线观看| 国产成人精品亚洲日本| 久久 亚洲 日韩 人妻| 密臀在线视频| 亚洲国产综合图区中文字幕| 国产AV毛片| 伊人久久大香线综合无码| 亚洲中文字幕日产无码久久| 少妇色| 欧美另类综合久久| 中文字幕 码精品视频网站| 偷窥自拍亚洲色图| 一二三区精品视频| 亚洲欧美人妻| 日本午夜久久电影| 国产乱不卡| 91N综合网| 亚洲第一免费视频| 亚洲中文字幕日产无码久久| 91丝袜美腿片| 国产精品99精品视频网站| 国产一区二区欧美日本| 尤物视频偷拍免费| 久久双插| 啊啊啊啊视频免费| 中文字幕AV中出| 国产精品成人福利在线| 亚洲综合贴图91| 333kkkk·亚洲com久久| 好吊色一区| 精品无码不卡视频| 先锋音影AV| 久久青青草原免费视频| 黄片直播三级黄片两女一男| 日韩丝袜人妻AV| 性饥渴少妇av无码毛片| 粉嫩AV一区夜夜嗨| 欧美传媒| 欧美亚洲国内自拍| 中文字幕黄片在线| 国内精品久久国产,www香蕉久久五月丁香,亚洲欧美日韩精品永久在线,日本精品一 | 青青草福利视频| 五月天激情四射| 超碰调教97| 亚洲国产亚洲天堂| 9久久久久久| 蜜乳AV色欲AVAV无码| 97人妻免费中文字幕| 美女的肌被草喷水视频| 久久一区二区三区入口| 啊啊啊好想要| 国产高清成人传媒影视| 国产高清1234区| 国产农村妇女毛片精品久久| 欧美黄页在线| 黄aaaaaaaaaaaaaaaaaa色网站| 国产亚热在线久久| 欧洲性爱无码区| 久久熟女久| 久久精品国产AV一区二区三区| 婷婷久久综合| 黑人综合网| 理论久久婷婷网 8| 一级做a爰片性色毛片久久| 久久久性少妇| 天天干夜夜| 欧美日韩国产中文精品字幕自在自线,| 久久久国产av美女私房| 91艹逼精品| 色婷视频| 欧美日韩岛国大片在线观看| 欧美激情另类一区二区| 91狠狠狠| 欧美,日韩,中文,另类| 操一区| 凹凸视频特色日本特黄| 91成人精品在线播放| 91香蕉视频在线观看免费| 激情五月天中文字幕色| 麻豆成人影音在线| 啊啊啊啊免费视频| 91 偷| 欧美97av| 四虎国产成人精品免费一女五男| 日韩三级视频一区二区三区| 国产91久久九九免费精品无码| 精品无码欧美三级| 性色综合网| 九热超碰| 欧美资源| 精品国产Av无码久久久伦古装| 亚洲少妇综合| 久湿久久| 五月天人妻综合| 熟女久久久| 香蕉免费一区二区三区不读| 97久久久精品| 激情情色五月天| 久九干| 青娱乐 成人娱乐在线| 亚州国产精品乱| 国产老熟女| 日日夜夜草草草| 97色色国产视频| 亚洲伊人青青草| 免费AV播放| 婷婷中文字幕| 亚洲精品无码少妇久久| 柠檬AV导航| 五月开心网| 九久久九精品视频| 欧美色天堂网在线视频| wwe 天天干.com| 中文字幕55555| 吉田爱美AV在线| 日日妻色网| 曰本特级特黄特色黄色A级网站高清在线免费看 | 91丝袜在线视频| 久久精品国产99久久,亚洲日韩久久日本一区一区三区 | 色www精品视频在线观看| 欧色网址| 久久这里只精品免费福利| 黄片色区软件| 2001天天操| 免费精品AB| 在线毛片片免费观看| 日韩不卡毛片Av免费高清| 亚洲高潮少妇| 欧美色蜜桃97| 欧美特大黄一级片片免费| 狠狠操狠狠插| 日韩素人无码一区二区三区三州| 青娱乐手机日韩在线视频| 97视频在线视频| 精品丝袜无码一区二区三APP| 欧美国产伊人久久久久| 国产乱码久久| 久久激情四射婷婷丁香五月天| 久干网| 日本国产欧美一区三区二区| 六六久久日韩不卡| 国模91| a片自拍直播视频| 天天色播亚洲综合网站| 亚洲丰满很很操| 久久91精品国产9丨久久分亭| 丁香五月婷婷基地| 日日AAvv| 日韩久久三区| 精品丰满熟妇人妻一区| 日本无码1| 夜夜福利| 日本熟妇人妻中出视频| 嗯~啊~轻一点 视频| 欧美在线官网| 欧美日韩人人精品| 天天操妹子| 欧美亚洲日韩人妻在线观看| 一区二区不卡视| 四虎永久在线精品免费网址| 新怡红院| 日韩高潮一区| 国产Av超碰| 色妹子A V| 91五十路| 日日做夜狠狠爱欧美黑人| 日韩不卡a级视频专区| 风韵犹存大大大大香蕉| 嫩草伊人久久精品| 亚洲码专区| 极品销魂美女一区二区| 情色五月天久久久| 强奸乱伦av电影| 欧美爱爱97| 97亚洲资源| 国产91精品福利在线| 久久噜噜噜精品国产亚洲综合| 五月色丁香| 色色色色日本| 天天亚洲综合| 男人天堂2019亚洲| 欧美日韩性爱操大逼| 久草成人| 久久久久久久久久久久97| 翘臀vidoes| 欧美精品1区2区3区| 9国产超碰| 午夜美女诱惑电源网| 无码久| 国产av白丝| 99精品视频在线观看| 黄片视频观看| 欧美激情久| 亚州操操穴网| 国产亚洲福利第一页丝袜| 欧美精品久久| 97午夜剧场日韩| 丝袜美腿诱惑亚洲欧美视频在线观看| 曰韩操B| 亚洲黄色电影| 久久99久久99精品天美传媒棢·纸:. | 久久久精品中文字幕爱豆| 亚洲色图A| 78m成人视线| 日本性一区| 91麻豆一二三区| 亚洲欧美大| 中文自拍欧美影视| 亚洲欧美国产其他二区| 黄色性爱网网| 少妇干B| 92人人操人人| 午夜丁香婷婷| 99久久久99久久91熟女| 91麻豆天美国产欧美| 亚洲欧美精品一区天堂久久 | 大香蕉在线免| 国产人妖视频一区在线观看| 人妻 中文 日韩| 欧美少妇高潮| 中文字幕一区二区三区人妻不卡 | 99精品国产户外露出| 国产精品视频91久久| 久久男人精品| 色五月激情网| 99综合| 人妻少妇精品一区二区三区| 午夜精品久久久99| 综合色久欲| JuliaAnnXXX888| 欲女人妻性色av| 亚洲欧洲色情高清| 亚爽爽爽爽爽爽爽爽| 国内一级精品| 岛国免费视频在线| 亚洲精品视频在线播放| 香一区二区三区| 国产欧美日产一区二区三区 - 国产欧美日| 久久久久久久久久久久久久久久9| 久久风骚城市| 亚洲国产成人精品久久久国产成人一区二区| 91啦人妻| aaaa少妇高潮大片| 国产欧美日韩臀 | 日韩亚洲美州欧洲综三区一品在线| 欧美中字二区| 插入逼91| 欧美夜夜狠| 久偷拍| av中亚| 天天综合精品| 日产精品久久久一区二区| 91欧洲国产成人久久精品网站| 国产高清无码一区三区二区| 欧美少妇一区二区三区| 欧美色乱| 五月天婷婷综合网| 欲香欲色天天天综合和网| 人人摸人人入| 狠狠色噜噜狠狠狠狠狠色综合久久| caopeng97| 麻豆久久一区二区三区| 920日本午夜免费| 丝袜内射| 日本伦乱九九九综合| 人妻在线臀日韩| 东京热,男人的天堂| 色综合久久88色综合久久天天| 日本999精品视频| 精品人妻免费观看| 九九99精品视频在线观看| 91N综合网在线| 国产在线强奸视频| 欧美大码在线视频| 欧美高清18A片| 九九激情网| 国产丝袜一区二区三区| 一类无码操逼视频| 伊人久久大香线综合无码| 91丝袜在线观看| 99久久久无码| 91香蕉视频在线观看免费| 美女裸体麻豆天美蜜桃91| 天天视频黄| 狠狠搞 亚洲91| 九九热久久99精品re| 91超碰碰在线| 可以看的av| 97就爱干| 丁香五月成人| 天天谢天天干| 9九九国产| 国产成人在线观看综合| 69天堂| 中文字幕超碰CAO| 久久伊人大香蕉| 中国AV美女| 中国熟妇| 狠狠躁AV| 99超级碰免费视频| 亚洲免费成人在线高清无码视频| 丝袜亚洲91| 日日干日日| 中文字幕亚洲永久精品| 美女啊啊啊啊啊啊| 日本最新1区2区3区| 乱伦3P视频| 激情色图| 97久久免费| 日韩在线视频1234| 高潮的A片激情扒开一区| 久久99深爱久久99精品| 欧美日韩资源在线| 日本综合久久| 人妻乱仑一区二区三区| A级片日韩欧美国产欧美视频精选观看 | 91在线免费精品视频| 这里只有精品97| 曰韩少妇无码| 极品内射| 国产日本熟女顶级一区二区三区视频| 亚洲AV成人无码久久精品播放| 人妻精品视频一区二区三区| 日日骚网站| 99色婷婷中文字幕乱色| 欧美人妻二区三区| 99热欧美| 大香蕉手机视频| 激情视屏国产乱伦强奸| 素人一区二区三区日韩| 韩国免费播放一级毛片| 97中文字幕九区| 国产精品白丝www| 久久精品无码不卡| 激情综合网一盗摄| 亚洲熟妇综合久久久久久| 午夜国产成人福利视频| 97亚洲精品| 久久青青草在线视频| 日韩色图 一区二区| 干B| 九九国产热| 亚洲色图伊人网| 另类成人首页一区| 色网综合网| 美女上床网站| 亚洲91大片| 9丨久久九九九| 天美传媒精品一区二区| 亚洲欧洲av影音| 国产一级高清免费观看| 午夜精品久久久| 试看60秒 爽| 成人免费看吃奶视频网站| 久久久97| 蜜臀久久久国产| 91女日逼| 亚洲不卡三级手机播放| 肏逼福利网站| www.伪伪| 国产日韩在线播放av| 国产精品久久久久久照片| 欧美99热| 久久精9| 330dv亚洲成年视频网| 蜜臀久久99精品久久久久久成人小说| 亚洲麻豆av一区二区| 免费看国产曰批40分钟怎么下载| 亚洲av国产av综合av卡| 五月天大香蕉| 丁香7月婷婷| 一本久道久久综合狠狠爱一密臀精 | 婷婷激情一区二区三区俺也去| 人人超碰在线观看黄| 91N综合网| 激情无码日韩| 开心五月天激情网| 日韩人妻精品| 亚洲色图尤物视频| 国产精品乱人伊人网| 亚洲激情深爱文学小说网站| 一本精品日本在线视频精品| 四虎影库国产精品免费| 亚洲图片91| 无码伊人久久大杳蕉中文无码| 亚洲揄拍网| 国产最火爆久久国产网站网站| 久久久婷婷婷| 国语精品对白| 每日更新AV| 中文字幕91综合| 久操B网| 婷婷色香伊人| 99热精品在线观看| 精品久| 好湿好紧好爽 视频| henhen91| 日韩少妇一区二区三区| 亚州精品人妻一二三区| 久久久天美| 小说区 图片区色 综合区| 欧美日韩色图片| 91蜜桃传媒精品久久久一区二区| 欧美中出1| 东京热伊久| 1024香蕉视频| 男人女人18禁片免费看网站| 久九九九九九九热| 亚洲欧美日韩中文播放| 中文字幕亚洲欧美在线不卡| 伊人精品久久网站| 青青草日韩免费观看高清在线| 日本在线视频导航| 九九九九九九九九九国产精品| 天天综合,91综合永久| 五月亭亭六月丁香| 国产精品久久久久久久久久久久久久久| 亚洲成人日韩小说| 性高潮久久久久久久久久久| 熟妇艹鸡八| 亚洲国产日韩欧美熟妇在线| 国产91福利小视频在线观看| 噜噜噜亚洲精品| 1024久久高清视频| 国产浮力影院第1页| 久久久熟女一区| 色99色| 九草在线大香蕉| yazhououmeizongya| 天天综合,91综合永久| 不卡在线观看视频| 日日夜夜噜| 亚洲色图欧美视频| 女同女同恋久久级三级| 夜夜欧美| 亚洲加勒比色图| 91精品电影18| 亚洲精品一区二区三区在线播放| 男人的午夜天堂| 黄色工厂这里只有精品| 熟妇国产免费一区| 打av高清| 蜜桃久久久久久久| 欧美另类色图片| 日本高清有码网址视频| 精品久久久久久中文| 浓厚中出中文字幕在线| 日韩欧美中文字| 夜夜爽妓女| 国产精品一区二区黄片| 操高情无码| 中国AAAAAA黄色片| 粉嫩av平台| 三男一女不戴套的A片| 精品无码一区二区三区色欲| 亚洲本色精品一区二区久久| 久久中出| 日韩特级毛片免费观看全集| 精品无码久久久久久久久果冻糖心 | 91综合熟女| 夜夜欢天天干| 成人青青草原伊人| 97 色综合| 测评在线观看AV| 免费99精品国产自在在线| 午夜精品久久久久久久| 国产精品97超碰| 日韩特一级久久| 国产精品白丝www| 九九亚洲| 久久久久久999| 另类图片天天影视| 88xx成人精品视频| 日本不卡二三区| 污电影在线观看| 天天草AV| 国产久久久久久| 吖在线不卡一区二区国产剧情| 日韩无码一级黄色av片| 韩三级a视频在线观看| 熟女字幕| 偷拍亚洲高清图片| 日本熟妇色熟妇在线视频播放| 蜜桃AV天堂| 日韩性爱小视频| 久久男人精品| 91欧美高清| 日日AAvv| 亚洲成人贴图| 囯产乱伦一区二区三女| 男人天堂日日夜夜| 舔足天天操天天射| 国产特级毛片AAAAAA高潮流水| 国产人伦a片信息免费片| 欧美天天插| 91精品少妇搡搡搡| 99999亚洲| 乱伦3P视频| 九热大香蕉| 国产精品播放| www.99中文字幕| www久久99| 亚洲www91| 精品性爱| 日韩三四五区| 欧美宗合网| 亚洲国产精品无码AV在线| 蜜桃视频一区二区三区在线观看| 日韩三级av片| 日本综合色图| 91成人精品| 婷婷丁香五月天综合东京热| 一区二区国产视频在线观看| 99色网| 99精品无码| 老熟女综合网| 婷婷天堂站| 久久久免费高清中文视频| 人人操人人摸人| 亚洲人人夜夜澡人人爽| 国产精品视频白浆免费| 国产精品97超碰| 91精品人妻电影| 欧美91网站| 桃花色综合影院| 99青青草国产视频| 手机看片日韩人妻| 色偷偷超碰亚洲| 亚洲免费人妻在| 亚洲欧美97| 二色av| 欧美成人免费在线观看| 99.色网| 麻豆久久精品亚洲精品88| 歐美一級亂黃99在綫精品| heyZO天然素人无码AⅤ专区| 精品九九淫乱男| 天天激情综合站| 3级毛片一二| 久久9精品视频| 日韩亚洲国产视频| 亚洲蜜臀精品视频久久| 蜜臀久久一区二区| 伊人精品久久网站| 天堂日本亚洲欧美| 一起草精品人妻| 亲子敌伦对白在线播放 | 人人做天天爱| 精品久9| 青娱乐手机日韩在线视频| 九九色逼| 极品色| 九9精品| 国产人妻精品久久久一区二区三区| 91精品国产一区三一| 999综合色| 2010男人的天堂| 99久久久无码国产精品性啊聊| 中文无线日韩一区| 亚洲精品97在线| 久久激情综合| 久久久久久久强迫| 91性片| 夜夜免费视频| 在线黄页看毛片| 五月丁香社区婷婷日韩欧美精品影院| 欧美精品三级黄片| 超碰导航97| 99蜜桃臀亚洲成人在线观看| 国产又大又硬又长又粗| 一本久道久久综合狠狠爱一密臀精| 嗯嗯啊中文字幕| 亚洲影院成人| 国产精品com| 国产精品播放| 狠狠入| 伊人九九| 欧美综合天堂| 欧美日韩精品久久久久东北老熟妇| 高潮嗯啊性感美女久久久| 青青草在线视频人人想人人上| 狠狠干狠狠干| av无线看| 欧美日本国产日韩激情视频| 八人操人人摸人人看| 久久东京伊人一本到鬼色| 亚洲本色精品一区二区久久| 日本精品五区| 人妻献身系列第54部| 国产午夜精品理论片a大结局| 日韩性爱啪啪视频| 自拍内地三级在线观看| 亚洲中文字幕在现观看| 家庭乱伦国产| 亚洲国产一级精品毛一级精品看免费视频| 日韩欧美成人性爱在线| 天天拍夜夜| 84YTCOM性无码| 亚洲av无码成电影在线播放| 狼狼色丁香久久婷婷综合五月 | 欧美黑人精品一区二区| 亚洲五月婷婷| 久艹伊人精品综合在线| 亚洲情色图片区| 果冻传媒一区二区三区| 亚洲中文字幕av| 女色综合| 五月丁香社区婷婷日韩欧美精品影院 | 久久精品欧美一区蜜桃| 九九亚洲精品| 中文字幕精品码亚洲| 久久久久久久九九九九九九| 91丨豆花丨熟女| 五月天色图影视| 九九九九97| 欧美AB在线| 久久九九国产精品| 无码99| 超碰97首页| 天堂性色| 欧美成人AⅤ大片在线观看| 97舔舔| 成人青青草原伊人| 超碰精品国产无码| 丁香六月婷婷久久综合| 熟女精品一区二区在线观看| 九九碰九九爱97超| 狠狠色噜噜狠狠狠狠狠色综合久久 | 欧美亚洲今日在线| www.伪伪| 精品国产乱码久久久久久久久1| 91欧美成人色站| 天天综合青苹果| 色吧五月| 超碰欧美97资源| 日本性感人妻91| 亚洲午夜免费狠狠干| 97亚洲色图| 色色激情五月天| 欧美九九九| 国产精品老师| 玖玖爱视频网站| 五月天丁香网| 国产成人五月天丁香花| 五月丁香激情综合网| 黄色不卡视频| 亚洲欧美不卡线| 任你草| 亚洲天堂精品日韩电影| 亚洲 欧美 天天| 黄色操人| 久久6热精品99视频| 亚洲欧美国产其他二区| 蜜桃臀一区二区aV| 色综合av男人天堂| 天天摸天天操视频| 免费精品人妻一区二区三| 伊人久久久日韩一区| 国产乱伦亚洲| 香蕉大久久久| 日韩另类| 偷拍欧美激情| 内射卯月麻衣| 啊啊啊97视频| 欧美gv在线观看| 欧美韩国你懂得在线| 日韩97超碰中文字幕| 国产精品一二三区福利| 欧美日韩操逼嗦吊| 永久电影三级在线观看| 久久二| 九九碰九九爱97超碰| 91熟女丨91老女人| 97超级久久| 国产毛片片精品天天看视频| 欧美探花网| 精品一区二区三区免费古装毛片香港三级日本三级人妇 | 久久同城AV| 亚洲欧美一区二区不卡视频播放 | 色综合V| 亚洲一区二区三区欧美日韩| 日韩无码成人电影| 欧美洲精品一级| 亚洲影视高清三级-草1024榴社区入口-品爱AV| 强奸乱伦麻豆| 26uuu国产| 97色色色综合网站| 欧美在线l亚洲| 91国精产品| 四虎免费在线观看| 亚洲欧美日韩免费观看| 91午夜无码| 免费精品99| 欧美性战999| 亚州综合AⅤ| 日本黄色天堂| 在线视频资源| 精品中文字幕第一页| 秋霞免费AV| 粉嫩国产精品久久粉嫩| 国产女人9999| 男人久久天堂| 免费A V在线播放| 一区二区三区四区五区高清无码永久视频 | 白丝少妇一区二区| 欧美性Fer办公室秘书| 国产一区自拍欧美日韩| 婷婷久草一区二区三区| 欧美精品亚洲精品日韩传电影| 婷婷av在线中文字幕| 国产亚洲综合欧美一区| 亚洲drav色图| 欧美不卡五十路| 久久香蕉网| 玖日综合网| WWW黄片COM| 精品国产网站| 天天噜| 91精品国产高清久久久久久,亚洲成人 | 少妇被c 黄 免费观看| 3028国产精品| 午夜精品久久久久| 日韩十八禁| 五月婷婷五月天| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 久久久久亚洲三级电影| 混色激情av| 蜜臀久久99精品久久久电影| 国产99 中文字幕日韩小视频| 亚洲宗合网| 亚洲天堂一区二区久久| 射丝袜高跟鞋99| 操逼视频国产无套| 蜜臀99999| 色y情视频免费看| 日韩精彩免费| 日本操逼aaaaa| 久久久久久久久久黄色网| 国产精品999aaa| 91天堂视频| 九九干| 国产久久久久影院老熟女| 一区二区三区黄色片a| 人妻熟妇久草在线| 日韩精品视频在线观看一卡二卡| 亚欧操逼片在线观看 | 欧美日韩大香蕉| 亚洲日韩肥臀视频在线观看| 极品销魂美女一区二区| 99无码| 2021国产成人精品久久| 99国产在线绯色一区| www久久国产精品| 操操操操网黑人| 国产一区二区三区视频在线看| 久9久| 无码操逼视频一下| 天天在线91| 台欧久久精品视频| 日韩亚洲精品一区二区| 黄站在线免费观看| 亚洲丝袜B诱惑| 啪啪啪东京| 国产精品乱码久久久久久| 日本色色色视频| 日本一级特级毛片视频| 久久大陆| 色综合98|