gpt4 book ai didi

macos - 运行 arm-elf-gcc 编译代码时出现段错误

转载 作者:行者123 更新时间:2023-12-01 13:40:57 24 4
gpt4 key购买 nike

我刚刚使用 MacPorts 在我的 MacBook Pro 上安装了 arm-elf-gcc。这工作完美无瑕,一切似乎都运行良好。

但是,在用 C 和 C++ 编译了一个简单的 hello world 测试程序并尝试在目标板(运行 Debian Linux 的基于 ARM9 的板)上运行时,它们立即出现了段错误。

我对如何进行调试有点困惑,因为目标板的可用工具有限,而且没有 gdb。我已经使用 Linux 托管的交叉编译器成功构建并运行了其他代码,因此它应该可以工作。

有什么想法吗?

按照我构建并运行 gdbserver 的建议,我在主机上的 gdb 中得到以下信息:

程序收到信号 SIGSEGV,段错误。0x00000000 在 ?? ()

我认为这可能是标准 c 库的问题,所以我删除了所有调用,只有一个返回 0 的空 main,它是用 -Wall -g hello-arm.cpp -static。作为测试,我使用 Linux 托管的交叉编译器编译了相同的源代码,它可以正常运行和退出。我能看到的唯一区别是 Linux 编译版本的大小超过两倍,并且 file 命令的输出不同:

arm-elf-gcc:ELF 32 位 LSB 可执行文件,ARM,版本 1,静态链接,未剥离

arm-*-linux:ELF 32 位 LSB 可执行文件,ARM,版本 1,静态链接,用于 GNU/Linux 2.4.18,未剥离

最佳答案

在这种情况下,通常的调试方法是在目标板上运行 gdbserver,并使用在主机上运行的 gdb 连接到它(通过以太网)。

或者,您可以尝试比较 Mac 编译的“Hello World”程序和(工作中的)Linux 编译程序中的程序集,看看有什么不同。

关于macos - 运行 arm-elf-gcc 编译代码时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4133546/

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