クロスコンパイルdockerインスタンスをセットアップしました。一言で言えば、私は
apt-get update
apt-get install binutils-multiarch
dpkg --add-architecture armhf
# Manually add correct armhf repositories to /etc/apt/sources.list
apt-get update
apt-get install libudev-dev:armhf
この最後のステップで、次のエラーが表示されます。
The following packages have unmet dependencies:
libudev-dev:armhf : Depends: libacl1:armhf (>= 2.2.51-8) but it is not going to be installed
Depends: libblkid1:armhf (>= 2.19.1) but it is not going to be installed
Depends: libc6:armhf (>= 2.17) but it is not going to be installed
Depends: libgcc1:armhf (>= 1:3.5) but it is not going to be installed
Depends: libkmod2:armhf (>= 5~) but it is not going to be installed
Depends: libselinux1:armhf (>= 2.0.65) but it is not going to be installed
Depends: libudev1:armhf (= 229-4ubuntu4) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
libc6:armhf
は現在インストールされているAMD64 libc6と競合し、このパッケージを上書きするため、これらを手動でインストールすることはオプションではありません。リンクできるようにlibudev:armhf
パッケージをセットアップしたいだけです。
/ etc/apt/sources.list:
deb [Arch=AMD64] http://archive.ubuntu.com/ubuntu/ xenial main restricted
deb [Arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ xenial main restricted
deb [Arch=AMD64] http://archive.ubuntu.com/ubuntu/ xenial-updates main restricted
deb [Arch=AMD64] http://archive.ubuntu.com/ubuntu/ xenial universe
deb [Arch=AMD64] http://archive.ubuntu.com/ubuntu/ xenial-updates universe
deb [Arch=AMD64] http://security.ubuntu.com/ubuntu/ xenial-security main restricted
deb [Arch=AMD64] http://security.ubuntu.com/ubuntu/ xenial-security universe
deb [Arch=AMD64] http://security.ubuntu.com/ubuntu/ xenial-security multiverse
apt-cache policy libudev-dev:{AMD64,armhf}
を実行すると、次が出力されます。
libudev-dev:
Installed: (none)
Candidate: 229-4ubuntu21.4
Version table:
229-4ubuntu21.4 500
500 http://archive.ubuntu.com/ubuntu xenial-updates/main AMD64 Packages
229-4ubuntu21.1 500
500 http://security.ubuntu.com/ubuntu xenial-security/main AMD64 Packages
229-4ubuntu4 500
500 http://archive.ubuntu.com/ubuntu xenial/main AMD64 Packages
libudev-dev:armhf:
Installed: (none)
Candidate: 229-4ubuntu4
Version table:
229-4ubuntu4 500
500 http://ports.ubuntu.com/ubuntu-ports xenial/main armhf Packages
押す Ctrl+Alt+T。
実行:
Sudo cp /etc/apt/sources.list /etc/apt/sources.list.old
実行:
Sudo gedit /etc/apt/sources.list
必要に応じて、他のエディターを使用できます。
sources.list
の編集:ここですべてを削除して、これらを追加します。
deb [Arch=AMD64] http://archive.ubuntu.com/ubuntu/ xenial main multiverse restricted universe
deb [Arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ xenial main multiverse restricted universe
deb [Arch=armhf] http://ports.ubuntu.com/ubuntu-ports/ xenial-updates main multiverse restricted universe
deb [Arch=AMD64] http://archive.ubuntu.com/ubuntu/ xenial-updates main multiverse restricted universe
deb [Arch=AMD64] http://security.ubuntu.com/ubuntu/ xenial-security main multiverse restricted universe
保存して終了。
実行:
Sudo apt update
armhf
アーキテクチャのlibudev-dev
をインストールします。実行:
Sudo apt install libudev-dev:armhf
説明: Multiarchパッケージは、すべてのアーキテクチャに同じバージョンでインストールする必要があります。したがって、libudev-dev:armhf
にはバージョン229-4ubuntu21.4
が必要ですが、現在のリポジトリ構成にはこのバージョンが含まれていません。そのため、このバージョンがサポートされているxenial-updates
の行を追加する必要があります。
チャンネルを追加するために提案されたその他については、何か問題が発生した場合に備えて追加することをお勧めします。