在使用海思的项目中要使用到ZeroMQ这个消息队列框架,之前在PC端使用感觉不错。所以通过要通过交叉编译,将其移植到ARM平台。
移植方法,可以参考 https://blog.csdn.net/sishuihuahua/article/details/77203094
以下是我使用海思交叉编译工具的方法:
一、配置编译器
./configure --host=arm-himix100-linux --prefix=/opt/hisi-linux/zeromq-4.1.6/arm-zeromq --without-libsodium
arm-himix100-linux
--host=arm-himix100-linux ===> 表明使用的是 arm-himix100-linux 这个交叉编译工具
--prefix=/opt/hisi-linux/zeromq-4.1.6/arm-zeromq ===> 表明编译后安装的目录在 /opt/hisi-linux/zeromq-4.1.6/arm-zeromq 这个目录下面
二、编译及安装
make && make install
三、解决海思开发板硬件资源有限导致无法使用ZeroMQ
由于海思开发板子上面的SPI FLASH使用的是16MBytes,扣除到杂七杂八的存储,剩下给用户使用的容量空间只有几兆。因此,我们是无法直接将ZeroMQ编译出来的动态库 libzmq.so.5.0.2 直接放到 /usr/lib 里面来使用(Zeromq的应用会动态加载该动态库)。因此,我们可以想到的办法是,将 libzmq.so.5.0.2 放到外部存储空间(如SD卡上面),然后指定环境变量到SD的路径。这样的话,我们写的App在加载动态库的时候,就可以到 SD的路径上 加载到 libzmq.so.5.0.2
方法顺序如下
1、通过修改开机shell脚本( /etc/init.d 目录下),开机自动挂载SD卡到指定目录
mount /dev/mmcblk0p1 /root/mmc
2、修改 /etc/profile 文件中的环境变量参数,增加 libzmq.so.5.0.2 所在的SD卡路径
3、重启即可