zoukankan      html  css  js  c++  java
  • 树莓派交叉编译环境在Linux下的建立

    前两天开始倒腾树莓派,使用ssh连接后,按照《鸟哥私房菜》中学习了一些指令之后想在linux上建立交叉编译环境继而能够为以后为树莓派编写高效的较大的程序做准备。自己因为不熟悉Eclipse配置和粗心,所以折腾了好久,所以把流程记录下来,方便后来之人。

    首先,交叉编译是什么呢?简单以在PC机上编译树莓派上的程序来说,就是利用我们PC,编译出树莓派上能够运行的程序。一般PC是x86的CPU,而树莓派Arm的。由于PC机的内存和CPU主频相比于树莓派还是快得多的,所以编译也会快很多,节省编译时间。

    那么下面开始介绍如何在Linux下建立咯!

    工具准备:

      • 树莓派的官方开发工具在github上可以下载到:https://github.com/raspberrypi/tools。也可以使用git clone 加上述地址就可以通过shell下载到当前工作目录啦。如果没有git就装一个哦。下载之后解压会在tools文件夹下看到arm-bcm2708文件 夹,进入后能看到如下文件夹:


        最下面的两个我们会用到的,如果是64位的电脑就选择第四个以x64结尾的文件夹,如果是32位的就选择第5个咯。进入后会发现bin文件夹,里面都是可执行文件,就是我们要用的交叉编译工具啦。将这个目录设置为环境变量,就可以在命令行里面使用指令调用编译工具啦。
         

      Eclipse 集成开发环境。从Eclipse官网下载Eclipse IDE for C/C++ Developers,现在最新版貌似是mars版。根据自己电脑CPU的位数,在官网上选择合适32位或者64位的就好。因为Eclipse依赖于 Java,所以如果Linux中自带Java(JDK或者JRE都可以)的话Eclipse直接解压后点击解压后的文件夹中的Eclipse应该就可以使 用。不过如果是64位的JAVA的话,对应的Eclipse也需要是64位的,否则Eclipse无法启动哦。如果Linux中没有Java的话,可以到 Oracle的官网下载,并选择合适的版本(32位或者64位,JRE和JDK均可,空间余量大的话就JDK吧),安装或解压后设置好,使环境变量生效后 就可以启动Eclipse了。小耗子使用的是OpenSuse Leap42.1,自带OpenJDK,不用下载可以直接使用Eclipse啦,顺便安利一下大蜥蜴。

    • 设置Eclipse的工程属性。

      新建工程时选择Empty Project 并选择Cross Toolchain:

      

      在后面的提示中输入交叉编译工具链的前缀与路径,前缀就是arm-linux-gnueabihf-,记得别打错哦,

    图片中的是我打错了的啊!

    图片中的是我打错了的啊!

     

    图片中的是我打错了的啊!

      当时打错了结果总是报错说在Path中找不到编译器,弄得小耗子头疼了半天(→_→)。

    建好工程后,右击工程,选择properties,在左侧栏中选中C/C++ General →Path and Symbols,设置Include文件夹,注意为确保不漏,Assembly、GNU C以及GNU C++这三个都要设置这些路径哦:

    设置库路径:

    选中左侧栏中的C/C++ Build→Settings,进行交叉编译器设置:
    首先可以看到之前在建立工程时的前缀和编译工具链路径会在这里显示。前缀千万不要打错啊

    查看编译器工具的设置:


    可以看到,在Command下方的All Options中出现了工具链的目录。在编译时,Eclipse就会调用 前缀 + 相应的工具 (如gcc) 去编译啦。下方的Compiler、Linker、Assembler的Command分别为g++、g++、as。

     

    配置好以上内容后就可以添加个.cpp的原文件写个Hello Raspi来测试下啦。Eclipse是自带Sftp工具可以访问同一个网络下树莓派的文件的哦,可以将编译好的文件复制到树莓派中执行哦。详见参考链接3。

    注意一点,我在写Hello World程序测试的时候出现了cout无法被解析索引的编译错误,后来在Indexer的设置里面将文件大小限制调大就解决了,这个问题可能是因为默认包含的文件限制太小导致有些文件没被包含有关。如果大家遇到可是试着解决。

    在配置环境的过程中,参考了很多博客的配置内容,感谢各个博主无私的奉献。

     

    参考链接:

        • http://www.cnblogs.com/emouse/archive/2013/06/07/3124063.html

        • http://my.oschina.net/robeer/blog/208040(这篇是说BBB的交叉编译环境,同理)

        • http://blog.csdn.net/luyejie8888/article/details/38611293(如何使用Eclipse传送文件并输入命令,在windows下没有太多差别啦

    最后安利一下我的微信公众号:

  • 相关阅读:
    JAVA学习总结-基础语法
    git stash save -a 遇到的坑 , 弹出匿藏错误
    TP5模型belongsTo和hasOne这两个方法的区别
    phpstorm设置的快捷键突然失效了,提示: IdeaVim ...
    layui 时间选择器 不要秒的选项
    SQL 判断表是否存在 数据表不存在是致命错误
    layui 第三方组件 eleTree 树组件 树形选择器
    tp5 ThinkPHP5 自定义异常处理类
    TP5隐藏url中的index.php
    phpstorm断点调试 php.ini 文件中 Xdebug 配置
  • 原文地址:https://www.cnblogs.com/NJdonghao/p/Cross_Toolchain.html
Copyright © 2011-2022 走看看