在 amd64 上安裝 crossbuild-essential-armhf

在 amd64 上安裝 crossbuild-essential-armhf

現在,在我的筆記型電腦 (amd64) 上工作時,我已經可以在 BeagleBone (armhf) 上透過 SSH 編譯程式碼。

我現在想做的是能夠使用任何 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

相關內容