Ubuntu 运行静态链接应用程序时,libc中出现SEGFULT
我试图在ubuntu tegra(ARM)板上运行一个静态链接的hello world程序,但libc中的一个函数似乎给出了一个分段错误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
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让我能够访问内部状态。