help in linking std libraries pls
Tamamontu M
tamamontu at yahoo.com.au
Thu Nov 18 21:46:48 EST 2010
Hi Guys,
I am having problems while linking to std libraries using arm-linux-ld. I am trying to compile and link my source code which is using stdio,stdflib,string libraries. But I get errors at the linking stage. To link to the std libraries I use -lc (ldflag). Which is causing the error.
My make file is like this
-------------------------------------------------------------------------
TOPDIR := $(shell /bin/pwd)
export TOPDIR
export CC=arm-linux-gcc
export LD=arm-linux-ld
OBJCOPY=arm-linux-objcopy
OBJDUMP=arm-linux-objdump
export TOP_CFLAGS= -O2 -Wall -fPIC -mcpu=arm9tdmi -I../include
export LDFLAGS = -L/usr/local/arm/3.4/lib -T SDcard_bootloader_fat16.lnk -Map SDcard_bootloader_fat16.map -lc
#export LDFLAGS = -T SDcard_bootloader_fat16.lnk -Map SDcard_bootloader_fat16.map -L/usr/local/arm/4.1.1-920t/lib -lc
ASFLAGS =
SDcard_bootloader:
make -C main
$(LD) $(LDFLAGS) -o SDcard_bootloader_fat16.elf main/mainrom.o
$(OBJCOPY) -j rom -O binary SDcard_bootloader_fat16.elf SDcard_bootloader_fat16.bin
$(OBJDUMP) -D SDcard_bootloader_fat16.elf > SDcard_bootloader_fat16.diss
clean:
make clean -C main
rm -f $(OBJS) SDcard_bootloader_fat16.bin SDcard_bootloader_fat16.elf SDcard_bootloader_fat16.diss SDcard_bootloader_fat16.map
-------------------------------------------------------------------------
I get this error arm-linux-ld: BFD 2.16.1 assertion fail. I tried 2 different tool chains.
1) arm-linux-gcc 3.4.3 , arm-linux-ld 2.16
2) arm-linux-gcc 4.1.1 , arm-linux-ld 2.17
I am getting slightly less errors with the newer tool chain.
-------------------------------------------------------------------------
make
make -C main
make[1]: Entering directory `/home/pritam/spi_boot_example/SDcard_bootloader_fat16/main'
arm-linux-gcc -MM -O2 -Wall -fPIC -mcpu=arm9tdmi -I../include head.S main.c print.c spi.c sd_raw.c 1>.depend
echo $PWD
/home/pritam/spi_boot_example/SDcard_bootloader_fat16/main
arm-linux-ld -L/usr/local/arm/3.4/lib -T SDcard_bootloader_fat16.lnk -Map SDcard_bootloader_fat16.map -lc -r -o mainrom.o head.o main.o print.o spi.o sd_raw.o
make[1]: Leaving directory `/home/pritam/spi_boot_example/SDcard_bootloader_fat16/main'
arm-linux-ld -L/usr/local/arm/3.4/lib -T SDcard_bootloader_fat16.lnk -Map SDcard_bootloader_fat16.map -lc -o SDcard_bootloader_fat16.elf main/mainrom.o
main/mainrom.o: In function `start_C':
sd_raw.c:(rom+0x230): relocation truncated to fit: R_ARM_PLT32 against symbol `puts' defined in .plt section in /usr/local/arm/3.4/lib/libc.so
arm-linux-ld: BFD 2.16.1 assertion fail /opt/buildroot/toolchain_build_arm_nofpu/binutils-2.16.1/bfd/elf32-arm.c:5013
/usr/local/arm/3.4/lib/libc.so: undefined reference to `main'
arm-linux-ld: BFD 2.16.1 assertion fail /opt/buildroot/toolchain_build_arm_nofpu/binutils-2.16.1/bfd/elf32-arm.c:5203
make: *** [SDcard_bootloader] Segmentation fault
------------------------------------------------------------------------
Can some one please share some info on how to use and std libraries please.
Thanks
Tama
More information about the linux-arm
mailing list