编译机器:Ubuntu 17.10 amd64
在之前的这篇博文里,已经记载了如何在开发板上下载,编译与使用mraa库。但是在部分开发板上编译mraa时(比如之前从垃圾箱里翻出的BeagleBoneBlack),受限于CPU性能,我们需要经过挺长一段时间的编译才能够进行安装使用。这里也是为了折腾才想着使用电脑对mraa进行交叉编译,然后再到开发板上进行安装(事实证明,电脑进行交叉编译还是快很多)。
1.环境准备
这里我们准备使用cmake-qt-gui进行编译配置,而手头开发板的编译器使用的是arm-linux-gnueabihf,所以我们需要先进行一下编译环境上的准备。
sudo apt install cmake-qt-gui //图形界面cmake
sudo apt install gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf //编译器
然后,为了编译mraa,我们按照官网的要求安装依赖(这里先不考虑是否需要精简)
sudo apt-get install git build-essential swig3.0 python-dev nodejs-dev cmake libjson-c-dev
2.mraa包下载与交叉编译
wget https://github.com/intel-iot-devkit/mraa/archive/v1.9.0.tar.gz //这里使用的是1.9.0版本
tar -zxvf v1.9.0.tar.gz
cd mraa-1.9.0/
mkdir build //创建一个文件夹,用以存放构建文件
cd build
接着,使用cmake进行编译配置,这里有几点需要注意的地方。
选择好mraa源代码路径以及生成路径(build)后,点击configure,选择“Specify options for cross-compiling”(为交叉编译进行配置?)
Next,进行编译器以及关联设置,参照图片填写好就可以,注意将编译器更换为你目标板上的编译器即可
完成后,点击configure,到这里就有几个需要进行更改的地方:
- 去掉SWIG相关编译选项
- 去掉JSONPLAT编译相关选项
- (可选)去掉EXAMPLES(例程)编译相关选项
- (可选)去掉TESTS(测试)编译相关选项
- (为了之后不必添加路径)将CMAKE_INSTALL_PREFIX路径修改为 /usr
整个修改完成后应该看上去是这个样子
这里不将SWIG与json取消的话,会一直调用amd64的编译器进行编译,然后无止境的报错。
而我们在使用mraa库的时候一般用不到这两个,所以去除掉也无大碍。
(期待爱折腾的人分享其他的解决办法!)
再次configure,无报错后进行generate。完成后我们便可以开始make了
make
(之前在BBB上编译要等十来分钟,电脑上十来秒就完工。。。)
之后,将其ftp或者用sd卡在目标板上进行make install即可。
——————————————分割线 待后续纠错——————————————