Ubuntu 运行静态链接应用程序时,libc中出现SEGFULT

Ubuntu 运行静态链接应用程序时,libc中出现SEGFULT,ubuntu,segmentation-fault,arm,libc,tegra,Ubuntu,Segmentation Fault,Arm,Libc,Tegra,我试图在ubuntu tegra(ARM)板上运行一个静态链接的hello world程序,但libc中的一个函数似乎给出了一个分段错误 Program received signal SIGSEGV, Segmentation fault. 0x00039a1a in _dl_get_origin () (gdb) bt #0 0x00039a1a in _dl_get_origin () #1 0x0001abaa in _dl_non_dynamic_init () #2 0x000

我试图在ubuntu tegra(ARM)板上运行一个静态链接的hello world程序,但libc中的一个函数似乎给出了一个分段错误

Program received signal SIGSEGV, Segmentation fault.
0x00039a1a in _dl_get_origin ()
(gdb) bt
#0  0x00039a1a in _dl_get_origin ()
#1  0x0001abaa in _dl_non_dynamic_init ()
#2  0x0001b5d8 in __libc_init_first ()
#3  0x00008ae2 in __libc_start_main ()
#4  0x000088d4 in _start ()
动态链接时,不会出现任何问题

更多详情:

a.out: ELF 32-bit LSB  executable, ARM, EABI5 version 1 (SYSV), statically linked, for GNU/Linux 2.6.32, BuildID[sha1]=f56e8ee17aa966e641c8b4e1ba3105abc077a143, not stripped

gcc (Ubuntu/Linaro 4.8.2-19ubuntu1) 4.8.2

Linux tegra-ubuntu 3.10.24-g6a2d13a #1 SMP PREEMPT Fri Apr 18 15:56:45 PDT 2014 armv7l armv7l armv7l GNU/Linux

有关于如何解决这个问题的建议吗?谢谢

这是交叉编译的还是本机生成的?交叉编译器的libc与目标上的libc之间的差异是一个明显的罪魁祸首,但该版本意味着本机GCC包。不管怎样,这里没有足够的信息来调试它。故障发生在函数中的哪个位置()?实际的坏地址是什么(最坏的情况下,应该可以从当时的反汇编和寄存器状态中找出它)?ARM板上的所有内容都是本机的。我希望我能深入挖掘,但这意味着从源代码编译libc,以便gdb让我进入内部状态。这是交叉编译的还是本机构建的?交叉编译器的libc与目标上的libc之间的差异是一个明显的罪魁祸首,但该版本意味着本机GCC包。不管怎样,这里没有足够的信息来调试它。故障发生在函数中的哪个位置()?实际的坏地址是什么(最坏的情况下,应该可以从当时的反汇编和寄存器状态中找出它)?ARM板上的所有内容都是本机的。我希望我能深入挖掘,但这意味着从源代码编译libc,以便gdb让我能够访问内部状态。