我正在尝试将现有的Linux C++应用程序移植到Raspberry Pi。该应用程序取决于许多第三方库。

我正在运行Ubuntu 12.04,并使用crosstools-ng构建了我的GCC 4.7交叉编译器(直到后来才意识到,使用官方提供的工具链可以省去麻烦!)我的树莓。到现在为止还挺好。

然后,我开始尝试构建所有第三方库依赖项:GLib,SDL和其他几个。这些依赖关系中的每一个都有其自己的依赖关系,等等。很快变得显而易见,手动构建所有这些库的ARM版本将非常繁琐且耗时。有没有更简单的方法?

最佳答案

发现ScratchBox2之后,我设法将一些可行的方法拼凑在一起。 ScratchBox2是一个工具,可促进创建适合交叉编译的chroot并利用QEmu,允许您在计算机上运行外部CPU二进制文件。以我为例,ScratchBox2介导了对Raspbian的独立沙箱的访问,Raspbian是为Raspberry Pi优化的Debian的ARM变量。

最终的结果是,一旦我完成所有设置,并且设置起来花费了数个乏味的小时,我便能够简单地键入sb2 -eR apt-get install ...来获取任何必需的ARM软件包。这是不可思议的东西。 (警告:我对Ubuntu 12.10中的官方ScratchBox2软件包不太满意,因此最好使用official Git repo的最新版本从源代码自行构建它。)

为了帮助您更轻松地重现我的设置,我在Github上为我的虚拟机添加了一个Vagrant食谱:https://github.com/nickhutchinson/raspberry-devbox。几乎可以肯定它的边缘是粗糙的-这是我第一次使用Puppet设置工具,但是希望其他人可以使其更强大。

我发现这些资源非常有帮助:

  • 幻灯片介绍ScratchBox2(PDF)http://www.daimi.au.dk/~cvm/sb2.pdf
  • 一个论坛线程,描述如何创建Raspbian chroot:http://www.raspberrypi.org/phpBB3/viewtopic.php?f=66&t=7413
  • 关于ubuntu - 为Raspberry Pi交叉编译第三方库的非繁琐方式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13663292/

    10-12 22:54