Debian Jessieでパッケージのビルド環境を設定しようとしています。ソフトウェアのamd64、i386、および最終的なarmelとarmhfバイナリを生成する必要があります。 Debian がサポートするすべてのアーキテクチャにクロスコンパイルできれば本当に良いでしょうが、この 4 つが私が特に心配するアーキテクチャです。
私はamd64 Debian Jessieで始まり、i386マルチアーキテクチャを追加しました。
libpulse-dev
ソフトウェアの依存関係をインストールするまで、すべてがうまくいきました。インストール時に受け取りました
次のパッケージには満たされていない依存関係があります。 libpulse-dev :libglib2.0-dev に依存しますが、インストールされません。
そしてapt-get
次のパッケージには満たされていない依存関係があります。 libglib2.0-dev:クラッシュ:libglib2.0-dev:i386ですが、2.42.1-1がインストールされています。
そしてaptitude
。
libglib2:amd64
衝突があるようですlibglib2:i386
。同時にインストールできません。 Freenodeの誰かが#debian
これがマルチアーキテクチャの周知の限界だと言った。
i386をビルドするには、このパッケージをインストールする必要があります。
私はi386 multiarchが動作しないので、それを削除し、i386 chrootを設定し、そのchroot内にi386バージョンのソフトウェアを構築することを検討しています。
このchrootソリューションはi386で動作するはずですが、armel、armhf、arm64、mipsなどのすべてのアーキテクチャのバイナリを作成するときは機能しません。 armel、armhf、arm64、mipsではこれらのビルドを作成できません。私のプロセッサはarmとmipsの実行可能ファイルを実行できないので、chrootsなどがあります。
同じDebian Jessieシステムでamd64、i386、armel、armhf、arm64、およびmipsアーキテクチャ用のソフトウェアビルドを一貫した方法で生成する方法マルチアーキテクチャを使用して構築されています。」)libglib2
マルチアーキテクチャを使用する場合など、競合は発生しませんか?
答え1
残念ながら、glib2.0
(まだマルチアーキテクチャと互換性がない)購読することができます。https://bugs.debian.org/648621物事を見続けたい場合。
さまざまなアーキテクチャ用のソフトウェアを構築するには、次のものを使用できます。pbuilder
そして/またはqemubuilder
。 Debian は Qemu を使用して、さまざまなアーキテクチャでバイナリを実行する chroot をすばやくサポートしていますdebootstrap
。
答え2
依存関係にマルチアーキテクチャクロスコンパイルを使用しますが、各ターゲットアーキテクチャに専用のchrootを使用して2つのアプローチを組み合わせることができます。
これにより、競合の問題があまり発生しません。あなたのパッケージで動作することを保証することはできませんが、同じルートファイルシステムですべての操作を実行するよりも優れた機会があります。