amd64にcrossbuild-essential-armhfをインストールする

amd64にcrossbuild-essential-armhfをインストールする

現在、ラップトップ (amd64) で作業しながら、BeagleBone (armhf) で SSH 経由でコードをコンパイルできます。

私が今やろうとしているのは、任意の IDE (Code::Blocks、KDevelop、または Qt Creator) を使用してそのコードをデバッグできるようにすることです。

gdbserverそこで、 BeagleBone で実行して接続することを考えましたが、応答時に予期しない値のエラーが発生します。これについて調べたところ、gdb処理するには、ローカルで armhf 実行ファイルをビルドする必要があるようです。ただし、amd64 用にビルドされた armhf 指向のものも必要と思われるgdbため、 をインストールしてみましたcrossbuild-essential-armhf。そのために、 で armhf アーキテクチャを追加しましたdpkg --add-architecture armhfが、apt-get update を実行できません。次のようなエラーが大量に発生します。

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行にアーキテクチャを指定しても意味がないことに注意してください。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

ビルド ホストの dpkg ソースに armhf を追加する必要はありません。別の方法としては、debootstrap または beagleboard.org イメージを使用して作成できる chroot を使用する方法があります。

VS Code を使用したリモート GDB シンボリック デバッグによる C++ クロスコンパイルの詳細なガイドについては、以下を参照してください。

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

関連情報