Embedded 如何使用arm2010q1工具链在buildroot上为ucLinux构建平面用户空间二进制文件

Embedded 如何使用arm2010q1工具链在buildroot上为ucLinux构建平面用户空间二进制文件,embedded,buildroot,uclibc,uclinux,Embedded,Buildroot,Uclibc,Uclinux,我有一个基于ucLinux内核2.6.33的不带MMU的cortex-M3构建根系统。在内核中支持平面、ZFLAT、共享_平面。 在buildroot中,所有内容都设置为M3等。 我有一个工作系统,内核工作,busybox是用户空间中唯一的二进制文件。系统上没有uClibc或任何其他LIB。 我正在尝试构建最简单的用户空间应用程序,如下所示:main{} 我试过用不同的旗子。最新的组合如下: ^[7m>>>zpm_t 1.0大楼^[27m] /usr/bin/make-j5 FLAGS=-c-m

我有一个基于ucLinux内核2.6.33的不带MMU的cortex-M3构建根系统。在内核中支持平面、ZFLAT、共享_平面。 在buildroot中,所有内容都设置为M3等。 我有一个工作系统,内核工作,busybox是用户空间中唯一的二进制文件。系统上没有uClibc或任何其他LIB。 我正在尝试构建最简单的用户空间应用程序,如下所示:main{}

我试过用不同的旗子。最新的组合如下:

^[7m>>>zpm_t 1.0大楼^[27m] /usr/bin/make-j5 FLAGS=-c-mthumb-march=armv7-mfix-cortex-m3-ldrd-EXTRA_-LDFLAGS=-Wl,-elf2flt,-static CC=/mnt/repos/repos/github/github/nighton构建根/output/usr/bin/nighton构建根/output/host/usr/bin/arm-uclinuxabi gcc-LD=/mnt/repos/repos/repos/github/nighun构建根/output/host/usr/arm=-I/mnt/repos/repos/github/nightn_buildroot/output/target/usr/include/SDL LIBS=-L/mnt/repos/repos/github/nightn_buildroot//nightn_tools/arm-2010q1/arm-uclinuxeabi/libc/mnt/repos/repos/github/nightn_buildroot/output/buildput/build/build/build/zpm-1.0所有 make[1]:输入目录/mnt/repos/repos/github/nocton_buildroot/output/build/zpm_t-1.0' /mnt/repos/repos/github/Neutron_buildroot/output/host/usr/bin/ccache/mnt/repos/repos/github/Neutron_buildroot/output/host/usr/bin/arm uclinuxeabi gcc-c-mthumb-march=armv7-mfix-cortex-m3-ldrd-I/mnt/repos/repos/repos/github/Neutront_buildroot/output/target/usr/include/SDL t.c /mnt/repos/repos/github/nighton_buildroot/output/host/usr/bin/ccache/mnt/repos/repos/github/nighton_buildroot/output/host/usr/bin/arm-uclinuxiabi-gcc-Wl,-elf2flt,-静态t.o-L/mnt/repos/repos/github/nighton_buildroot/。/nighton\u工具/arm-2010q1/arm-uclinuxiabi/libc/usr/lib-o-t make[1]:离开目录/mnt/repos/repos/github/nocton_buildroot/output/build/zpm_t-1.0'

平面文件似乎还可以:

$ arm-uclinuxeabi-flthdr output/target/opt/t
output/target/opt/t
    Magic:        bFLT
    Rev:          4
    Build Date:   Wed Sep 24 00:28:31 2014
    Entry:        0x45
    Data Start:   0x1f00
    Data End:     0x1f70
    BSS End:      0x1fa0
    Stack Size:   0x1000
    Reloc Start:  0x1f70
    Reloc Count:  0x29
    Flags:        0x1 ( Load-to-Ram )
但在系统上,我总是有一个segfault,它的信息量不大:

/opt # ./t
[   23.200000] 
[   23.200000] 
[   23.200000] t: fault at 0xa0501dd4 [pc=0xa0501dd4, sp=0xa0503f28]
[   23.200000] Invalid ISA state
[   23.200000] 
SEGV

我错过了什么?它应该是非常简单的。还有-uClibc怎么办?它应该被编译到每个二进制可执行文件中,还是应该以某种方式放在系统上?

我将我的应用程序链接到了错误的库。我必须从M3工具链中的thumb2文件夹中获取一个预构建的库:

LIBS="-L$(TOPDIR)/../tools/arm-2010q1/arm-uclinuxeabi/libc/thumb2/usr/lib"
只要修复它就有帮助了。因为我有libc.a和libm.a作为静态存档-只要修复LIBS就足够了。而且不需要像-lm这样的标志。在buildroot编译过程中,它需要静态LIBS的一部分,并创建一个工作的平面二进制文件