我正在尝试为 ARM 目标编译“Hello World”应用程序。我在 Ubuntu/VMWare 上使用 gcc 进行交叉编译。如果我为主机编译,它工作正常。当我为目标编译时,我得到这个错误:
/root/picokernel/toolchain/arm-eabi/lib/libcs3hosted.a(hosted-sbrk.o): In function `_sbrk':
sbrk.c:(.text+0x74): undefined reference to `__cs3_heap_limit'
/root/picokernel/toolchain/arm-eabi/lib/libcs3hosted.a(hosted-sbrk.o):(.data+0x0): undefined reference to `__cs3_heap_start'
make: *** [HelloWorld] Error 1
所以我想我需要链接一些东西——也许我的工具链没有正确的库?我能够构建内核,所以我认为它已经完成了。谢谢! This is the target board. - 运行 Angstrom 或 Android。
生成文件:
CC=$(CROSS_COMPILE)gcc
LD=$(CROSS_COMPILE)ld
CROSS_LIB1=/root/picokernel/toolchain/arm-eabi/lib
CROSS_LIB2=/root/picokernel/toolchain/lib/gcc/arm-eabi/4.2.1
CFLAGS=-Wall
LDFLAGS= -L$(CROSS_LIB1) -L$(CROSS_LIB2) -lc -lcs3hosted -lg -lgcc --entry main
HelloWorld: HelloWorld.o
$(LD) HelloWorld.o $(LDFLAGS)
清洁: rm -f HelloWorld HelloWorld.o
程序:
#include <stdio.h>
int main(int argc, char **argv)
{
printf("Hello World\n");
return 0;
}
最佳答案
我得说,这是可疑的:-nostdlib
不使用这个标志怎么样?
关于linux - 交叉编译到 ARM 的链接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6432851/