Category Archives: Mac OS X

Mac OS X tricks and software recommendations

在Mac上配置Eclipse交叉编译环境

根据Derek Molloy老师的视频教程,再加上一些mac特别需要进行的设置,终于配置好了Eclipse交叉编译环境,而且还可以通过ftp实时访问和操作BBB上的文件,以后编程序就方便多了,不必专门打开新的Terminal窗口了。下面简要记录一下配置过程。

首先需要在mac上安装交叉编译工具,请见我的这篇日志。这篇日志中是把交叉编译工具安装到一个.dmg文件中的,所以每次启动Eclipse之前一定要先把这个文件挂载。

然后安装Eclipse,到官网上下载最新版本的Eclipse Standard即可(在网页最上面)。mac版Eclipse无需安装,把解压后的文件夹直接拖到“应用程序”目录即可。

然后我们需要安装一下C/C++相关的内容。打开Eclipse软件,点击Help -> Install new software,点击右侧向下箭头,选择一个类似于“Kepler – http//download.eclipse.org/releases/kepler”的选项。下面的框内就会出现一个列表。在Programming Languages选项中勾选“C/C++ Development Tools”和“C/C++ Library API Documentation Hover Help (Incubation)”两项,然后一路下一步进行下载安装。最后会要求重启Eclipse软件,重启之后就会在欢迎界面上发现多出了一个 C/C++ Development 选项。

之后到这里下载一个RSE-runtime,有了它就能在Eclipse中进行ssh,ftp等操作了。下载下来以后是一个压缩包,包中有两个文件夹features和plugins,把这两个文件夹中的内容分别拷贝到Eclipse程序位置的features和plugins文件夹中,然后重启Eclipse生效。

最后配置一下Eclipse的软件窗口,在Window -> Show View -> Others中打开Remote Systems -> Remote Systems面板,这个面板里可以显示本地文件系统,也可以添加远程文件系统。此时面板中应该只有本地文件系统。接下来我们就在其中用SSH连接并添加Beaglebone的文件系统。

在面板中点右键,选择New Connection,选择Linux,点下一步。在Host name中填入Beaglebone的IP地址,比如我的是192.168.7.2,然后修改一下Connection name,点下一步。在左上角勾选ssh.files,点下一步。勾选Processes.shell.linux,点下一步。勾选ssh.shells,点下一步。点finish。此时在Remote System面板中就会显示出Beaglebone的连接,点开就能看到下面有Sftp files,Shell processes,ssh shells,ssh Terminals这4项内容。点开Sftp files,会看到下面有两个目录,My Home和Root。当我们第一次点击它们时,会提示输入用户名密码进行远程登录。输入之后就能顺利在Eclipse中访问BBB的文件了。在这里几乎可以进行任何文件操作,比如直接修改字符型文件,查看文件属性,修改文件权限,比较两个文件,在电脑和BBB之间互传文件等。你可以利用右键和在Window -> Show view菜单中进行一下探索。(有了它,估计Linux的好多命令没几天就要忘了。。。)

下面配置一下交叉编译的各种目录。首先要新建一个Project,然后才能点击菜单中的 Project -> Properties对该project进行设置。新建一个别的project的话还得重新设置(应该有办法能存成默认设置的)。需要设置的东西包括:
1、在C/C++ Build -> Settings的Tool Settings选项卡中修改4个根文件的Command为我们之前安装的交叉编译工具的位置。如把默认的 g++ 改成 /Volumes/arm-x/bin/arm-none-linux-gnueabi-g++ 等。
2、在C/C++ General -> Paths and Symbols的Includes选项卡中添加头文件目录,GNU C的目录是/Volumes/arm-x/arm-none-linux-gnueabi/include,
GNU C++的目录是/Volumes/arm-x/arm-none-linux-gnueabi/include/c++/4.4.1。如果project中还有自己的头文件,也要把相应的目录加进去。
3、在同样面板的Library Paths选项卡中添加库目录/Volumes/arm-x/lib

