我是来自巴西的电子工程专业学生,目前正在研究嵌入式系统。
我正在尝试将名为 minimp3 的 MP3 解码器(用 C 语言编写)移植到借助 SoCLib 工具构建的平台(该工具有一堆硬件模型,如处理器、存储器和互连都用 SystemC 女巫编写允许您构建嵌入式系统模型)。
我正在构建的平台由 MIPS 处理器、RAM、互连和 TTY(虚拟终端)组成,因此显然 MP3 解码器必须交叉编译。
这个 MP3 解码器使用了一些没有在 SoCLib 工具中实例化的 C 标准库(witch 只包含 stdio.h 和 stdlib.h)。
我首先尝试在不对 SoCLib 工具提供的 makefile 进行任何更改的情况下运行我的平台。有了这个,当我输入“make”命令时,我收到了以下消息(以及其他相同类型的消息):
undefined reference to `tan'
undefined reference to `sin'
undefined reference to `cos'
undefined reference to `memset'
undefined reference to `realloc'
undefined reference to `open'
undefined reference to `strlen'
研究这个错误,我发现这可能是因为链接器没有链接 C 头文件,所以我在 makefile 上添加了以下命令(强调):
CFLAGS=-Wall -O2 -I. $(ADD_CFLAGS) $(DEBUG_CFLAGS) $($(ARCH)_CFLAGS) -ggdb -I$(COMMON) **-I/usr/include** $(INTERFACE_CFLAGS)
mipsel-unknown-elf-ld -q $($(ARCH)_LDFLAGS) $(ADD_LDFLAGS) -o $@ $(filter %.o,$^) **-lm** -T $(filter %ldscript,$^) $(LIBGCC)*
但是,再次输入“make”命令,我得到了以下错误:
mipsel-unknown-elf-ld: cannot find -lm
而现在我不知道该怎么办。
谁能帮我?