我有一個基於ucLinux內核2.6.33的沒有MMU的cortex-M3 buildroot系統。支持在內核中啓用FLAT,ZFLAT,SHARED_FLAT。 裏面buildroot一切都設置爲M3等 我有工作系統與工作內核和busybox(這只是在用戶空間中的二進制)。系統或其他庫上沒有uClibc。 我試圖建立這樣最簡單的用戶空間應用程序:main(){}如何使用arm2010q1工具鏈在buildroot上爲ucLinux構建FLAT用戶空間二進制文件
我試着用不同的標誌。最新的組合如下:
^[[7m >>> zpm_t 1.0 Building^[[27m /usr/bin/make -j5 FLAGS =「 - c -mthumb -march = armv7 -mfix-cortex-m3 -ldrd「EXTRA_LDFLAGS =」-Wl,-elf2flt, - static「CC =」/ mnt/repos/repos/github/nocturn_buildroot/output/host/usr/bin/ccache/mnt/repos/repos/github/nocturn_buildroot /輸出/主機/ usr/bin/arm-uclinuxeabi-gcc「LD =」/ mnt/repos/repos/github/nocturn_buildroot/output/host/usr/bin/arm-uclinuxeabi -ld「HEADERS =」 - I/mnt/repos/repos/github/nocturn_buildroot/output/target/usr/include/SDL「LIBS =」 - L/mnt/repos/repos/github/nocturn_buildroot /../ nocturn_tools/arm-2010q1/arm-uclinuxeabi/libc/usr/lib「-C /mnt/repos/repos/github/nocturn_buildroot/output/build/zpm_t-1.0 all make [1]:進入目錄/mnt/repos/repos/github/nocturn_buildroot/output/build/zpm_t-1.0' /mnt/repos/repos/github/nocturn_buildroot/output/host/usr/bin/ccache /mnt/repos/repos/github/nocturn_buildroot/output/host/usr/bin/arm-uclinuxeabi-gcc -c -mthumb -march=armv7 -mfix-cortex-m3-ldrd -I/mnt/repos/repos/github/nocturn_buildroot/output/target/usr/include/SDL t.c /mnt/repos/repos/github/nocturn_buildroot/output/host/usr/bin/ccache /mnt/repos/repos/github/nocturn_buildroot/output/host/usr/bin/arm-uclinuxeabi-gcc -Wl,-elf2flt,--static t.o -L/mnt/repos/repos/github/nocturn_buildroot/../nocturn_tools/arm-2010q1/arm-uclinuxeabi/libc/usr/lib -o t make[1]: Leaving directory
/mnt/repos/repos/github/nocturn_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)
但在系統我一直有一個段錯誤是不那麼信息:
/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?它應該被編譯到每個二進制可執行文件中,還是應該把它放在系統上?