TL/DR:我在哪里可以找到有关为ARM(gnueabi)平台构建GCC 4.7.0交叉编译工具链的更多信息(旨在在树莓派设备上运行)?
我刚刚得到了一台全新的树莓派,非常渴望开始为它编程。我已经成功安装了GCC工具链(我正在使用Arch Linux系统映像),并编译了一些基本程序,一切正常。
我还尝试编译Boost库,因为我经常在我的项目中使用它们,按照说明(./bootstrap.sh + ./b2)似乎一切都很好,除了编译速度极慢的事实。我把它放了几个小时,但它几乎没有通过前几个源文件。当我让它整夜运行时,我发现由于RAM不足而中止了构建过程。
因此,我的猜测是Rasp Pi对于编译如此大的东西(如Boost)来说简直是性能不足。因此,跨编译出现在我的脑海中。然而,尽管有很多有关ARM交叉编译的信息可用在线上,但我觉得很困惑。一个人从哪里开始呢?
我在Raspberry Pi上有最新版本的GCC(4.7.0),所以我希望能够使用同样的版本进行交叉编译。请问在哪里可以获取用于ARM的GCC 4.7.0工具链?(我将在x86 CentOS 6.2上编译)。
编辑:
我回收了不需要的GPU内存,并在USB驱动器上设置了4GB的交换分区,而生成文件则在NFS共享上。现在Boost的编译速度快多了,因此尚可应对。但我仍然想知道如何在我的x86 PC上设置一个GCC 4.7工具链以进行交叉编译,因为我打算进行大量编译,希望它尽可能地快。
第二次编辑:
由于GCC 4.7.0相对较新,似乎没有预构建的交叉编译器(i386-> ARM)。我可能需要自己构建一个,这似乎是一个比较复杂的任务(我尝试过并失败了)。是否有人知道一个教程可以跟随构建GCC交叉编译器,最好是针对最新版本之一?
我尝试过使用这个很棒的shell脚本(用于构建相同架构的编译器非常成功),并且已经成功构建了
树莓派上的GCC已配置为:
我刚刚得到了一台全新的树莓派,非常渴望开始为它编程。我已经成功安装了GCC工具链(我正在使用Arch Linux系统映像),并编译了一些基本程序,一切正常。
我还尝试编译Boost库,因为我经常在我的项目中使用它们,按照说明(./bootstrap.sh + ./b2)似乎一切都很好,除了编译速度极慢的事实。我把它放了几个小时,但它几乎没有通过前几个源文件。当我让它整夜运行时,我发现由于RAM不足而中止了构建过程。
因此,我的猜测是Rasp Pi对于编译如此大的东西(如Boost)来说简直是性能不足。因此,跨编译出现在我的脑海中。然而,尽管有很多有关ARM交叉编译的信息可用在线上,但我觉得很困惑。一个人从哪里开始呢?
我在Raspberry Pi上有最新版本的GCC(4.7.0),所以我希望能够使用同样的版本进行交叉编译。请问在哪里可以获取用于ARM的GCC 4.7.0工具链?(我将在x86 CentOS 6.2上编译)。
编辑:
我回收了不需要的GPU内存,并在USB驱动器上设置了4GB的交换分区,而生成文件则在NFS共享上。现在Boost的编译速度快多了,因此尚可应对。但我仍然想知道如何在我的x86 PC上设置一个GCC 4.7工具链以进行交叉编译,因为我打算进行大量编译,希望它尽可能地快。
第二次编辑:
由于GCC 4.7.0相对较新,似乎没有预构建的交叉编译器(i386-> ARM)。我可能需要自己构建一个,这似乎是一个比较复杂的任务(我尝试过并失败了)。是否有人知道一个教程可以跟随构建GCC交叉编译器,最好是针对最新版本之一?
我尝试过使用这个很棒的shell脚本(用于构建相同架构的编译器非常成功),并且已经成功构建了
binutils
和GCC的先决条件,但是GCC构建一直失败,出现了许多难以理解的错误。我真的很迷茫,在此非常感谢您的帮助。树莓派上的GCC已配置为:
--prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib
--mandir=/usr/share/man --infodir=/usr/share/info
--with-bugurl=https://bugs.archlinux.org/
--enable-languages=c,c++,fortran,lto,objc,obj-c++ --enable-shared
--enable-threads=posix --with-system-zlib --enable-__cxa_atexit
--disable-libunwind-exceptions --enable-clocale=gnu
--disable-libstdcxx-pch --enable-libstdcxx-time
--enable-gnu-unique-object --enable-linker-build-id --with-ppl
--enable-cloog-backend=isl --enable-lto --enable-gold
--enable-ld=default --enable-plugin --with-plugin-ld=ld.gold
--with-linker-hash-style=gnu --disable-multilib --disable-libssp
--disable-build-with-cxx --disable-build-poststage1-with-cxx
--enable-checking=release --host=arm-unknown-linux-gnueabi
--build=arm-unknown-linux-gnueabi
编辑3:
我成功地使用用户dwelch在评论中建议的此shell脚本构建了一个针对ARM的4.7 GCC工具链(耶!)。 我还使用这篇文章作为指南构建了newlib
和libstdc++
。 工具链运行良好,但是当我在我的Raspberry Pi上运行可执行文件时,它会失败并显示非法指令
。可能的原因是什么?