GCC中Raspberry Pi的交叉编译.从哪儿开始?

52 c++ gcc arm cross-compiling raspberry-pi

TL/DR:我在哪里可以找到有关为ARM(gnueabi)平台(旨在在Raspberry Pi设备上运行)构建GCC 4.7.0交叉编译工具链的更多信息?

我刚买了一个全新的Raspberry Pi,我非常渴望为它开始编程.我已经设法安装了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工具链进行交叉编译,因为我打算做很多编译,我希望它尽可能快.

编辑2:

由于GCC 4.7.0相对较新,似乎没有预先构建的交叉编译器(i386-> ARM).我可能不得不自己构建一个,这似乎是一个非常重要的任务(我已经尝试过并且失败了).有没有人知道要建立GCC交叉编译器的教程,希望是最近的版本之一?

我已经尝试过这个很棒的shell脚本(它非常适合构建同一个arch编译器)并且我已经成功构建了binutilsGCC的先决条件,但是GCC构建仍然失败了很多神秘的错误.我真的迷失在这里,所以我非常感谢你的帮助.

Raspberry Pi上的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 
Run Code Online (Sandbox Code Playgroud)

编辑3:

我设法使用这个shell脚本为ARM构建一个4.7 GCC工具链(yay!),如用户dwelch在评论中所建议的那样.我还构建newliblibstdc++使用本文作为指南.工具链工作正常,但是我在我的Raspberry Pi上运行可执行文件,它失败了Illegal instruction.可能是什么原因?

小智 25

我找到了这些说明如何为Raspberry Pi构建交叉编译器.通过使用crosstool-ng简化配置交叉编译器构建A LOT(它有一个很好的基于curses的界面)的工具,它是一个很好的步骤,它支持GCC 4.7.

好像很棒!


Nic*_*ckT 2

我找不到 4.7 gcc,只有 4.6。有关信息,我按照本页上的指南在一台相当旧的 Ubuntu 机器(1Ghz,768MB RAM)上编译了 Pi 的内核: 内核编译

构建花费了大约 90 分钟,而建议在 Pi 上花费 6 小时。内核在 Pi 上运行良好。也许您可以调整这些指南,以便在您的 x86 Linux 计算机上交叉编译其他项目。