我如何 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 目录中查找该库。
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 目录中查找该库。