2015-11-11 45 views
0

我有一个使用“arm-none-linux-gnueabi-”交叉编译器工具链编译的应用程序(嵌入式OPC-UA服务器)。在ARM/Linux上的段错误

该应用程序按照预期在Beagle Bone Black(GNU/Linux)上运行。

当我尝试在类似于Beagle-Bone-Black的目标平台上使用相同的处理器执行应用程序时,应用程序会抛出seg-fault。它甚至不执行main中的第一个printf指令。

什么可能是导致此行为的硬件/软件约束? 是否有可能是因为RAM中没有足够的空闲内存?

+1

这是非常开放的,除非很多人遇到同样的事情。你有没有试过编译和运行一些非常简单和最小的东西? –

+0

我编译了许多更简单的应用程序,它们运行良好。我也尝试使用GDB进行调试,但由于帧损坏导致回溯停止。我实际上很无能。 – Praveen

回答

1

当我尝试在类似Beagle-> Bone-Black的目标平台上执行应用程序时,应用程序会抛出Seg-fault。它甚至不会执行main中的第一个printf指令。

看起来像ld-linux问题。在任何编辑器中打开你的二进制文件,看看 子串ld-linux,例如在amd64上它看起来像这样:/lib64/ld-linux-x86-64.so.2,然后检查类似的平台,我想它有不同的路径ld-linux,如果你运气好,那么你只需要创建软符号链接,如果没有,你必须重建你的应用程序。

+0

嗨,我创建了一个文件夹结构。 “/ usr/local/lib”包含所有必需的共享库。 ../bin包含可执行文件。 我在ld-linux的“/ lib”中有一个软链接。 我认为这不是一个原因。我很感谢你的建议,如果你能想到别的东西,请告诉我。 谢谢 – Praveen

+0

Aslo内核发送segfault信号进行处理,即调用未知系统调用。 – fghj

+0

嗨,你能详细说明一下吗? – Praveen