主题中讨论的其他器件:HALCOGEN
工具/软件:TI C/C++编译器
我使用 HALCOGEN 使用 GCC 工具生成代码、并使用 arm-none-eabi-gcc 在 Linux 上编译代码、makefile 报告了编译错误:
arm-no-eabi-ld -n -o boot.elf ./bin/*。o ./bin/*。a -L//usr/bin/gcc-arm-none-eabi-9-2019-Q4-maj/arm-none-eabi/lib
arm-none-eabi-ld:警告:找不到条目符号_start;默认为000000008000
arm-none-eabi-ld:./bin/startup.o:在函数` c_int00'中:
/root/ls3137/3137_boot/ls3137_miniboot/init/startup.c:649:未`对 μ_sidata'的引用
arm-none-eabi-ld:/root/ls3137/3137_boot/ls3137_miniboot/init/startup.c:649:未`对 sildata'的引用
arm-none-eabi-ld:/root/ls3137/3137_boot/ls3137_miniboot/init/startup.c:650:未`对"_sdata"的引用
arm-none-eabi-ld:/root/ls3137/3137_boot/ls3137_miniboot/init/startup.c:650:未`对"_sdata"的引用
arm-none-eabi-ld:/root/ls3137/3137_boot/ls3137_miniboot/init/startup.c:668:未`对"退出"的引用
arm-none-eabi-ld:./bin/libgcc.a (_dvmd_lnx.o):在函数`_DIV0中:
/opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/libgcc/../gcc/config/arm/lib1funcs.asm:1093:未定义`提升'的引用
make:***[boot]错误1
这是我的 makefile 文件:
############################ 工具链########################## #gcc_bin =$(gcc_home) bin/gcc_bin = #cross_compile =$(gcc_bin) arm-linux- cross_compile = arm-no-eabi- CC =$(cross_compile) gcc AR =$(cross_compile) ar LD =$(cross_compile) jobjcopy =$(cross_mp########/jrm#########/compildump########/jr1# #/jrm######/jrm##########/jrm#.cc#####. 标记############################## #编译标志:*。c 的 CFLAGS、*。S CFLAGS 的 SFLAGS +=-g CFLAGS +=-O0 CFLAGS +=-Wall CFLAGS +=-mcpu=cortex-r4F #CFLAGS +=-stdst=c99 #CFLAGS +=-m#-m# vLAG#=v3#-m#-m# vLAG#+=vLAG# v3#-m#-m#-cf LAG#+=vLAG#=v3#-m#-r#-m# vLAG#+=vLAG# DIRS 和 SRCS ############################## LDFLAGS=-L//usr/bin/gcc-arm-none-eabi-9-2019-Q4-maj/arm-no-eabi/lib #查找当前方向的所有子方向。 dirs :=$(外壳查找. -maxdepth 1 -type d) dirs:=$(basename $(patsubst ./%、%、$(dirs)) dirs:=$(filter-out $(exclude_dirs)、$(dirs) Subdirs:=$(patterrs) # SRCS、objs 且 depends =$(excludine_dirs) #.c =$(excludinedly# )#.c =$(excludinations.c)#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#.c =#. 规则############################ # #输入 Makepie # all:subdirs $(LIB)$(target) # # LIB target # $(LIB):$(OBJS)$(ASMOBJS) #$(AR)$(TOPDIR)/lib/$@$$^ #$(RM)*。o *。a #在所有方向上执行'mirs'。 Subdirs:$(Subdirs) #echo $(Subdirs) @for dir in $(Subdirs);\ do \ echo;\ echo "--- $dir ------------ ";\ $(make)-C $$dir all || exit 1;\ echo "--> 退出$$dir ---------- ";\ echo;\ Done ###################### # #最终二进制目标 # ######################## $(target):$(OBJS)$(ASMOBJS) #$(LD)-n -o $@$(LDFLAGS) -MV $(TOPDIR)/bin/ls3137_intvecs.o $(TOPDIR)/ #$(LD)-n -o $^@.elf crt0.o $(TOPDIR)/bin/*。o $(FLAGS) $(LD)-n -o $@.elf $(TOPDIR)/bin/*。o $(TOPDIR)/bin/*。a $(LDFLAGS) #$(LD)-n -o $@.elf $(TOPDIR)/bin/*。o $(LDFLAGS) ##$(LD)-n -o $@.elf $(TOPDIR)/bin/*。o $(LDFLAGS) #-rm $(TOPDIR)/crt0.o $(objcopy)-O 二进制文件--strip-all --verbose $@.elf $@.bin $(OBJDUMP)-D $@.elf > dump_$@ @ @ü.txt #源代码规则#$(OBJS):%.c (OBJS)$(TOCOL )$(LAM)<$(LAGCC)$(LCC$)-$(LAM (LCC$)<$(LAGCOM)<$(LCC$)-BOOW)<$(LCC$(LCC$)<$(LAGCOM)<$(LCC$)<$)<$(LAM (LCCS)<$)<$(LAGCOM (LCC$)< 如果头文件被改变、编译将被执行。 第1个。 设置-e:如果有任何命令退出错误,则停止 #2。 rm -f $@:删除已存在的 depend 文件 #3. -mm:将 Depend 关系写入.d 文件 #4。 $$:PID #5。 sed:将"xxx.o:xxx.c depend .h"替换为"xxx.o xxx.d:xxx.c depend .h" 、# 然后将其写入 xxx.d 第6号。 rm -f $@:删除临时文件。 # #$( @):%.d:%.c # @ set -e;rm -f $@;\#$(CC)-mm $(CFLAGS)<<$@$。$$$$$$;\# sed、\($*\)\.o[:]*、\1.o $@$:、g'< $$$$$$$$$@@@:$|$$$|$$$$$$|$$$$$$$$$$|$$$$$$|$$$$|$$$|$$$$|$$$$|$$|$$|$|$$$|$$$| \ 完成 #$(RM)$(target)$(LIB)$(OBJS)$(depends) #$(RM)$(depends) $(RM)$(TOPDIR)/bin/*。o $(RM)$(TOPDIR)/boot.bin $(RM)$(TOPDIR)/boot.hex