如何使用 連結指令碼 生成可執行檔案
阿新 • • 發佈:2021-06-17
使用預設 ld 檔案生成可執行檔案:
cc = gcc prom = hello DIR= ($shell pwd) inc_dir = $(DIR)/inc src_dir = $(DIR)/src obj = $(pathsubst $(src_dir)/%.c, $(src_dir)/%.o, $(wildcard $(src_dir)/%.c) ) $(prom): $(obj) $(cc) -o $(prom) $(obj) %.o: %.c $(deps) $(cc) -I$(inc_dir) -c $< -o $@ .PHONY : clean clean: rm-rf $(obj) $(prom)
指定 ld 檔案生成可執行檔案:
prom = hello DIR= ($shell pwd) inc_dir = $(DIR)/inc src_dir = $(DIR)/src obj = $(pathsubst $(src_dir)/%.c, $(src_dir)/%.o, $(wildcard $(src_dir)/%.c) ) output = $(DIR)/out LINK_DIR = $(DIR)/toolchain/bin/arm-none-eabi- LINK_LD = $(LINK_DIR)/ld LINK_OBJCOPY = $(LINK_DIR)/objcopy LINK_LDFILE= $(DIR)/link.ld cc = $(LINK_DIR)/gcc all: clean $(output) $(obj_dir) $(prom) $(output): mkdir $@ $(obj_dir): mkdir $@ $(prom): $(obj) $(LINK_LD) -T$(LINK_LDFILE ) $(obj) -o hello.elf $(LINK_OBJCOPY ) -O binary -S hello.elf hello.bin $(obj_dir)/%.o: $(src_dir)/%.c $(cc)-I$(inc_dir) -c $< -o $@ .PHONY : clean clean: rm -rf $(obj) rm -rf %(output)/*