在 amd64 上安装 crossbuild-essential-armhf

在 amd64 上安装 crossbuild-essential-armhf

现在,在我的笔记本电脑(amd64)上工作时,我已经可以通过 SSH 在 BeagleBone(armhf)上编译代码。

我现在想做的是能够使用任何 IDE 来调试该代码(Code::Blocks、KDevelop 或 Qt Creator)。

因此,我想到gdbserver在 BeagleBone 上运行并连接到它,但它在回复时给我一个意外值的错误。我读了相关内容,似乎我需要在本地构建一个 armhf 可执行文件,以便gdb进行处理。但我猜它还需要一个gdb为 amd64 构建的面向 armhf 的文件,所以我尝试安装crossbuild-essential-armhf。为此,我添加了 armhf 架构dpkg --add-architecture armhf,但随后我无法执行 apt-get 更新。我得到了很多这样的信息:

Err http://security.ubuntu.com trusty-security/main armhf Packages             
  404  Not Found [IP: 2001:67c:1562::13 80]

如果我检查存储库,它们确实在任何地方都没有 armhf。

那么,我做错了什么?此外,这是使用不同体系结构进行远程调试的正确方法吗?还是有更好的方法?

答案1

Ubuntu 对 armh 使用单独的存储库(即http://ports.ubuntu.com/)。要成功安装 crossbuild-essential-armhf,您必须遵循以下步骤:

  1. 跑步dpkg --add-architecture armhf

  2. /etc/apt/sources.list为和中的所有 apt deb 行指定正确的体系结构/etc/apt/sources.list.d,例如:

    deb [arch=amd64,i386] http://archive.ubuntu.com/ubuntu trusty main universe
    deb [arch=armhf] http://ports.ubuntu.com/ trusty main universe
    

请注意,为 deb-src 行指定 arch 是没有意义的。3. 运行apt-get update 4. 运行apt-get install crossbuild-essential-armhf

看一下https://wiki.debian.org/Multiarch/HOWTO

您可能还希望按照本指南中提到的那样在 chroot(或者可能是 docker 容器)中执行这些命令:在 Ubuntu 中开始使用 MultiArch (armel / armhf)

答案2

这里有丰富的基于 Docker 的交叉编译器供您选择:

https://github.com/dockcross/dockcross

答案3

无需将 armhf 添加到构建主机的 dpkg 源中。另一种方法是使用 chroot,可以使用 debootstrap 或从 beagleboard.org 图像填充。

有关使用 VS Code 进行远程 GDB 符号调试的 C++ 交叉编译的完整指南,请参阅:

https://takeofftechnical.com/x-compile-cpp-bbb

相关内容