Gentoo LinuxでAVRクロスコンパイラを構築する方法は?

Gentoo LinuxでAVRクロスコンパイラを構築する方法は?

マイコンピュータにAVRクロスコンパイラをインストールする必要があります。crossdev -S avr以前に作成したのはもう動作しません。次のメッセージが表示されます。

依存関係の計算* '/var/lib/layman/calculate/cross-avr/binutils/binutils-9999.ebuild'の要約がありません
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.9.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.8.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.7.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.6.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.5.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.3.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.2.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.51.0.1.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.1.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.23.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.22.90.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.22.52.0.4.ebuild'の概要がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.22-r1.ebuild'の概要がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.21.1-r1.ebuild'の要約がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.20.1-r1.ebuild'の概要がありません。
 * '/var/lib/layman/calculate/cross-avr/binutils/binutils-2.19.1-r1.ebuild'の要約がありません。
...完成した!

!!!"cross-avr/binutils"を満たすことができるすべてのebuildがブロックされました。
!!!要求を完了するには、次のシールドパッケージのいずれかが必要です。
- cross-avr/binutils-9999::calculate(マスキング:損傷)
- cross-avr/binutils-2.23.51.0.9::calculate (マスク: 破損)
- cross-avr/binutils-2.23.51.0.8::calculate (マスク: 破損)
- cross-avr/binutils-2.23.51.0.7::calculate (マスク: 破損)
- cross-avr/binutils-2.23.51.0.6::calculate (マスク: 破損)
- cross-avr/binutils-2.23.51.0.5::calculate (マスク: 破損)
- cross-avr/binutils-2.23.51.0.3::calculate (マスク: 破損)
- cross-avr/binutils-2.23.51.0.2::calculate (マスク: 破損)
- cross-avr/binutils-2.23.51.0.1::calculate (マスク: 破損)
- cross-avr/binutils-2.23.1::calculate (マスク: 破損)
- cross-avr/binutils-2.23::calculate(マスキング:損傷)
- cross-avr/binutils-2.22.90::calculate (マスク: 破損)
- cross-avr/binutils-2.22.52.0.4::calculate (マスク: 破損)
- cross-avr/binutils-2.22-r1::calculate (マスク: 破損)
- cross-avr/binutils-2.21.1-r1::calculate (マスク: 破損)
- cross-avr/binutils-2.20.1-r1::calculate (マスク: 破損)
- cross-avr/binutils-2.19.1-r1::calculate (マスク: 破損)

すべてのパッケージは損傷で覆われているため、一般的な方法ではそれを見つけることができず、手動でマニフェストを作成することは悪い習慣と見なされます。

答え1

「要約不足」エラーが発生する可能性のある理由の1つ(2016年のGentooベース、2013年にこれが本当かどうかわからない)は、GitでPortageツリーを使用しているためです。 ebuild自身の要約を含む)、crossdevのオーバーライドはそれを許可しません。この場合thin-manifests = true、追加するだけで$overlay/metadata/layout.conf問題を解決できます。

答え2

問題を解決できたかどうかはわかりませんが、同じ問題が発生した他の人には次のようにお知らせします。 2015年9月2日現在(以前の日付)クロス開発環境) 次のコマンドを実行しても問題ありません。

USE="-openmp -sanitize" crossdev -t avr -s4 -S --without-headers

後者は以下から抜粋Gentoo Arduino Wiki。必ず編集/usr/avr/etc/portage/make.confして設定してくださいACCEPT_KEYWORDS="avr"(「〜アーチ) は stable ブランチを選択しても常に含まれます.)

編集する:これでAVRツールチェーンを再定義する必要はありません。

編集する:AVRのldscriptsディレクトリにシンボリックリンクを追加する必要があるかもしれません。

ln -s /usr/lib64/binutils/avr/2.24/ldscripts /usr/avr/lib/

そうしないと、gcc次のエラーメッセージが表示され、中断される可能性があります。

/usr/libexec/gcc/avr/ld: cannot open linker script file ldscripts/avr4.xn: No such file or directory

このエラーはウィキペディアの最後に記載されていますが、とにかくこれを指摘するためにシンボリックリンクのわずかなバリエーションを使用しました/usr/lib64/binutils/avr/2.24/ldscripts

シンボリックリンクを追加したら、ATmega8L用のサンプルコードをエラーなくコンパイルできます。

答え3

これがあなたが探しているリンクですか(Obi-Wan-Kinobeの声で):http://code.google.com/p/gentoo-avr-gcc/

答え4

これは重要な情報です:

!!! All ebuilds that could satisfy "cross-avr/binutils" have been masked.

あなたはできますマスクを解くcross-avr/binutilsパッケージの1つですが、すべてが何か破損しているとマークされています。デフォルトでは、これはパッケージのコンパイル時にはとにかく機能しないことを意味します。どのように問題が発生したのかわかりません。 Gentooのマニュアルには、Gentooでパッケージのブロックを解除する方法の良い説明があります。https://unix.stackexchange.com/古すぎてもう覚えていません。

関連情報