在Mac OS上实现交叉编译

Mac OS对Linux支持很好,这是我喜欢mac的地方之一。文章转自http://blog.163.com/hy_ice719/blog/static/876628182013229280819/,对我很有帮助,为防止原文章丢失,特搬运过来并对原作者表示感谢!原博客是关于树莓派的,不过都通用的。

一、新建一个磁盘映像

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

实现这一功能并不难,使用系统自带的磁盘工具就可以实现了。打开磁盘工具,然后 文件>新建>空白磁盘映像,然后在弹出窗口中设置名称为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文件中去,具体操作百度一下你就知道)

(补充,这个工具链里同样包含了gdb等多个调试工具可以使用,可自行到/Volumes/arm-x/bin目录查看。)

五、把hello程序上传到beaglebone上

(我在之前日志里提到的scp命令是一种方法,原作者又提供了两种方法)

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

步骤:

打开一个新的终端,输入# sftp root@192.168.7.2(ip地址根据你的地址进行更改)

然后输入beaglebone的密码(如果你设置过的话。默认无密码)

# put /本地文件路径 /上传到beaglebone上的目录

(补充,用get命令也可以从beaglebone中传文件到电脑上。还有一些其他的有用的命令,连接好sftp以后请输入help命令查看。)

2、使用NFS:这种方法需要先进行配置,但配置好后使用十分方便。可以将beaglebone上的文件直接映射到mac上,这样在mac上修改即可,无需再上传。具体步骤参考这篇文章

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s