linux - linux应用程序被杀死

我有一个带有嵌入式Linux的“Seagate Central”NAS

$ cat /etc/*release
MontaVista Linux 6, (.dev-snapshot-20130726)

当我试图在这个NAS上运行自己的应用程序时,它将被“杀死”
在DMESG或/var/log/messages上没有任何通知
$ cat /proc/cpuinfo
Processor       : ARMv6-compatible processor rev 4 (v6l)
BogoMIPS        : 279.34
Features        : swp half thumb fastmult vfp edsp java
CPU implementer : 0x41
CPU architecture: 7
CPU variant     : 0x0
CPU part        : 0xb02
CPU revision    : 4

Hardware        : Cavium Networks CNS3420 Validation Board
Revision        : 0000
Serial          : 0000000000000000

我的工具链是
Sourcery_CodeBench_Lite_for_ARM_GNU_Linux/arm-none-linux-gnueabi

我的编译开关是
-march=armv6k -mcpu=mpcore -mfloat-abi=softfp -mfpu=vfp

我怎样才能知道哪个进程正在扼杀我的应用程序,或者我必须更改什么设置?
PS:我已经创建了一个简单的helloworld应用程序,它也不工作!
$ ldd Hello
$       not a dynamic executable


readelf -a Hello
=> http://pastebin.com/kT9FvkjE

readelf -a zip
=> http://pastebin.com/3V6kqA9b

更新1
我带来了一个新的二进制硬浮点
 Readelf output
 http://pastebin.com/a87bKksY

但没有成功;(
我想这确实是一个“锁”主题,它阻碍了我的应用程序的执行。我怎样才能知道什么应用程序会杀死我的?
或者我怎样才能禁用这种功能?


最佳答案:

使用以下编译器开关:

-march=armv6k -Wl,-z,max-page-size=0x10000,-z,common-page-size=0x10000,-Ttext-segment=0x10000

另见this link regarding the toolchain.
您可以对其中一个内置二进制文件(例如/usr/bin/nano)运行readelf-a,以查看节头中的正确文本段偏移量和程序头中的页面大小/对齐方式。上面的编译器标志使自编译程序与内置二进制文件的结构相匹配,并且已经过测试。似乎Seagate Central NAS使用的页面大小/偏移量为0x1000,而ARM GCC的默认值为0x8000。
编辑:我看到你已经运行readelf了。你的Pastebin表演
HelloWorld:[ 1] .interp           PROGBITS        00008134 000134 000013 00   A  0   0  1
       zip:[ 1] .interp           PROGBITS        00010134 000134 000013 00   A  0   0  1

值10134-134=10000(十六进制)生成正确的文本段链接器选项。下一步(加载…)是对齐说明符,对于HelloWorld是0x8000,而对于内置的zip是0x1000。根据我的经验,软浮动并没有造成问题。