如何在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

你可能会收到“missing 摘要”错误(Gentoo 中截至 2016 年,不知道 2013 年是否属实)的原因之一是你正在使用 git 中的 portage 树(因此,使用瘦清单不会t 包含 ebuild 本身的摘要),而用于 crossdev 的覆盖不允许这样做。如果是这种情况,添加thin-manifests = trueto$overlay/metadata/layout.conf应该足以解决问题。

答案2

我不知道您是否能够解决您的问题,但对于遇到相同问题的任何人来说,这里是:截至 2015 年 9 月 2 日(我的搬运日期交叉开发环境)如果运行以下命令,则不会出现问题:

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

后者摘录自Gentoo Arduino 维基。请务必编辑/usr/avr/etc/portage/make.conf和设置ACCEPT_KEYWORDS="avr"(我注意到“~拱门即使您选择了稳定分支,“也始终包含在内)。

编辑:现在 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软件包,但它们都被标记为损坏某些东西。基本上这意味着当您编译该包时它无论如何都不会工作。不确定事情以什么方式被破坏。 Gentoo 手册中很好地解释了如何在 Gentoo 中取消软件包的屏蔽,此外还可以在https://unix.stackexchange.com/时间太久了,我已经记不清了。

相关内容