#92966 - Azenris - Sun Jul 16, 2006 2:44 am
I looked at this thread http://forum.gbadev.org/viewtopic.php?t=9652&highlight=compile+errors But i couldn't work out how it was fixed.
Could I have an explanation or Link to a similar thread please.
Im using the template MakeFile
I tried adding the -specs=gba.specs (though im not sure the purpose of it) Not Sure I even need this.
When I run this makefile I get an output of
Without the gba.specs thingy its
It do not have a function called AgbMain()
I also found in another thread about renaming ld.real.exe etc etc, that didnt work so I changed it back.
Anyway, if you could help I'll spend everyday trying to answer other peoples problems ! :p[/code]
Could I have an explanation or Link to a similar thread please.
Im using the template MakeFile
Code: |
#--------------------------------------------------------------------------------- # Clear the implicit built in rules #--------------------------------------------------------------------------------- .SUFFIXES: #--------------------------------------------------------------------------------- ifeq ($(strip $(DEVKITARM)),) $(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM) endif include $(DEVKITARM)/gba_rules #--------------------------------------------------------------------------------- # TARGET is the name of the output, if this ends with _mb a multiboot image is generated # BUILD is the directory where object files & intermediate files will be placed # SOURCES is a list of directories containing source code # DATA is a list of directories containing data files # INCLUDES is a list of directories containing header files #--------------------------------------------------------------------------------- TARGET := $(shell basename $(CURDIR)) BUILD := build SOURCES := source DATA := INCLUDES := #--------------------------------------------------------------------------------- # options for code generation #--------------------------------------------------------------------------------- ARCH := -mthumb -mthumb-interwork CFLAGS := -g -Wall -O3\ -mcpu=arm7tdmi -mtune=arm7tdmi\ -fomit-frame-pointer\ -ffast-math \ $(ARCH) CFLAGS += $(INCLUDE) CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-rtti -fnoexceptions ASFLAGS := $(ARCH) LDFLAGS = -g $(ARCH) -Wl,-Map,$(notdir $@).map,-specs=gba.specs #--------------------------------------------------------------------------------- # path to tools - this can be deleted if you set the path to the toolchain in windows #--------------------------------------------------------------------------------- export PATH := $(DEVKITARM)/bin:$(PATH) #--------------------------------------------------------------------------------- # any extra libraries we wish to link with the project #--------------------------------------------------------------------------------- LIBS := -lgba #--------------------------------------------------------------------------------- # list of directories containing libraries, this must be the top level containing # include and lib #--------------------------------------------------------------------------------- LIBDIRS := $(LIBGBA) #--------------------------------------------------------------------------------- # no real need to edit anything past this point unless you need to add additional # rules for different file extensions #--------------------------------------------------------------------------------- ifneq ($(BUILD),$(notdir $(CURDIR))) #--------------------------------------------------------------------------------- export OUTPUT := $(CURDIR)/$(TARGET) export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ $(foreach dir,$(DATA),$(CURDIR)/$(dir)) export DEPSDIR := $(CURDIR)/$(BUILD) #--------------------------------------------------------------------------------- # automatically build a list of object files for our project #--------------------------------------------------------------------------------- CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*))) #--------------------------------------------------------------------------------- # use CXX for linking C++ projects, CC for standard C #--------------------------------------------------------------------------------- ifeq ($(strip $(CPPFILES)),) #--------------------------------------------------------------------------------- export LD := $(CC) #--------------------------------------------------------------------------------- else #--------------------------------------------------------------------------------- export LD := $(CXX) #--------------------------------------------------------------------------------- endif #--------------------------------------------------------------------------------- export OFILES := $(addsuffix .o,$(BINFILES)) $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) #--------------------------------------------------------------------------------- # build a list of include paths #--------------------------------------------------------------------------------- export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ -I$(CURDIR)/$(BUILD) #--------------------------------------------------------------------------------- # build a list of library paths #--------------------------------------------------------------------------------- export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) .PHONY: $(BUILD) clean #--------------------------------------------------------------------------------- $(BUILD): @[ -d $@ ] || mkdir -p $@ @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile all : $(BUILD) #--------------------------------------------------------------------------------- clean: @echo clean ... @rm -fr $(BUILD) $(TARGET).elf $(TARGET).gba #--------------------------------------------------------------------------------- else DEPENDS := $(OFILES:.o=.d) #--------------------------------------------------------------------------------- # main targets #--------------------------------------------------------------------------------- $(OUTPUT).gba : $(OUTPUT).elf $(OUTPUT).elf : $(OFILES) -include $(DEPENDS) #--------------------------------------------------------------------------------- endif #--------------------------------------------------------------------------------- |
I tried adding the -specs=gba.specs (though im not sure the purpose of it) Not Sure I even need this.
When I run this makefile I get an output of
Code: |
C:\Documents and Settings\Azenris>cd C:\Att2 C:\Att2>make linking cartridge c:\devkitpro\devkitarm\arm-eabi\bin\ld.real.exe: warning: cannot find entry symb ol cs=gba.specs; defaulting to 08000234 c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/lib/th umb/gba_crt0.o: In function `start_vector': gba_crt0.s:(.init+0x224): undefined reference to `main' collect2: ld returned 1 exit status make[1]: *** [/c/Att2/Att2.elf] Error 1 make: *** [build] Error 2 C:\Att2> |
Without the gba.specs thingy its
Code: |
C:\Att2>make linking cartridge c:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.1/../../../../arm-eabi/lib/th umb/gba_crt0.o: In function `start_vector': gba_crt0.s:(.init+0x224): undefined reference to `main' collect2: ld returned 1 exit status make[1]: *** [/c/Att2/Att2.elf] Error 1 make: *** [build] Error 2 C:\Att2> |
It do not have a function called AgbMain()
I also found in another thread about renaming ld.real.exe etc etc, that didnt work so I changed it back.
Anyway, if you could help I'll spend everyday trying to answer other peoples problems ! :p[/code]