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(またはそれ以前)のクロスコンパイラを取得する方法についての提案はありますか?
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
パッケージで完了しました。)