Gentoo

Gentoo Linux下如何建構AVR交叉編譯器?

  • September 1, 2016

我需要在我的 PC 上安裝 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 (掩飾:損壞)

由於所有的包都被損壞掩蓋了,所以不可能用普通的方式來取消它們;而手動生成清單被認為是不好的做法。

我不知道您是否能夠解決您的問題,但是對於遇到相同問題的任何人來說,這裡是;截至 2015 年 9 月 2 日(我的crossdev環境中的移植日期),如果您執行以下命令,則不會出現問題:

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

後者是Gentoo Arduino Wiki的摘錄。只需確保編輯/usr/avr/etc/portage/make.conf和設置ACCEPT_KEYWORDS="avr"(我注意到即使您選擇了穩定分支,也始終包含“ ~ARCH ”)。

編輯:現在 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

wiki 末尾提到了這個錯誤,但我使用了符號連結的輕微變化,/usr/lib64/binutils/avr/2.24/ldscripts無論如何都是指向的。

添加該符號連結後,我可以為 ATmega8L 編譯範常式式碼而不會出現任何錯誤。

您可能會收到“缺少摘要”錯誤的一個原因(截至 2016 年在 Gentoo 中,不知道這在 2013 年是否屬實)是您正在使用來自 git 的 portage 樹(因此,清單很薄,不t 包含 ebuild 本身的摘要),而用於 crossdev 的覆蓋不允許這樣做。如果是這種情況,添加thin-manifests = trueto$overlay/metadata/layout.conf應該足以解決問題。

引用自:https://unix.stackexchange.com/questions/65391