You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu虚拟机交叉编译树莓派C++程序出现内存访问错误求助

交叉编译树莓派C++程序出现内存访问错误的原因及解决办法

嘿,我来帮你排查这个问题——你遇到的德语提示「Speicherzugriffsfehler」(内存访问错误),核心原因是编译命令的语法错误,咱们一步步说清楚:

1. 编译命令的致命错误

你用的编译命令:

arm-linux-gnueabihf-g++ hello.cpp hello

这个写法完全错了!g++(包括交叉编译版本)的语法里,输出文件需要用 -o 参数指定。你现在直接把 hello 放在后面,编译器会把它当成第二个输入源文件来处理——但hello还不存在,就算编译过程没报错,最终生成的文件也不是符合ARM架构的可执行程序,运行时自然会触发内存访问错误。

正确的编译命令

把输出文件用 -o 指定:

arm-linux-gnueabihf-g++ hello.cpp -o hello

2. 其他需要注意的细节

除了命令错误,还有几个小地方可以检查,避免后续踩坑:

  • 工具链匹配:你安装的 g++-arm-linux-gnueabihf 是针对ARM32位架构(armhf)的,适合树莓派2/3/4(32位系统),如果你的树莓派是64位系统,需要换成 g++-aarch64-linux-gnu
  • 文件权限:把编译好的 hello 传到树莓派后,记得给它加可执行权限:chmod +x hello
  • 代码小笔误:你的Hello World里有个拼写错误——Hello Worl from Pi 少了个字母d,改成 Hello World from Pi 就完美了(这个不影响运行,只是输出内容不对)

验证步骤

  1. 用正确命令重新编译
  2. 通过SCP或者U盘把hello传到树莓派
  3. 在树莓派终端运行 ./hello,应该就能正常输出了

内容的提问来源于stack exchange,提问作者andreas42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 07:18:13