linux - 交叉编译到 ARM 的链接问题

标签 linux arm cross-compiling

我正在尝试为 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/

相关文章:

与 Terry Guo 的 gcc-arm-none-eabi 交叉编译

c++ - "Narrowing conversion from ' int ' to ' char ' inside { }"交叉编译时的合法值

linux - 如何在 Debian 上安装用于开发的 SDL 2.0?

c - 使用全局 C 变量的 IAR 内联汇编

cross-compiling - 防止 SCons 寻找标准工具

c - gcc __builtin 函数是否保证被匹配的汇编指令替换?

arm - 我可以使用什么来调试/跟踪 Pandaboard 上的逐步 Freebsd 内核启动过程?

linux - 优雅地发送本地 tarball 并在远程端解压

linux - 是否加载了操作系统级别的闪存驱动程序?

linux - 为linux开发桌面环境