如何链接正确的库,以便__aeabi_idiv和__aeabi_idivmod工作?

时间:2015-02-04 21:11:07

标签: c makefile arm raspberry-pi

This是我正在跟进的问题。我有同样的问题,就像regomodo在2011年那样做的那样:

我正在尝试在我的Raspberry Pi上运行一个小程序,而我正在使用ARM本身不支持的运算符:

hello.c:(.text+0x64): undefined reference to `__aeabi_idiv'
hello.c:(.text+0x7c): undefined reference to `__aeabi_idivmod'

我知道我需要链接一个了解分区和修改的库,但是我不能完全理解它(Makefile生活中的新手)。

所以我给了它一种可怜的刺,试着添加-lgcc:

LDFLAGS  = -L../lib -lgcc

这不是超级富有成果:

arm-none-eabi-ld: cannot find -lgcc

任何建议都会受到如此赞赏。

[edit1]这是我的makefile的开头:

ARMGNU ?= arm-none-eabi

CPPFLAGS = -I../include
CFLAGS = $(ARCHFLAGS) -Wall -O2 -nostdlib -nostartfiles -ffreestanding
LDFLAGS  = -L../lib -lgcc
LIBS = -lpi 

2 个答案:

答案 0 :(得分:0)

确保libgcc.a存档位于您在Makefile中指定的路径中。

答案 1 :(得分:0)

我知道已经很晚了,但我遇到了同样的问题,我正在使用ArchLinux,结果发现libgcc.a文件不在

/usr/arm-none-eabi/lib/

和/或其子文件夹,这是我系统中arm-none-eabi编译器的默认安装目录,而libgcc.a库位于

/usr/lib/gcc/arm-none-eabi/(version)

因此,无论您使用何种系统,都应该在默认的lib目录中查找该库。