2017-06-19 86 views
0

我正在使用这个code我在github上找到了。 为了使用uspi库,帮助文档(USING SECTION)说我应该创建一个makefile并在那里指定includes和libraries文件。 因为我是新来的Makefile的概念,我第一次尝试这样做手工键入:arm gcc linker undefined reference

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 

这样的错误出现:

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 

我需要的.elf文件,这样我就可以产生。 IMG文件从它

+0

如果你在'w.o'之后加上'-luspi'? (请注意,您需要自己实现在uspios.h中声明的函数,例如LogWrite) – nos

+0

没有运气我的朋友,同样的错误 – sami

+1

我不相信你。如果您仍然对未定义的参考USPiEnvClose,有些事情是错误的,我们没有任何有关信息。库本身是否正确构建,(你会得到一个未定义的引用LogWrite(),直到你实现它) – nos

回答

1

此链接顺序:

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

不正确。图书馆应遵循他们从引用的对象:

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

Explanation