树莓派非吃灰指南1:arm编译环境
今天 zedboard 群里有个小伙伴遇到了一个交叉编译的问题:他用的是 Red Pitaya,一个基于 zynq 7010 的开源测量和测控工具,他想单独编译上面的一个工具组件,遇到错误无法解决,所以就求助大家。我尝试在 ubuntu 上使用 linaro 的 gcc 交叉编译,配置好编译器路径和 CROSS_COMPILE
之后再根目录执行 make apps-free
没问题,但是直接在 apps-free
目录编译就提示找不到 jpeglib.h 和 jconfig.h 找不到,通过安装 libjpeg-dev 解决了前者,但是后者没有解决。考虑到家里的 树莓派2 上也运行了 ubuntu ,然后尝试着编译这个工程,然后就通过了,没有一点错误,完美。再想想之前测试 p1020 时,就是直接在开发板上编译、运行测试程序。而考虑到现在 ARM Corte-A 系列的处理器性能飙升,而 AMD 、高通等厂商甚至都发布了 ARM 服务器,以后交叉编译或许就成为历史了,就像编译器的自举一样,“道生一,一生二,二生三,三生万物”,直接在开发板上编译就行了,起码现在的树莓派已经可以开发 zynq 的程序了。
回过头再来看树莓派,家里有两个,一个是2代,一个是3代。前者连接了一个移动硬盘,运行了 owncloud 作为自己的网盘使用,同时跑一个 gogs,代替 github 保存自己的私有 repo。后者则挂载了一个16G U盘,上面存储一些常用的代码 —— kernel 和 github paga,当做一台永不下线的 Linux 系统。到目前为止,除了停电和人为关机,两个系统都没出过大的问题。这两个功率不足10w 的arm 开发板完美的代替了我的 i7 Linux 笔记本,现在平时回家基本上都用 miix 5 这个二合一平板,需要使用 Linux 就直接连到树莓派上,不用了断开ssh 就行了,方便省电。
谈完 arm ,再来看看虚拟机上装的 arch。在虚拟机上使用 arch 快一个月了,之前也在树莓派上用过一阵 arch,说说我的感受,它的优点在我看来有几点: 1. 轻便,干净:上电启动后任务数很少,比起 ubuntu 的几十个任务,它只有十几个,很轻量,清爽; 2. 迭代更新:不同于ubuntu 采用的版本号,arch 一直在更新,但是没有版本号,只有日期,因此它就不会遇到ubuntu 跨版本升级时容易崩溃的问题;
缺点不多,但是很致命:对使用 Linux 进行开发的人来说不友好,资源太少。之前在树莓派上放弃使用 arch 就是因为它缺少一些 seafile 要用的库文件(arm版),而我又不愿意去找源代码从头编译,于是我就放弃了在树莓派上使用 arch。而今天我尝试着在 arch 上交叉编译 Red Pitaya 的工具,结果不能找到正确版本的库(一直找的时 x86 版的库文件),开始我怀疑时编译器的问题,晚上在 ubuntu 上用相同的编译器编译相同的代码就不会遇到相同的问题,所以,作为一个使用 PC Linux 的嵌入式开发者,我放弃 Arch ,继续使用 Ubuntu。虽然 Ubuntu 大众化,在某些人眼中比较 low,逼格不够高,但是使用 Ubuntu 可以避免很多问题,获得的资源也很多,支持它的厂家也很多,用它我可以产出更多的内容。