Debian“stretch”具有针对 gcc 版本 5 和 6 的内置交叉编译器,但显然仅在其 gcc-4.x 软件包中包含本机架构。不幸的是,我需要编译依赖于较旧的 Linux 内核头文件的软件,这些头文件无法使用高于 4.x 的 gcc 版本进行构建(它们最终会尝试包含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.
我相信前两个失败的软件包可以安装,因此我可以在必要时手动执行这些操作,但第三个软件包似乎在我看来不存在。
有什么建议我可以在这个系统上为arm-linux-gnueabihf获得一个工作的gcc-4.9(或更早版本)交叉编译器吗?
答案1
Emdebian 于 2014 年 11 月停止维护。您也许能够使用您发现的可用软件包libisl13
从快照。
否则,您可以使用该包构建交叉编译器,gcc-4.9
并且可能dpkg-cross
;看README.cross
了解详情。基本上,您需要跨 binutils 和适当的库包(Jessie 或 Stretch 中的多架构包应该可以,希望不要使用 转换它们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
包中完成。)