gpt4 book ai didi

linux应用程序被杀死

转载 作者:IT王子 更新时间:2023-10-29 00:38:52 26 4
gpt4 key购买 nike

我有一个“Seagate Central”NAS,上面有一个嵌入式 linux

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

当我尝试在这个 NAS 上运行我自己的应用程序时,它会被“Killed”在 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

如何找出哪个进程正在终止我的应用程序,或者我必须更改哪些设置?

附言:我创建了一个简单的 HelloWorld 应用程序,但它也无法正常工作!

$ ldd Hello
$ not a dynamic executable


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

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

更新 1

我编译了一个带有硬 float 的新二进制文件

 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 使用的页面大小/偏移量为 0x10000,而 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(十六进制)产生正确的文本段链接器选项。再往下 (LOAD...) 是对齐说明符,对于 HelloWorld 为 0x8000,对于内置 zip 为 0x10000。根据我的经验,soft-float 不会造成问题。

关于linux应用程序被杀死,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19651735/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com