在嵌入式开发过程中,设备的存储空间和运算能力通常会比较低,这时候,比如要编译一个linux的内核,嵌入式设备就不能胜任了,所以,实现交叉编译还是很必要的。通过交叉编译,我们就能够在我们的pc上编译出能够在嵌入式设备上使用的可执行程序。

下面,我将一步步讲解如何在MAC OS上实现树莓派(arm)的交叉编译。

一。新建一个磁盘映像

MAC OS的文件系统默认是大小写不敏感的,而交叉编译工具链是基于大小写敏感的文件系统的,所以我们不能直接把工具链安装在原来的文件系统中,而是需要新建一个大小写敏感的磁盘印象用于安装工具链。

实现这一功能并不难,使用系统自带的磁盘工具(disk utility)就可以实现了。打开磁盘工具,然后 文件>新建>空白磁盘映像,然后在弹出窗口中设置名称为arm-x(便于后续操作),大小至少为500M,格式为Mac OS扩展(区分大小写,日志式)的映像(如下图)。

 

二。下载已经编译完的工具链

从下面的链接下载已经编译完的arm GNU Linux 工具链:

https://github.com/downloads/UnhandledException/ARMx/ARMx-2009q3-67.tar.bz2

如果你想自己一步步编译,了解工具链中的具体元素的话,可以看一下下面这篇文档:

https://github.com/UnhandledException/ARMx/wiki/Sourcery-G---Lite-for-ARM-GNU-Linux-(2009q3-67)-for-Mac-OS-X

三。解压工具链压缩包到磁盘映像

在终端进入压缩包所在的目录,执行下面的指令即可:

(新建的磁盘映像默认是挂载的,如果没有挂载的话请先手动挂载)

tar -zx -C /Volumes/arm-x/ --strip-components 1 -f ARMx-2009q3-67.tar.bz2

四。使用工具链

现在已经能够直接使用工具链了,比如我写了一个hello.c程序,现在可以直接使用工具链对程序进行编译。

在终端执行:

/Volumes/arm-x/bin/arm-none-linux-gnueabi-gcc hello.c -o hello

就可以获得一个名为hello的可执行程序。这个程序在mac下是不能运行的,需要在arm处理器的设备上才能运行。

当然,如果你嫌输入一大串路径去调用arm-none-linux-gnueabi-gcc程序麻烦的话,可以把/Volumes/arm-x/bin目录添加到PATH里去,这样就能够像使用系统命令一样使用了。(添加环境变量的方法很多,建议把路径添加到~/.profile文件中去,具体操作百度一下你就知道)

五。把hello程序上传到树莓派上

如果你自己知道怎么把文件上传到树莓派上,那么请直接上传吧。如果不会,我在这里提供两种方法:

1.使用sftp:这种方法无需另外设置,可以直接把文件上传到树莓派,但每一次更改都需要重新上传。

步骤:

sftp pi@192.168.1.5 (ip地址根据你的地址进行更改)

然后输入密码raspberry

put /本地文件路径    /上传到树莓派上的目录

(例如:put /Users/icool/Desktop/hello . )

2.使用NFS:这种方法需要先进行配置,但配置好后使用十分方便。可以将树莓派上的文件直接映射到mac上,这样在mac上修改即可,无需再上传。

具体步骤可以参考这篇文档:

http://server.zdnet.com.cn/server/2007/0831/482007.shtml

六。在树莓派上执行上传的程序

ssh连接上树莓派(或者任意方法,登陆上树莓派即可)。

然后进入hello程序所在目录,执行:

./hello

结果如下:

七。测试浮点程序

通过上一步可以发现交叉编译得到的hello,world程序可以在树莓派上正常运行,下面要检验一下浮点程序是否也可以正常运行。

先写一个简单的浮点程序:

检验结果:

