我如何 link 正确的库以便 __aeabi_idiv 和 __aeabi_idivmod 工作?

How do I link the correct library so __aeabi_idiv and __aeabi_idivmod work?

This 是我要跟进的问题。我遇到了与 regomodo 在 2011 年那个线程中遇到的问题相同的问题:

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

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

我知道我需要 link 一个了解除法和改装的库,但我不能完全让它工作(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 

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

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

/usr/arm-none-eabi/lib/

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

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

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