Hello evryone! First of whole sorry for my english. I am building a system with AT91SAM7X128 microcontroller. While writing code I base on gettin-started-project downloaded from Atmel site. I compile my project with WinArm 20060606 version. I need to use floating point numbers and some mathematics functions, but I have problem with math.h library. I.e. if i try to use sin() function i get the error: D:\ARM_program\getting-started-project-1.0-at91sam7x-ek\getting-s tarted-project/main.c:335: undefined reference to `sin' during linking project. Ofcourse I included math.h library Here is makefile from my project: Code: # ------------------------------------------------------------------------ ---- # Makefile for compiling the Getting Started project #----------------------------------------------------------------------- -------- # User-modifiable options #----------------------------------------------------------------------- -------- # Chip & board used for compilation # (can be overriden by adding CHIP=chip and BOARD=board to the command-line) CHIP = at91sam7x128 BOARD = at91sam7x-ek # Optimization level, put in comment for debugging #OPTIMIZATION = -Os # AT91 library directory AT91LIB = ../at91lib # Output file basename OUTPUT = main # Output directories BIN = bin OBJ = obj #----------------------------------------------------------------------- -------- # Tools #----------------------------------------------------------------------- -------- # Tool suffix when cross-compiling CROSS = arm-elf- # Compilation tools CC = $(CROSS)gcc SIZE = $(CROSS)size STRIP = $(CROSS)strip OBJCOPY = $(CROSS)objcopy # Flags INCLUDES = -I$(AT91LIB)/boards/$(BOARD) -I$(AT91LIB)/peripherals INCLUDES += -I$(AT91LIB)/components -I$(AT91LIB)/utility -I$(AT91LIB) CFLAGS = -mlong-calls -ffunction-sections -Wall CFLAGS += -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) #-DNOTRACE ASFLAGS = -g $(OPTIMIZATION) $(INCLUDES) -D$(CHIP) -D__ASSEMBLY__ LDFLAGS = -g $(OPTIMIZATION) -nostdlib -Wl,--gc-sections -lm -lc -lgcc #----------------------------------------------------------------------- -------- # Files #----------------------------------------------------------------------- -------- # Directories where source files can be found UTILITY = $(AT91LIB)/utility PERIPH = $(AT91LIB)/peripherals BOARDS = $(AT91LIB)/boards VPATH += $(UTILITY) VPATH += $(PERIPH)/dbgu $(PERIPH)/aic $(PERIPH)/pio $(PERIPH)/pit VPATH += $(BOARDS)/$(BOARD) $(BOARDS)/$(BOARD)/$(CHIP) # Objects built from C source files C_OBJECTS = main.o C_OBJECTS += led.o pa.o latch.o buff.o count.o mem.o usart.o system.o dig_pot.o clkgen.o div0.o C_OBJECTS += dbgu.o pio.o aic.o pio_it.o pit.o C_OBJECTS += board_memories.o board_lowlevel.o # Objects built from Assembly source files ASM_OBJECTS = board_cstartup.o _udivsi3.o # Append output directories to files C_OBJECTS := $(addprefix $(OBJ)/, $(C_OBJECTS)) ASM_OBJECTS := $(addprefix $(OBJ)/, $(ASM_OBJECTS)) OUTPUT := $(addprefix $(BIN)/, $(OUTPUT)) #----------------------------------------------------------------------- -------- # Rules #----------------------------------------------------------------------- -------- # Get the list of available targets from the board.mak file include $(AT91LIB)/boards/$(BOARD)/board.mak all: $(BIN) $(MEMORIES) $(BIN) $(OBJ): mkdir $@ $(MEMORIES): $(ASM_OBJECTS) $(C_OBJECTS) $(CC) $(LDFLAGS) -T"$(AT91LIB)/boards/$(BOARD)/$(CHIP)/$@.lds" -o $(OUTPUT)-$@.elf $^ $(OBJCOPY) -O binary $(OUTPUT)-$@.elf $(OUTPUT)-$@.bin $(SIZE) $(ASM_OBJECTS) $(C_OBJECTS) $(OUTPUT)-$@.elf $(C_OBJECTS): $(OBJ)/%.o: %.c $(OBJ) Makefile $(CC) $(CFLAGS) -c -o $@ $< $(ASM_OBJECTS): $(OBJ)/%.o: %.S $(OBJ) Makefile $(CC) $(ASFLAGS) -c -o $@ $< clean: rm -f $(OBJ)/*.o $(BIN)/*.bin $(BIN)/*.elf I suppose the problem is in makefile. I found an information that I should add libm.a libg.a and libgcc.a to linker files. I tried to add -lm -lg and -lgcc flags to LFLAGS but it didn't work. What should I change in makefile to use math functions from math.h? I'm not familiar with construction of makefiles, and I have not idea where is the problem. I would be grateful for any answer.
Please create a minimal example with startup-code, linker-script, makefile and a simple application-code to reproduce the issue, pack it and attach it to a forum-message.
Please log in before posting. Registration is free and takes only a minute.
Existing account
Do you have a Google/GoogleMail account? No registration required!
Log in with Google account
Log in with Google account
No account? Register here.