在MACOS上实现交叉编译的更多相关文章

  1. TODO:macOS上ThinkPHP5和Semantic-UI集成

    TODO:macOS上ThinkPHP5和Semantic-UI集成 1. 全局安装 (on OSX via homebrew)Composer 是 homebrew-php 项目的一部分 2. 把X ...

  2. CoreCRM 开发实录——Travis-CI 实现 .NET Core 程度在 macOS 上的构建和测试 [无水干货]

    上一篇文章我提到:为了使用"国货",我把 Linux 上的构建和测试委托给了 DaoCloud,而 Travis-CI 不能放着不用啊.还好,这货支持 macOS 系统.所以就把 ...

  3. docker4dotnet #3 在macOS上使用Visual Studio Code和Docker开发asp.net core和mysql应用

    .net猿遇到了小鲸鱼,觉得越来越兴奋.本来.net猿只是在透过家里那田子窗看外面的世界,但是看着海峡对岸的苹果园越来越茂盛,实在不想再去做一只宅猿了.于是,.net猿决定搭上小鲸鱼的渡轮到苹果园去看 ...

  4. ASP.NET Core 中文文档 第二章 指南(1)用 Visual Studio Code 在 macOS 上创建首个 ASP.NET Core 应用程序

    原文:Your First ASP.NET Core Application on a Mac Using Visual Studio Code 作者:Daniel Roth.Steve Smith ...

  5. 在 MacOS 上编译链接 OpenGL 程序

    几个星期以前开始折腾在我的MBA上写 OpenGL 小程序.我不太熟悉MacOS上的开发工具比如XCode,所以一开始的想法就是用vim来写程序,然后手工编译链接.网上查了一下,MacOS上的Open ...

  6. 在MacOs上配置Hadoop和Spark环境

    在MacOs上配置hadoop和spark环境 Setting up Hadoop with Spark on MacOs Instructions 准备环境 如果没有brew,先google怎样安装 ...

  7. macOS上实现Qt应用程序做文件关联打开

    一.背景介绍 用Qt开发的应用程序要实现文件关联,双击时用默认关联的程序打开文件,在Windows上这个功能非常容易实现.Windows应用程序在安装的时候可以在注册表中写入相关的键值对.打开文件的时 ...

  8. 在MacOS上使用gdb(cgdb)调试Golang程序

    如果你在MacOS上使用GDB工具载入Golang程序时无法载入,这篇文章可以解决.本文不具体介绍调试的方法,网上的文章太多了就不赘述了. cgdb使用的是gdb的内核,方法和原理试用本文. 问题分析 ...

  9. 基于Python在MacOS上安装robotframework-ride

    基于Python在MacOS上安装robotframework-ride https://www.jb51.net/article/153665.htm https://www.jianshu.com ...

随机推荐

  1. [python爬虫] Selenium定向爬取虎扑篮球海量精美图片

    前言: 作为一名从小就看篮球的球迷,会经常逛虎扑篮球及湿乎乎等论坛,在论坛里面会存在很多精美图片,包括NBA球队.CBA明星.花边新闻.球鞋美女等等,如果一张张右键另存为的话真是手都点疼了.作为程序员 ...

  2. 插件~NuGet与packages管理项目的包包

    NuGet NuGet是一个工具,已经被集成到VS开发环境里,直接使用它可以快速安装第三方的包包,包包就是一组DLL和资源,开发者把它们打包一个包包,或者叫做package,而我们使用nuget可以将 ...

  3. JQ中 trigger()和triggerHandler()区别

    既然使用了trigger和triggerHandler,那么你应该了解了他们的差别了. trigger():在每一个匹配的元素上触发某类事件. triggerHandler():这个特别的方法将会触发 ...

  4. adb uninstall

    adb shell pm list packages adb uninstall com.pa.pfac

  5. 防止WordPress利用xmlrpc.php进行暴力破解以及DDoS

    早在2012 年 12 月 17 日一些采用 PHP 的知名博客程序 WordPress被曝光存在严重的漏洞,该漏洞覆盖WordPress 全部已发布的版本(包括WordPress 3.8.1).该漏 ...

  6. 使用Dezender对zend加密后的php文件进行解密

    在开发中需要修改一些php文件,部分是通过zend加密的,记事本打开之后是这样的: 此时需要使用Dezender进行解密,下载链接如下: Dezender.7z 下载后解压到C盘(路径不要带有中文), ...

  7. 【C++沉思录】代理类

    1.考虑下面的场景:设计一个容器,包含一组类型不同但相互关联的对象(比如:Animal,Dog,Cat),对象具备多态行为.2.容器一般只能包含一种类型的对象,使用vector<Animal&g ...

  8. 推荐--《Android深入浅出》

    基本信息 书名:Android深入浅出 作者:张旸 著 页数: 661 出版社: 机械工业出版社; 第1版 (2014年4月17日) 语种: 简体中文 ASIN: B00JR3P8X0 品牌: 北京华 ...

  9. Test Tex

    \begin{equation}\label{exampleone}r = r_F+ \beta (r_M - r_F) + \epsilon\end{equation}

  10. ab测试出现error: connection reset by peer的解决方案

    我们在使用一些开源程序之前,可能会使用ab工具在服务器或者本地进行一次性能评估,但是很多时候却总是会以失败告终,因为,服务器会拒绝你的ab工具发出的http请求, 出现 error: connecti ...