1. 程式人生 > 其它 >如何使用 連結指令碼 生成可執行檔案

如何使用 連結指令碼 生成可執行檔案

使用預設 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)/*