web-dev-qa-db-ja.com

Debianストレッチにgcc4.9アームクロスコンパイラをインストールする方法

Debianの「stretch」にはgccバージョン5および6用のクロスコンパイラが組み込まれていますが、gcc-4.xパッケージにはネイティブアーキテクチャしか含まれていないようです。残念ながら、4.x以降のgccバージョンではビルドに失敗する古いLinuxカーネルヘッダーに依存するソフトウェアをコンパイルする必要があります(ファイルをインクルードしようとすることになりますinclude/compiler-gcc<major-version>.hそれ以降のバージョン番号には存在しない)ので、これらは私には役に立たない。

「embedian」リポジトリを使用してみましたが、「wheezy」、「jessie」、「unstable」のバージョンブランチしかないため、「unstable」がストレッチの古い参照であると想定して試しましたが、何か便利なものをインストールするように説得することはできないようです。私が得るエラーは次のとおりです。

The following packages have unmet dependencies:
 gcc-4.9-arm-linux-gnueabihf : Depends: cpp-4.9-arm-linux-gnueabihf (= 4.9.2-16) but it is not going to be installed
                               Depends: libgcc-4.9-dev:armhf (= 4.9.2-16)
                               Depends: libisl13 (>= 0.10) but it is not installable
                               Recommends: libc6-dev:armhf (>= 2.13-5)
E: Unable to correct problems, you have held broken packages.

失敗した最初の2つのパッケージはインストールできると思うので、必要に応じて手動でインストールできますが、3番目のパッケージはどこにも存在しないようです。

このシステムでarm-linux-gnueabihf用の動作するgcc-4.9(またはそれ以前)のクロスコンパイラを取得する方法についての提案はありますか?

1
Jules

Emdebianは2014年11月に保守を停止しました。 スナップショットからlibisl13 を使用して、動作することがわかったパッケージを取得できる可能性があります。

それ以外の場合は、gcc-4.9パッケージと場合によってはdpkg-crossを使用してクロスコンパイラーを構築できます。詳細については、 README.cross を参照してください。基本的に、cross-binutilsと適切なライブラリパッケージが必要です(JessieまたはStretchのmultiarchパッケージは、できればdpkg-crossを使用して変換せずに実行する必要があります)。その後

apt-get source gcc-4.9
cd gcc-4.9-4.9.4
GCC_TARGET=armhf dpkg-buildpackage -us -uc

gcc-4.9パッケージは、dpkg-crossではなくプレーンマルチアーチへの移行の途中であるため、いくつかの問題が発生する可能性があります。 (移行はgcc-5およびgcc-6パッケージで完了しました。)

0
Stephen Kitt