我尝试安装交叉工具链,以便可以在 amd64(Debian 测试“jessie”)上为我的 ARM 系统构建 Linux 内核。我有这个条目sources.list
:
deb http://www.emdebian.org/debian sid main
当我尝试安装时gcc-4.7-arm-linux-gnueabi,我得到一个错误:
cc-4.7-arm-linux-gnueabi :取决于:libgomp1-armel-cross (>=4.7.2-5),但不会安装
libgomp1-armel-cross反过来又取决于gcc-4.8-base-armel-cross这是任何地方都找不到的。
在某些时候,我确实设法从同一个存储库安装这些交叉构建工具,甚至在几周前构建了一个现在可以在这些 ARM 系统上运行的内核。该存储库中有什么东西损坏了吗?我尝试了其他几个版本的 GCC,但仍然遇到同样的问题。
一个不理想的解决方案是在 Ubuntu 12.04 VM 中交叉构建。该发行版在其官方存储库中提供了 ARM 交叉编译器。
答案1
stable
建议在大多数情况下使用 Emdebian 存储库,因为存储库中可能存在未内置的实用程序、被撤回的包等。如果您想确保所有库都具有正确的依赖项,我建议stable
或testing
因为他们不太可能有依赖性问题或有一些无聊的事情。
答案2
Debian 现在正式包含跨工具链,尽管它们不会成为下一个稳定版本 (8.0) 的一部分。提供虚拟包。
答案3
稳定没有帮助。 4.7 - 4.8 的不一致仍然存在。从 4.4 版(大约)开始,这种不一致就一直存在gcc
。
答案4
我建议以“Linux 方式”做事,这对我来说意味着尽可能少的自动配置。我将从经销商的站点下载所需的工具链,并在项目的工作目录中设置一个 .CC 文件。您的 CC 文件应如下所示:
export PATH=< PATH-TO-TOOLCHAIN-BIN-FOLDER>:${PATH}
export CROSS_COMPILE=< TOOLCHAIN PREFIX` i.e "arm-none-gnueabi-" (the last "-" is important)
export ARCH=< ARCHITECTURE>
完成此操作后,在运行任何编译之前,发出“source .CC”,然后像平常一样编译,即“gcc/g++/ld……”。编译将自动使用工具链(您将在编译的输出中看到正在使用工具链)