专栏首页嵌入式程序猿树莓派交叉编译环境的建立

树莓派交叉编译环境的建立

因为树莓派本身就相当于一台电脑,所以我们可以在树莓派上编译内核或者应用程序,但是树莓派相较于台式机或者笔记本电脑,资源和速度还是有区别的,所以就需要建立交叉编译环境在台式机或者笔记本上安装交叉编译工具链,如果在树莓派本机上编译一个内核得几个小时才能编译完。所以安装交叉编译环境相当重要,是我们后面学习开发的一切保证。假设你已经安装好虚拟机和Ubuntu系统,当然也可以用其他版本的Linux系统。树莓派官方推荐交叉编译用乌班图,所以我们安装了乌班图的16.04长期支持版本,发布于16年四月。

虚拟机VirtulBox 5.1.8

电脑安装ubuntu16.04

在成功安装有ubuntu的电脑上打开命令行终端

关于如何在虚拟机上装ubuntu可以参考http://www.wikihow.com/Install-Ubuntu-on-VirtualBox

进入home目录执行如下命令安装交叉编译工具链

git clone https://github.com/raspberrypi/tools

此过程需要等待较长时间,(也可以自己下载zip包然后解压配置)待完成后

在/.bashrc文件中加入gcc交叉工具链环境变量。

sudo nano ~/.bashrc

在该文件最后加入交叉工具链所在目录。请注意~符号表示HOME路径,.bashrc为隐藏文件。

【32位系统】

exportPATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian/bin

【64位系统】

exportPATH=$PATH:$HOME/rpi/tools/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin

请注意PATH代表环境变量,:冒号代表追加。这两种小猿都试过,可以成功安装。

保存并退出文件,接着执行以下指令以便立即更新当前控制台所包含的环境变量。

Source ~/.bashrc

输入arm-linux-gnueabihf-gcc -v 查看是否安装成功,如果现实类似下图所示的版本信息证明我们的交叉编译工具安装成功,我们就可以编译运行在树莓派上的程序了。

可以看出我的版本是4.8.3. 有兴趣的可以自己编写个小程序,然后编译下载到树莓派上运行,下节课我们来讲如何利用交叉编译器编译内核源码。安装针对其他平台的交叉编译环境也是类似,下载交叉工具链源码,解压源码,配置环境变量,查看版本,简单测试,如果成功就可以用来编译开发的程序,以及内核移植编译,驱动移植编译,等。成功安装交叉编译环境是基础,所以希望大家都会安装。

本文分享自微信公众号 - 嵌入式程序猿(InterruptISR),作者:武国平

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2016-11-18

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 手把手教你树莓派linux内核如何编译

    之前我们讲过树莓派交叉编译工具链的安装和配置,今天我们就来讲如何利用我们安装好的交叉编译器编译树莓派linux内核。 首先通过以下命令获得linux内核源码,也...

    用户1605515
  • wifi&蓝牙MCU 该不该选ESP32

    ESP32是了国内乐鑫科技推出的Wifi&蓝牙物联网MCU,而最近项目正好在用ESP32,所以我们今天就来分享下,如何让你的ESP32跑起来,并应用于更多实际项...

    用户1605515
  • 一步步学习MQX实时操作系统(3)

    建立MQX应用程序 工程搭建 在分析timer例程的基础上,弄清楚了MQX+SDK程序开发的基本架构后,开始搭建我们自己的工程,以timer例程的目录结构为参照...

    用户1605515
  • Windows下PCL1.9.1配置(编译源码)

    PCL1.9.1并没有支持vs2015版本的exe版本,然后需要下载PCL的源码重新自己CMake编译出vs2015版本的

    点云PCL博主
  • Windows下编译64位CGAL

    CGAL的官网准备了压缩包和安装程序两种类型的的源代码,推荐使用安装程序包,因为其中自带了编译好的gmp和mpfr库。gmp和mpfr是CGAL的依赖库,如果自...

    charlee44
  • ARM交叉编译OpenCV错误总结

    ARM交叉编译OpenCV错误总结 最近尝试给两个ARM板子与用交叉编译配置OpenCV,为此查了很多资料,学了很多交叉编译的操作。 经过多次的交叉编译全都...

    剑影啸清寒
  • Android系统编译流程详解(一)

    脚本代码依次查找{device, vendor, product}目录下的vendorsetup.sh文件,并分别导入到当前环境中来!

    李小白是一只喵
  • C语言 | #define命令

    这道理放在C语言学习上也一并受用。在编程方面有着天赋异禀的人毕竟是少数,我们大多数人想要从C语言小白进阶到高手,需要经历的是日积月累的学习。

    小林C语言
  • C语言 | #define命令

    其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了;预编译又叫预处理,预编译不是编译,而是编译前的处理,这个操作是在正式编译之前由系...

    小林C语言
  • relocation R_x86_64_32S against `vtable for CMyClass`

    GCC编译遇到如下的错误,可能是因为在编译时没有指定-fPIC,记住:-fPIC即是编译参数,也是链接参数:

    一见

扫码关注云+社区

领取腾讯云代金券