Embedded 在SoCLib工具中使用C标准库的困难

Embedded 在SoCLib工具中使用C标准库的困难,embedded,linker-errors,elf,systemc,system-on-chip,Embedded,Linker Errors,Elf,Systemc,System On Chip,我是一名来自巴西的电子工程专业的学生,目前正在从事嵌入式系统的工作 我正在尝试将一个MP3解码器(用C编写),称为minimp3,移植到一个借助SoCLib工具构建的平台上(这个工具有一系列硬件模型,如处理器、内存和互连,所有这些都是用SystemC编写的,允许您构建嵌入式系统模型) 我正在构建的平台由一个MIPS处理器、一个RAM、一个互连和一个TTY(虚拟终端)组成,因此显然MP3解码器必须交叉编译 此MP3解码器使用一些未在SoCLib工具中实例化的C标准库(其中仅包含stdio.h和st

我是一名来自巴西的电子工程专业的学生,目前正在从事嵌入式系统的工作

我正在尝试将一个MP3解码器(用C编写),称为minimp3,移植到一个借助SoCLib工具构建的平台上(这个工具有一系列硬件模型,如处理器、内存和互连,所有这些都是用SystemC编写的,允许您构建嵌入式系统模型)

我正在构建的平台由一个MIPS处理器、一个RAM、一个互连和一个TTY(虚拟终端)组成,因此显然MP3解码器必须交叉编译

此MP3解码器使用一些未在SoCLib工具中实例化的C标准库(其中仅包含stdio.h和stdlib.h)

我首先尝试运行我的平台,而不对SoCLib工具提供的makefile进行任何更改。这样,当我输入“make”命令时,我得到了以下消息(以及其他相同类型的消息):

研究这个错误,我发现这可能是因为链接器没有链接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
现在我不知道该怎么办

有人能帮我吗?

当您输入“make”命令时,出现以下错误:

mipsel未知elf ld:找不到-lm

“mipsel unknown elf-”表示您正在使用mips交叉编译器,并以“ld”链接器加载程序命令作为前缀。-lm选项表示链接(“-l”部分)到“m”库,拼写为“libm.a”或“libm.so”。这意味着你的 代码,现在正在尝试将对象文件链接到“libm”库

有关更多信息,请参阅此链接

您现在要做的是告诉链接器加载程序要搜索库的路径,这意味着您需要找到“libm.a”和/或“libm.so”,以及您计划使用的其他库“lib*.a”和“lib*.so*”。确定所需的路径,然后使用“-L path”选项添加这些库搜索路径

现在你知道该怎么做了。
-Chuck

只是SoCLib网站的一个链接:嘿,伙计,我试着按上面说的做(添加“-L/path”选项)。我使用的路径是“/usr/lib/i386 linux-gnu”。但现在我得到了一条不同的消息:“mipsel unknown elf ld:在搜索-lm时跳过不兼容的/usr/lib/i386 linux gnu/libm.a”。如果我错了,请纠正我,但我认为发生此错误是因为“libm.a”文件与我尝试使用的MIPS处理器不兼容。如果这就是发生此错误的原因,您是否知道是否可以获取与MIPS兼容的“libm.a”文件?
mipsel-unknown-elf-ld: cannot find -lm