这下目录也配置完了。写好程序之后,默认必须手动保存之后才能进行编译,我们可以在Eclipse -> Preferences的General -> Workspace中勾选 Save automatically before build 项。

这样就完成了。

但是现在debug不能用,老师的视频中给出了一个解决方法,不过是在Ubuntu中解决的,mac中的解决方法暂时还没找到。

在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上修改即可,无需再上传。具体步骤参考这篇文章

我最常用的Mac OS X快捷键

用Mac不用快捷键就等于浪费了一大半效率!所以小总结一下。先说明,我是10.7系统,也许新版本的有些不兼容。

  • finder中上一页和下一页的快捷键:cmd + [ 和 cmd + ] ,等价于点击finder左上角的两个小箭头。
  • finder中类似windows的“向上”功能的快捷键:cmd + ↑
  • 我们知道三指可以拖动窗口,但是按住 cmd 再用三指可以拖动非激活的窗口哦~~
  • finder中按住cmd点击侧边栏的项目,可以在新窗口打开该项目。有时我们要移动文件的话会比较方便。
  • 类似windows中 Home 和 End 键的功能(光标跳到行首和行尾)可以用 cmd + ← 和 cmd + →实现。
  • fn + delete可以删除光标后面的字符。
  • 我们知道 cmd + tab 可以切换应用程序,类似的, cmd + ~ 可以在同一个应用程序的多个窗口之间切换哦~
  • 我们知道右键单击一个文件可以选择其他打开方式,但只对本次打开生效。如果想一劳永逸怎么办呢?右键单击之后按住 option 键看看,“打开方式”是不是变成了“总是以此方式打开”?
  • (接上)如果想一次设定所有同类文件的打开方式怎么办呢?按 cmd + i (或在右键菜单中选择“显示简介”)修改打开方式以后点击下面的“全部更改”按钮。
  • (接上)很多菜单中按住option就会出现一些其他选项,大家不妨多试试。比如单击菜单栏的音量图标只会显示一个音量条,试试按住option再单击之~有惊喜。
  • cmd + w 关闭窗口,cmd + q 关闭程序,最常使用的两个快捷键。在safari中按住 option + cmd + w 可以关闭所有其他标签哦。
  • cmd + shift + 3全屏截图,cmd + shift + 4区域截图,截图保存在桌面上,也挺常用。
  • safari全屏的时候,如果我们要选择网页中的大段文字,会发现鼠标到了页面底端时页面不会自动向下滚动。此时按按方向键 ↑ ↓ 试试看?
  • safari中快速定位到页面顶端或低端:cmd + ↑ 和 cmd + ↓
  • (接上)finder中列表模式下想定位到第一个或最后一个文件时,就不能用上述快捷键啦,而是用 option + ↑ 和 option + ↓
  • 按住 cmd 点击finder窗口的标题可以显示该文件夹的具体地址。
  • (接上)按住 cmd 点击dock上的图标也可以直接打开该应用程序或文件夹所在的位置
  • 全屏模式下dock是隐藏的,想要显示出来就把鼠标移到屏幕下边缘,松开手,再向下移动,就显示出来啦。
  • safari中如果不小心关闭了一个标签,可以用 cmd + z 重新打开之。
  • 截图时按 cmd + shift + 4 以后如果再按一下空格,鼠标变成一个小相机,此时可以直接截取某个窗口,超级方便!
  • 最后介绍一个用Alfred2软件实现的快捷键:在任何时候都可以用 cmd + e 打开finder(保留了windows的习惯):方法是新建一个workflow,在里面添加两个项目,一个triggers,选择Hotkey选项,然后设置hotkey为 cmd + e。再添加一个Actions,选择Launch Apps/Files,然后定位到/System/Library/CoreServices/Finder.app。最后把这两个项目连接起来就完成啦!如图: