亚洲有码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
返回資訊列表
一线黄色免费性爱片| 欧美暴力猛交| 欧美夜夜草视频| 午夜成人福利影视| 国产亚洲色婷婷久久99精品91葵花宝典 | 丁香五月激情啪啪| 九九热九九| 色爱综合网欧美| 亚洲日韩成人性爱视频| wwwxxx日本爽| 亚洲精品九九九| 在线小视频| 亚洲图片 91| 人人考人人摸人人干| 大色综合| 一区二区三区一亚洲中文字幕、综合区灬 | 中文字幕亚洲永久精品| 亚洲欧美电影| 精品人妻一区二区三区四区| 青娱乐大香蕉| 91天天日| 99在线免费视频| 欧美日韩电影成人在线| 欧美一区二区三区互相| 91亚洲电影| 五月天人妻综合| 中文字暮97| 91黑人无码激情在线| 午夜福利国产欧美日韩夜夜| 精品人妻丰满熟妇一区二区三| 九久精品| 欧美少妇性乱| 蜜桃在线观看一区二区三区| 精品一区二区三区蜜桃臀赵总| 在线免费观看日韩一区| 无码丰满熟妇一区二区浪潮AV| 欧美资源| 精品人妻少妇| 国内偷拍精品一区二区| 中文字幕高清精品一区| 久久久久久亚洲Av无码| 亚洲加勒比久久日本道| 日韩亚洲欧美中文字幕| 亚洲第一黄色av网站 | 五月天婷婷色色| 久久久久久久久成人av解说| 亚洲国产av中文字幕久久| 欧洲精品一级二级精品综合视频综合| 欧美—性—交—色| 九九无码| 国产色产精品在线观看| 狠狠久久手机视频精品| 99国产精品视频尤物| gogogo免费高清看中国国语| 九九视品黄色| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 黄aaaaaaaaaaaaaaaaaa色网站| 激情无码日韩| 2024人人操人人摸| 天天爽天天干| 久久久不能久久久久| 91人妻超碰| 亚洲 图片 欧美 色图| 伊人久久大香蕉线AV五月天| 9999亚洲精品| 国产97在线播放| 在线天堂资源亚洲| 国产农村妇女精品| 亚洲啪AⅤ永久无码| 国产乱伦亚洲| 久久久成人国产精品无码| TS人妖另类精品视频系列 | 免费中文在线| 欧美视频在线第3页| 天美一二三在线观看Av| 国产乱子伦一区二区三区免看| 欧美最婬乱婬爆婬牲视频| 国产熟女自拍| 欧美日韩夜夜| 久久久精品网| 日本三级一区二区 在线| 色官网在线| 久无码| 亚洲精品天天影视综合网 | 亚洲成?V人片在线观看福利| 成人资源中文字幕在线观看天天| 中文字幕久久亚州无码| 九九av| 欧美色图欧美| 你想操日本小逼吗| 人妻碰碰碰碰碰碰| 囯产精品强| 97在线视频免费观看| 久久久久久69国产一区二区| 欧美另类色图片| 色香在线| 日韩在线观看三级电影| 日本精品成人无码| 爱啪精品一区| 久湿久久| 92性色国产午夜福利在线661| 日韩欧美亚洲自拍偷拍| 婷婷99| 又摸又舔在线观看网站| 国产美女自拍AV| 精品国产人成在线| 婷婷在线播放| 97久久超碰国产精品| 影音先锋日本一区二区| 男人的天堂2010| 老女人91| 26uuu性| 毛片视频白嫩| 人妻欧美| 伊人99热| 亚洲欧美综合网| 久久一区二区高清免费| 蜜臀AV成人精品蜜臀| 伦理第一页| 久久久久久国产成人| 国产精品国产拍高清AV| 97色欧州| 91在线精品一区二区三区| 久久男女激情视频网站| 欧美国产操逼| www.91理论| 日韩精品操少妇| 国产一级内射高清视频 | 偷拍盗拍亚洲色图图片| 五月丁香六月激情综合| 精品少妇一区二区三区| 亚洲色婷婷| 国产97在线播放| 亚洲色色探花| 日本在线15p| 啪啪啪东京| 啊好大好舒服| 麻豆国产97在线| 啊a一区在线| 久热热| 巨爆乳肉感一区二区三区竹菊影视| 韩日精品福利视频一区不卡在线免| 人妻一区二区三区视频 | 热G综合热G中文| 免费簧片在线观看| 超碰97极品9| 超碰碰碰碰| 91亚洲图片| 色婷婷电影网| 亚洲久久久久| 大香蕉99热| 国产一区二区三三视频| 欧美 日韩第一性色| 大香蕉免费乱伦视频| 亚洲少妇免费视频\| 亚洲欧美日韩国产丝袜自拍中文| 日韩探花精品在线视频| 亚洲图片91| 激情五月天婷婷| 日韩欧无码一区二区三区免费不卡 | 麻豆精品久久久久久久| 国产亚洲精品A在线观看下载| 啊啊啊啊啊啊啊好爽不要| 丰满岳乱妇一区二区三区| 国产精品久久久999| 五月丁香拍拍激情综合三级| 四虎影视国产精品| 青娱乐亚洲热| 久久av成人无码免费| 一区e区三| 大香蕉综合网| 久久九九视频九九视频| 国产精品乱码久久久| 欧美中文字幕男人天堂久久精品 | 人人看人人摸人人色| 97视频免费播放| 欧美性色综合网| 欧美日韩国产高清在线一二三区| 日夜精品| 操逼999| 思思热在线| 日韩无码操逼片| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 日韩不卡毛片Av免费高清| 91爱剪切久久| 高清不卡 中文 人妻| 另类图片五月| 亚洲欧美日韩精品久| 躁躁躁日日躁2020| 天天干夜夜操一区二区| 97色插| 五月婷婷五月天| 日本精品一级二级三级| 蜜臀AV一区二区三区| 欧美日韩黄色片一区二区三区四区人与兽做爱 | 久久久久久久久久9| 色www精品视频在线观看| 91美女中出| xxx0国产在线播放| 欧美一级美片在线观看免费| 九九AV| 成人九九| 亚洲在线观看| 色天堂在线观看| 青青草亚洲一区 | 亚洲综合图片在线| 中文在线久久字幕| 亚洲AV小说| AV电影在线播放| 国产综合操逼高清| AV不卡在线| 97手机日韩| AV在线播放网址| 黄色不卡视频| 亚州高清色综合| 后入人妻一区| 色老汉色| 中文字幕制服欧美久久一区| 日本少妇va7777| 日韩国语字幕| 亚洲图片欧美91N| 狠狠色丁香| 99在线精品观看99| 男人的天堂不卡一区二区| 国产操逼逼网| 天天躁日日躁AAAAXXXX国产| 性暴力欧美猛交在线直播| 国产精品久久久啊| 国产精品午夜AV完会免费| 欧美96精品在线| 欧美精品97| 97伊人网| 亚欧成人综合影院| 久伊人网78| 色网亚洲人| 一本色道久久综合精品婷婷| 曰韩中文人妻视频| 久久夜黄色无码A级大片| 九月丁香婷婷色| 日本在线视频导航| 欧美亚洲激情小说| AV丝袜东京热| 夜夜爽夜夜摸夜夜操免费视频| 熟女露脸激情自拍视频| 亚洲少妇视频| 国产狂喷潮在线精品| 金莲网址| 日韩人妻资源在线看| 欧美不卡在线美女| 91久久国外网| 夜夜躁狠狠躁日日躁av| 91看黄片| 97色色视频| 97高清啪啪| 亚洲人码13| 97人人夜| 久久riav中文精品| 成人夜夜爽| 秋霞午夜视频一区二区| 欧洲精品二区| 国产AV色黄看到爽| 日本久操视频| 精品999一区二区| 亚洲图片激情综合另类| 超碰91在线| 嗯嗯嗯啊啊啊操的我好爽 | 久久人妻一区二区三区高清| 91五十路| 噜噜在线| 玖玖草久草99蜜月一区二区三区| 91美女在线| 强被迫伦姧在线观看无码网站| 欧美亚洲| 国产久久日韩网站导航| 熟人人妻少妇精品久久| 国产野战露脸在线播放| 亚洲熟妇自偷自拍另欧美| 91成人国产综合久久精品蜜月| 蜜区区视频79| 久久久久亚洲AV无码专区少妇| 99热91| 男人网站婷婷| 国产精品久久久吖| 欧美精品第3页| 亚洲视频二区| 欧美综合天天| 精品一区二区3区| 欧美熟妇人体| 久久精品国内Av熟女高清| 久久久成人国产精品无码| 欧美 传媒 麻豆 日韩 偷拍| 97超碰欧美手机| 天天天天天天天天天天干美女| 性爱动态120秒| 97在线日韩中文字幕| 日韩熟女乱伦中出| 香蕉av一区二区三区| 日本成a人v网站在线观看| 91精品黄在线观看| 亚洲少妇综合在线播放| 嫩草影院永久在线制服丝袜| 日日操免费视频| 1956日韩精品| 日本中文熟女视频| 久久亚州高清| 国产多人在线观看视频| 国产盗摄美女如厕大神作品在线观看 | 九九综合九九综合| 天堂麻豆天美| 美女极品一区二区三区| 久久久111| 26uuu国产亚洲综合| 精品久久久中文字幕不| 欧美极品| 国产亚卅97| 国产黄色影片在线观看| 欧美亚洲AN| 亚洲色色探花| 人妻激情视频| 91无码中出人妻视频| 殴美性天天| 精品夜夜澡人妻无码| 久久久精品网| 99re这里只有精品3| 国产在线激情| 九九九午夜| 91天天| 久久久久久性爱视频| 欧美v亚洲v综合v国产v妖精| 婷婷国产精品九区| 国产又色又粗又黄又爽| 亚洲性图91| 亚洲偷拍自拍在线视频| 91精品人妻一品二品三品| av九九| 久久久9999| 青青操在线亚洲视频观看欧美在线| a男人的天堂久久一级A毛片| 九九九久久久久| 欧美老妇曰批的视频| 精品丰满熟妇人妻一区| 日本 免费 一区二区三区 久久香蕉 | 欧美伊人久久综合网| 狠狠躁日日躁夜夜躁A| 九九碰九九爱97超碰| 久久久久久久久久久精| 熟女探花啪啪| 大干人妻| 女同在线视频一区| 家庭乱伦性爱av| 好涩综合| 一区二区三区色综合| 九九激情网| 亚洲一区二区三区春色| 91天天美女| 亚洲不卡av在线| 人妻熟女av国产网站| 91无码人妻精品一区二区三区蜜桃| 视频二区美腿丝袜制服人妻欧美| 无码丰满熟妇一区二区浪潮AV| 蜜臀99久久精品| 久久免费看高潮毛片韩国| 熟妇操花| 午夜乱轮操逼视频免费看| 97久操| 91亚洲欧美色图| 日韩人妻一区二区精品| 园内精品自拍视频在线播放| 网站A V在线| 狠狠97| 操b网站亚洲无码| 色婷婷影院| 一个人免费视频观看在线WWW| 色偷偷综合91久久噜噜| oumeisetupian| 999岛国大片| 亚洲影院成人| 欧美岛国精品在线观看| 中文久久久| 日本熟妇自慰性高潮一区二区三区| 一区二区久久天天干狠狠| 亚洲女毛多水多21P| 国产AV色黄看到爽| 乱伦一二三| 亚洲天堂一区| 欧美精品精品一区二区| 亚洲国产成人精品久久久国产成人一区二区 | 五月激情啪啪| 岛国成人av在线播放网址| heyZO天然素人无码AⅤ专区| 一级二级在线观看| 中文高清一区二区的| 国产最新小视频在线播放下载| 亚洲人妻在线精品| 欧美色人| 人妻色偷色噜| 人人妻人人爽 97人人看碰人免费公开视频| 欧美姓爱综合网| 人人妻人人澡人人爽人人精品浪潮| 91伊人久久在线| 国产精品久久久久久久久久久久久久久| 蜜色网色哟哟| 婷婷丁香成人| 91精品久久久久久综合五月天| 激情专区综合| www.婷婷五月天| 激情五月天婷婷| 91国产精品在线看| 天天淫人人妻日日色| 99操视频| 欧州色图区| 人妻天天爽夜夜爽精品2| 熟妇视频一区二区三区在线观看| 少妇与黑人高潮在线| 美国久久一二三四| 欧美视频一区二区三区| 97视频在线播放| 日本一级特级毛片视频| 亚洲高清无毛一区二区| 天天综合,91入口| 丁香啪啪| 一二三区精品视频| 97资源制服丝袜| 60秒不遮不挡| 九九热五区| 亚洲国产精品无码AV久久久| 婷婷三区| 51久久夜色精品国产麻豆| 综合色图,成人综合网| 在线日韩日本亚洲国产| 中文一区二区三区影院| 亚洲成人精品久久久| 五月丁香拍拍激情综合三级| 夜夜爽夜夜操| 中文字幕AV片| 中文字幕91综合| 日韩无码三级影院| 久欲AV| 9l视频自拍9l九色成人| AV天堂国产| 欧美成人国产精品| 在线国产一区二区av| 精品78| 伊人丝袜美腿高跟在线观看高清| 97最新在线播放视频| 青青草一区二区高清无码视频| 精品少妇一区二区三区在线视频| 亚洲巨爆乳一区二区三区四季网| 亚洲男人的天堂AV| 激情文学网伊人| 欧美一区二区观看在线| 亚洲精品一区二区日本| 91中出在线| 一区二区国产视频在线观看| 欧美天堂日韩三级国产传媒| 色丁香五月婷婷| a天堂视频| 亚洲无码太久| 精品视频免费在线一区| 亚洲精品免费中文字幕| 91狠狠综| 韩国三级一线观看久| 96超碰网| 97这里有精品| 欧美国产婷婷久久| 国产老太乱伦一区| 性暴力欧美猛交在线直播| 在线人成亚洲视频免费观看| A级片日韩欧美国产欧美视频精选观看| 亚洲精品官网在线观看| 99亚洲精品| 狠狠色伊人亚洲综合网站色| 91东京热男人的天堂| 欧美日韩色综合网| 激情小说五月天| 极品白嫩美女白浆成人福利在线看| 美国日韩黄片| 新久久AV| 欧美在线播放aaaa| 性欧美另类高清| 第二页中文字幕| 亚洲综合性网址| 九久久精品| 五十路熟女人妻一区二区三区四区五| 亚洲精品性爱片| www.久久久久| 97超碰这里只有精品| 一区超碰一区| 熟女激情综合网| 91超碰人人操| 亚洲大色堂| 98超碰欧美| 国产青一二三| 高清肉丝中文无码| 97干在线| 欧美视频在线第3页| 在线电影亚洲色图| 中文字幕,人妻,日韩| www.婷婷五月天| 久久啊啊啊视频| 亚洲综合伊人无码久久| 啪啪AV导航| 欧美中文字幕一区| 欧美色就是色| 蜜臀国产AV中文字幕| 青青草在线视频欧美| 男人午夜天堂| 床上啊啊啊一区二区三区| 天天操天天日青青草超碰av| 亚洲一区中文精品| 久久久久13| 极品少妇久久久| 91人妻Pr| 天天综合中文字幕 91| 国产一区二区视频在线播放| 91AV天美在线视频| 久久香蕉综合一本到3atv| 久久久久密臀一区二区| 韩国一级婬片A片无码天美| 日韩性色b| 成人怡红院| 天天插天天舔舔天天干| 国产强奸乱伦无码视频| 日韩在线人妻网站| 欧美精品久久96人妻无码| 91一起操| 亚洲蜜乳av| www国产天美久久久| 亚洲综合成人网| 欧美黑人性猛交91| 91性生活久久久| 黄色AAAAA欧美| 九九九九热只有精品| 国产超碰在线| 中文字幕天堂在线| 又大又长又粗又爽又黄| 啊啊啊啊啊啊啊啊啊啊在线观看| 日本理论在线| 秋霞 色色| 日韩精品三级片长长久久| 乱伦1色页| 人妻三级在线中文字幕| 香港日本韩国人妇99www.wccm20| 精品国产久热在线观看| 久久性爱精品一区| 国产白丝精品在线观看| 日日不卡av| 欧洲综合视频| 欧美性爱一级操| 久久99视频| 久久精品国内Av熟女高清| 日日日骚女人精品| 67914在线兔费成人视频| 污污汅18禁网站在线永久免费观看 | 97网站在线观看| 亚洲美女黄色| 啊啊啊啊免费视频| 精品午夜福利| 国产精品高清2021在线| 欧美午夜视频免费观看| 亚洲另类小说卡通动漫| 欧美性爱一级操| 人妻99p| 美女诱惑1区2区| 午夜福利在线视频1000| 亚洲天堂资源| 在线观看中文字幕| 日韩国产不卡在线视频| 午夜国产成人福利视频| 开心五月婷婷激情| 99www.bibizy香蕉资源国产一区二区三区高清 | 一级@啪啪视频| 欧美成人午夜免费福利785| 免费毛片在线播放| 综合色拍| 精品黄色电影| 偷窥自拍亚洲天堂网爆| 欧美激情 日韩精品| 婷婷10月天青娱乐| 人妻干天天| 嗯嗯嗯好爽| 欧美日韩国产人人| 亚洲成人黄色在线观看| 极品色www影院| 超硑97精品| 伊人热综合| 婷婷五月色| 国产91 丝袜在线播放 | 欧美久久九九| 四虎精品一区二区| 国产丝袜视频| 人妻少妇精品久久久久久| 日韩熟女乱伦中出| 亚洲男人的天堂在线看| 国产无码精品高清| 色眯眯射| 思思热免费在线视频| 91色综合激情| 中文字幕精品亚洲熟女| 婷婷AV一区二区三区| 操曰本熟女| 黄色免费网页无码| 91在线一起| av国产无码| 蜜臀99久| 久久黄色网址| 91网九色蝌蚪操熟女| 日本一区二区三区精品| 精品无码欧美三级| 国产25页| 狠狠操狠狠爱| 26uuu久久| 97在线观视频免费观看| 国产精品99久久久www| 日日躁夜夜躁狠狠躁超爽| 东京热亚洲一区二区| 中文字幕熟女人妻丝袜| 久久久久久久一级黄色打同平台| 精品免费一区| 熟妇熟女视频一区二区三区| 风骚少妇视频中文字幕| 九九精品热| 好爽视频在线观看视频| 成人久久无码www| 欧美日韩香蕉| 唯美清纯 妖精视频| 五月天丁香欧洲日韩| 超碰日韩人妻| 久热精品在线| 色好看av| 一区二区娱乐网站| 一起草三级AV电影在线观看 | 97色碰| 欧美色图人妻| 欧美日韩国产中文精品字幕自在自线,| 家庭乱伦国产精品| 色欲久久99精品久久| 日韩草久视频| 亚洲午夜av| 成人精品一区二区91毛片不卡| 青草地一本线一区二区三区| 99xav| 天天添天天干电影| 无码日韩网站| 亚洲第2页| 欧美性爱精品七区| 国内一级精品| 超碰九九| 伊人久大| 一区二区亚州激情久婷婷欧美| 亚洲欧洲小说图片视频| 亚洲经典啪啪| 日本123区操B视频| 人人操,操人人| 激情抓乳插进去啪啪啪日韩| 黑人猛交| 粉嫩av在线| 国产乱子伦一区二区三区在线观看| 97超碰在线资源网站| 免费黄色片。| 欧美熟妇操操视频| 欧美精品成人在线播放| 操逼片国产| 97在线亚洲| 宗合情欲网| 日韩少妇丰满亚洲| 日韩/97| 欧美精品三级黄片| 色悠久| 亚洲激情av| 在线五区| 美国aaaaa一级黄片| 人人妻人人操人人乐| 久久日韩肥臀| 免费毛片在线播放| 伊人视频| 白丝一区| 情色五月天久久久| 男女无套 免费网站| 久久xx| 日韩性爱网址| 少妇69中文| 亚洲精品熟妇1区2区3区。| 猛猛干| 97久久久久| daxiangjiao你懂的| 精品一区二区三区四区外站| 亚洲久久久| 国产无码一二三区| 色诱avtt| 欧美做爰无码A片视频| 翘臀vidoes| 国产精品伦理| 亚洲少妇综合在线播放| 久久这里精品国产99丫e6| 免费视频观看60秒| 搡老熟女国产1000部| 欧美综合亚洲| 国产女大学生AV| 欧美人与动性人交a| 国产乱伦一二三区| 欧美做爰无码A片视频| 亚洲精品天天影视综合网 | 欧美九9 9 9| 中出91视频| 综合欧美日本三级| 激情久久日韩精品中文字幕麻豆| 家庭乱伦国产精品| 久久最新视频免费观看| 欧美性爱一区二区| 一区二区三区男女操逼黄色小电影| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 自拍偷拍国产欧美日韩韩| 综合熟妇一区二区三区| 2001天天操| 日本日逼视频网| 亚洲日韩视频二区| 97国产超碰| 亚洲素人综合| 国产精品亚洲四五区在线观看| 日本一级一级一级一级| 国内毛片国产欧美拍| 无码78| 色偷偷综合91久久噜噜| 精品无码一二三四区| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | 在线五区| 精品久久久久久久久久久久| 九九Av| 日韩AV熟女乱伦| 黄色电影在线播放综合网站| 一区在线精品中文字幕| 九七超碰人人乐| 伊人嫩草| 久久大精品乱码视频人妻熟女| 少妇毛片久久| 日韩人妻大香蕉| 国产丝袜美女在线一区| 日韩熟女三十乱伦| 97天天操| 9118禁| 91青青| 69久久| 超碰这里有精品| 欧美色图片91| 久久色人体| 久久精品国产亚洲AV片多多| 做爱A级亚欧| 成 人片 黄色大片| 久久美女国产| 变态乱伦伪娘灌肠一区二区| 精品国产91内射久久| 欧美性爱综合,免费| 91大神精品长腿在线观看网站| 国产99999| 欧洲久久一二线| 中文久久久| 日本乱人伦片中文三区| 人人弄人人摸| 草草影院最新网址| 天天搞在线综合网| 国产动漫操逼视频| www.婷婷五月天| 日韩丝袜二区| 国产玖玖| 亚洲美女精品| 久热久操| 台湾佬中文娱乐网久久久久久久久久com | 亚洲色图8| 制服丝袜第二页| 五月婷婷青青草娱乐伊人| 狠狠操狠狠燥| 精品传媒在线一区| 日本操逼视频免费| 日本精品无码三级网站| www网站黄| 欧美日韩情色一区二区| 精品久久久久黄少妇| 91美女视频电影| 久久久555| 国产精品麻豆成人av| 亚洲 欧美 制服 另类 自拍| 亚洲成?V人片在线观看福利| 五月激情在线| 四虎884a| 9精品久久久久| 国产精品99精品视频网站| 亚洲黄色网址视频| 99色视频| 欧美 综合| 91 天天综合| 丰满人妻被猛烈进入中| 亚洲熟女中文字幕在线| 啪啪视频mP4| 伊人久大| 不卡av免费在线网址| 久久草在线综合视频| 麻豆AV一区二区| 中日韩久久久免费看| 视频国产欧美在线播放| 97最新在线播放视频| 91久热这里只有精品| av草草在线电影| 91夜色| 日韩午夜啪啪视频| 日本精品国产视频| 91九色丨风韵犹存| 日韩熟女乱伦中出| 九九精品美女高溯喷水| 加勒比色综合| 免费国产电影一区二区| 精品久久99| av线电影| 百度百度日本操逼| 国产毛片精品一区二区色欲黄A片| 嗯嗯啊啊操死我| 大香蕉中文在线| 欧美日韩一区二区三区四区蜜桃| 亚洲欧美另类少妇精品| 91美| 日日夜夜狠狠| 日韩精品一区,二区 九九...老司机| 欧美日韩国产一区二区小黄片大全| 国产激情在线| 久九9精品| 性暴力欧美猛交在线直播| 爱爱60秒免费视频| 日日躁天天躁狠狠躁| 白嫩国模丰满一二三区| 亚洲天堂自拍| 热久久国产| 人妻天天爽夜夜爽爽| 国产精品诱惑| 91丨九色丨熟女高潮| 99在线精品观看视频中文| 91东京热男人的天堂| 欧美精品丝袜久久久中文字幕| 大屁股熟女一区二区三区| 国产美女在线精品免费看| 久久久亚洲精品电影免费看| 亚洲熟女av中文字幕| 91中文在线| 大茄子熟女AV导航| 五月色综合| 哈哈操 大香蕉| 啪啪啪综合网| 精品丰满熟妇人妻一区| 9久久精品| 91亚洲丝袜熟女| 久久激情视频| 亚洲丝袜二区在线| 色五91| 人妻欧美| 丝袜综合色图| 极品综合| 久久9999| 五月天激情网图片| 热热色91| 色婷婷婷五月天激情四射| 五月丁香六月综合缴清无码 | 中文字幕人乱码中文字的预防方法 | 美国久久一二三四| 国产一级特黄大片处女| 91色s| 熟女六十路| 91殴美| 精品人妻一区二区三区-国产精品 一个人在线看的黄色电影网站 | 婷婷五月天成人网| 男啪女色黄无遮挡免费观看| 欧美人妻二区三区| 人人操人人操人人操人人操人人操人人人11.CM | 骚乳在线| 欧美经典一区二区三区| 丁香7月婷婷| 91男女啊啊啊| 日本精品网站在线中文| 中文字幕一品色图| 九九色色| 6080YYY午夜理论片在线观看| av东京热男人的天堂| 二色av| 九月激情婷婷| 爱我干综合| 又大又大又大又粗爽高潮观看 | 岛国精品视频在线观看| 91熟女在线| 亚州色国| 大香蕉九九| 成人乱人伦一区二区| 夜夜操一区二区| 激情五月综合网| 国产自产自拍| 精品999一区二区| 91 丝袜在线观看| 99色在线| 免费簧片在线观看| 久久久无码视频| 日韩精品一区,二区 九九...老司机| 久久久婷婷婷| 欧美一区二区三区蜜桃| 日韩性爱小视频| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 懂色Av| 亚洲久草AV色图| 精品国产一区二区三区久久久蜜臀 | 啊啊啊爽爽| 色男人色天堂东京热| 亚洲最大黄网| 欧美做爰无码A片视频| 国产精品人人爽人人做可爱福利| 啊啊在线| 美女黄码视频午夜| 歐美一級亂黃99在綫精品| 思思热免费视频观看| 岛国激情视频在线观看| 97干97色| 亚洲久9| 蜜臀在线看片| 亚州高清av| 久久国产精品,久久国产| 九色97| 在线a v| 欧美一级特黄淫片在线观看| 2017av无码免费无线播| 超碰久超碰久| 亚洲人妻久久久| 热热色色综合| 丝袜内射| 志村玲子视频一区二区| 日本操BAV| 国产第12页| 强奸乱伦AV网址| 性爱综合一区二区| 福利视频合集| 精品福利| 久久久久久九九九| 欧美爱爱97| 欧美高清16| 久久αⅴ| 欧美天天综合| 蜜臀一区二区三区亚洲最新章节在线观看 - 高清蜜臀一区二区三区亚洲全集播放 | 免费久久精品麻豆一区二区av| 思思性爱| 大屁股xxxxx| 久久香蕉国产线看观看猫咪av| 精品亚洲国产成人精品| 青娱乐欧美激情一区二区 | 超碰97最新人妻| 国产少妇高潮| 大香蕉欧美国产日韩高潮| 男人的天堂在线| 1.igao73.com 加入收藏 免费专区 国产精品 中文字幕 日韩精品 欧美精品 精彩 | 亚一综合久久久久久久久久| 亚洲最新中文字幕免费| 成人性爱AV在线免费观看| 欧美性生活男人的天堂| 久久男人精品| 日韩国产不卡在线视频| 精品一二三区久久AAA片| 特级丰满少妇一级AAAA爱毛片| 欧美成人一区二区三区在线播放| 牛黄色久午久| 五月天婷婷色色| 日韩女优中文字幕| 欧美成人精品一区二区三区| 91爰爱欧美| 十八禁一区二区无码观看| 极品出轨视频网站| 97国产人人| 自拍偷拍草一草| 欧美日韩性爱操大逼| 一区二区娱乐网站| 香蕉一区二区三区在线视频| 综合亚洲情色| 啊啊啊男女| 色在线视频导航| 亚洲第一免费视频| 国产无马av| 亚洲 欧美 中文 日韩超碰| 啊啊啊97视频| 清纯唯美第一页| 男人的天堂 在线一区| 操迟操逼在巾线Fre看| 午夜福利视频在线一区| 射 色综合| 欧美日韩亚洲高清不卡一区二区三区| 九久久精品| 久久亚洲AV无码白度| 99re热有精品视频国产| 久久久18| 亚洲国成人情色好看电影| 蜜臀va69| 巨爆乳一区二区爆乳区| 久久五月视频| 免费成人在线熟妇网| 日本免费二区三区| 嗯啊视频免费在线观看| 91oumei| 激情四射五月天| 女性91网站| 精品中文字幕一区二区l - 百度| 国产怡红院| 美女91网址 | 97精品综合| 日日噜噜夜夜久久亚洲一区二区 | 色色福利| 色情亚洲日本成人| 久久精品一区二区三区蜜桃臀| 国产精品福利资源在线尤物| 久久九九国产精品| 久久鲁夜| 午夜啪| 色99在线| 色网亚洲人| 欧亚性爱在线视频| av操操不卡| 91人妻少妇| 天天躁日日躁XXXXYY| 999综合色| 欧美激情一区| 一区二区 韩日AV| 91青青在线| 萌白酱自拍视频| 亚洲欧洲无码97久久精品| 十八禁啪啪视频| 色婷婷狠狠18禁| 国产AV天美传媒一区二区三区 | 国产成人五月天丁香花| 强奸乱伦动态污图免费| 日韩传媒在线| 亚洲av无码国产精品字幕| 亚洲综合激情五月久久| 在线啊啊啊| 激情久久久| 97超碰精品成| 婷婷激情五月天小说网| 亭亭丁香激情| 欧美Ⅴ性爱| 亚洲人在线| 在线视频 亚洲精品| 日韩欧美亚洲国产日韩| 17c嫩草51久久91嫩草| 丁香九月婷婷| 精品午夜福利| 久久小视频| 免费观看一区| 性色中出| 欧美性爱精品七区| 日韩精品99久久久久久中文字幕| 一个人免费视频观看在线WWW| 久久久久久久九九九九九九| 亚洲一区二区三区在线激情| 天天干天天干天天干| 欧美色图电影| 青青草日逼视频| 国产呦精品系列在线观看| 美女的肌被草喷水视频| 精品视频免费在线一区| 无码人妻精品一区二区三区九九| 天天视频综合在线观看视频| 五十路人妻在线| 亚洲乱码国产乱码精网站| 中日韩久久久免费看| 凹凸视频特色日本特黄| 不卡在线观看视频| 情色av电影| 免费看黄片现成| 亭亭在线资源| 天天操夜夜操| 91这里只有精品| 九九国产热| 秋霞成人一级在线观看| 中出20p| 久久国色天香香蕉| 国产多人在线观看视频| 亚洲素人综合| 日本久久久久久久久| 天天草天天日| 日韩精品国模| 色欧美天天| 九九九久千久久激情蜜桃在线看| 免费a级毛片av无码久久精品中文字幕| 97精品97久久| www.色婷婷.com| 嫩草美女久久| 色 亚洲 91| www.久久| 国产日韩区| 亚洲中文sv| 国产精品suv一区| 久久丁香五月天| 成人毛片免费| 亚洲AV色图一区| 另类亚洲图色| 亚洲乱码国产乱码精网站| 麻豆天美一区二区| 日本黄色天堂| 欧美后进式| 久久香蕉综合一本到3atv| 啪啪综合网| 色香伊人| 97se综合网| 欧洲色| 国产一区二区三区久久久精品| 日韩一级二级三级| 九七毛片九九毛片| 情色日播放AV| AV综合中文字幕干| 95自拍视频在线观看| 国产熟女无套内射| AV色五月天| 东北老女人的激情视频| 大香蕉综合| 国产 无码 一区二区| 国产福利一区二| 久久国产精品一区二区| 熟女精品一区二区在线观看| 日韩专区数据列表-第3230页-精品国产一区二区三区香蕉 久久99熟女人妻中文字 | 国产精品蜜乳AV| 日韩欧美亚洲一区二区三区影院| 草草草草视频| 五月天人妻综合| 国产精品久久久九九九| 超碰 另类 欧美| 99爱爱| 91人妻中文| 韩国一级AAA| 欧美亚洲自拍另类人妻| 91免费看中出视频| 久久久久久无码人妻中文字幕| 草久久久| 日日骚 av| 欧美中文字幕一区| 人妻少妇一区二区| 色婷婷影院| 久久99网站| 日本精品不卡一二三区| 五月天丁香婷婷综合网站| 涩涩涩综合| 麻豆色99999| 国产绿奴视频在线观看| 免费自拍三级综合| 色操逼网| 一个人免费视频观看在线WWW| 人妻少妇久久中文字幕一区二区 麻豆| 亚洲成成熟女人综合一区二区| 啊啊啊在线看| 国产精品一区二区麻豆| 久操视频在线| 风骚少妇视频中文字幕| 熟妇激情| 九九这里只有精品| 成年人免费观看网站| 久草成人影片| 91n处女在线观看| 老鸭窝成人| 97中文字幕九区| dy888午夜老子影视达达兔| 啊啊啊啊啊啊在线| 舔足天天操天天射|