sami
sami

Reputation: 1

arm gcc linker undefined reference

I am working with this code i found on github. In order to use the uspi library,the help documentation(USING SECTION) said that i should create a makefile and specify the includes and libraries files there. Because i am new to makefile concept,i first try to manually do that by typing:

arm-linux-gnueabihf-gcc -O0 -DRPI2 -mfpu=neon-vfpv4 -mfloat-abi=hard -march=armv7-a -mtune=cortex-a7 -std=c99 -I./uspi/env/include -I./uspi/include -L./uspi/lib -luspi w.o -o kernel.elf

this errors comes up:

w.o: In function `main':
w.c:(.text+0xc): undefined reference to `USPiEnvInitialize'
w.c:(.text+0x24): undefined reference to `USPiInitialize'
w.c:(.text+0x48): undefined reference to `LogWrite'
w.c:(.text+0x4c): undefined reference to `USPiEnvClose'
w.c:(.text+0x58): undefined reference to `USPiMassStorageDeviceAvailable'
w.c:(.text+0x80): undefined reference to `LogWrite'
w.c:(.text+0x84): undefined reference to `USPiEnvClose'
w.c:(.text+0xb8): undefined reference to `USPiMassStorageDeviceRead'
w.c:(.text+0xdc): undefined reference to `LogWrite'
w.c:(.text+0x108): undefined reference to `LogWrite'
w.c:(.text+0x124): undefined reference to `LogWrite'
w.c:(.text+0x13c): undefined reference to `LogWrite'
w.c:(.text+0x204): undefined reference to `LogWrite'
w.c:(.text+0x23c): undefined reference to `USPiEnvClose'
collect2: error: ld returned 1 exit status

i need the .elf file so i can generate a .img file from it

Upvotes: 0

Views: 1160

Answers (1)

Employed Russian
Employed Russian

Reputation: 213955

This link order:

arm-linux-gnueabihf-gcc ... -luspi w.o -o kernel.elf

is incorrect. Libraries should follow the objects they are referenced from:

arm-linux-gnueabihf-gcc ... w.o -luspi -o kernel.elf

Explanation.

Upvotes: 1

Related Questions