在MACOS上实现交叉编译

在嵌入式开发过程中,设备的存储空间和运算能力通常会比较低,这时候,比如要编译一个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 [email protected] (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程序可以在树莓派上正常运行,下面要检验一下浮点程序是否也可以正常运行。

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

检验结果:

时间: 2024-08-05 13:38:51

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

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

猿教程_-webapi教程-WebAPI教程 猿教程_-webapi教程-Web API概述 猿教程_-webapi教程-新建Web Api项目 猿教程_-webapi教程-测试Web API 猿教程_-webapi教程-Web API Controller 猿教程_-webapi教程-配置Web API 猿教程_-webapi教程-Web API路由 猿教程_-webapi教程-参数绑定 猿教程_-webapi教程-Action方法返回类型 猿教程_-webapi教程-Web API Requ

在macOS上不安装JDK的情况下安装Netbeans

标题有些绕,解释起来要从Java在桌面环境上的悲催现状开始. 现在几乎所有的网站都不用Java Applet,用Java编写的桌面应用几乎都是IDE.用Java编写的IDE们为了安装方便,几乎都内嵌了JRE.既然全都自带了JRE,Applet又没用,那还独立安装JRE干什么?那个安装的JRE还自动运行,动不动就要更新. 但是macOS上的Netbeans是个例外,Windows上的Netbeans已经不需要先安装JRE了. macOS已经事实上移除了Java,PhpStorm.Andriod S

Ubuntu 上 hi3531 交叉编译环境 arm-hisiv100nptl-linux 搭建过程

; font-family:Arial,Console,Verdana,'Courier New'"> ubuntu12.04arm-linux-gcc 安装环境 Linux版本:Ubuntu 12.04    内核版本:Linux 3.5.0   交叉编译器版本:arm-linux-gcc-4.4.3 这个版本的交叉编译器我已经上传到了资源上,可以随便下载,点此下载 安装前的絮叨 首先简单介绍一下,所谓的搭建交叉编译环境,即安装.配置交叉编译工具链.在该环境下编译出嵌入式Linux系统所

【使用笔记】git在macos上的使用初步

我的基本需求:在macos上本地写的代码,期望备份到云端服务器上.本地代码有一定的目录结构 1. 注册github账号 到www.github.com上注册账号(用户名+email地址),并创建目录 2. 将本地机器与github账相关联 将本地机器与github账号关联之后,本地机器就可以同服务器同步代码了.github使用ssh协议. 具体来说: 到 https://github.com/settings/ssh 里面进行设置. 具体步骤遵循这里的指示:https://help.github

MongoDB在MacOS上的客户端Robo 3T 的简单使用(二)

最近写了一个用node来操作MongoDB完成增.删.改.查.排序.分页功能的示例,并且已经放在了服务器上地址:http://39.105.32.180:3333. 本篇文章只做简单介绍,能够使用起来就OK,不深究 项目一共四部分: 1.MacOS下MongoDB数据库的安装配置. 2.MongoDB在MacOS上的客户端Robo 3T 的使用.(本篇文章) 3.Centos 下MongoDB数据库的安装配置. 4.node-express项目的搭建并通过mongoose操作MongoDB数据库

如何在macOS上输入度数符号

尽管在Mac上输入度数符号的方式与在iOS上一样简单,但并不是每个人都可能意识到这一小而隐蔽的过程.如何在macOS上输入度数符号,在Mac上,有多种输入度数符号的方法.一种是通过特殊字符菜单,另一种是通过快捷键盘快捷键. 方法1:使用特殊字符菜单在Mac上插入度数符号 步骤1.首先,将光标放在要插入度数符号的位置,然后单击顶部的“编辑”菜单. 第2步.接下来,选择表情符号和符号. 即时贴:或者,使用Control + Command(?) + 空格键直接跳到“ 表情符号和符号”窗口. 步骤#3

Linux主机上使用交叉编译移植u-boot到树莓派

0环境 Linux主机OS:Ubuntu14.04 64位,运行在wmware workstation 10虚拟机 树莓派版本:raspberry pi 2 B型. 树莓派OS: Debian Jessie Raspbian Jessie 1树莓派的启动过程 树莓派1,2,3的启动过程大致相同,主要分为3个阶段:ROM上的GPU bootloader启动GPU,GPU启动CPU,CPU直接启动内核或通过u-boot启动内核. 由于树莓派涉及到GPU的东西不开源,移植u-boot到树莓派并不是真正

Ubuntu 上 hi3531 交叉编译环境 arm-hisiv100nptl-linux 建设过程

安装SDK 1.Hi3531 SDK包的位置 在"Hi3531_V100R001***/01.software/board"夹,你可以看到一个 Hi3531_SDK_Vx.x.x.x.tgz 文件, 文件就是Hi3531的软件开发包. 2.解压缩SDK包 在linuxserver上(或者一台装有linux的PC上.主流的linux发行版本号均能够),使用命令:tar -zxf Hi3531_SDK_Vx.x.x.x.tgz , 解压缩该文件,能够得到一个Hi3531_SDK_Vx.x.

macOS上,实现Wireshark手机抓包

1. 需要的硬件: Macbook Edimax EW-7822UAC无线网卡(如果买其他型号网卡,查看一下网卡的官网,确认有macOS的驱动) 需要的软件: Wireshark for macOS 2. 安装网卡驱动,重启动后,设置外置无线网卡EW-7822UAC连接到wifi网络. 3. 设置共享网络.注意,一定要把EW-7822UAC设置为"共享以下来源的连接",把内置网卡用于"用以下端口共享给电脑",如下图 点击上图的"Wi-Fi选项"按