【发布时间】:2017-06-19 10:27:35
【问题描述】:
我正在使用我在 github 上找到的 code。 为了使用uspi库,帮助文档(使用部分)说我应该创建一个makefile并在那里指定包含和库文件。 因为我是 makefile 概念的新手,所以我首先尝试手动输入:
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 文件
【问题讨论】:
-
如果你在
w.o之后添加-luspi? (注意需要自己实现uspios.h中声明的函数,比如LogWrite) -
不走运我的朋友,同样的错误
-
我不相信你。如果你仍然得到一个未定义的引用,例如USPiEnvClose,还有一些我们没有任何信息的错误。库本身是否正确构建,(在实现之前,您将获得对 LogWrite() 的未定义引用)
-
实现在uspios.h中声明的函数
-
你的意思是实现'w.c'程序中的功能?
标签: makefile linker arm undefined-reference