【移植】交叉编译zeroMQ与pyzmq

ARM 148浏览

原创,转载注明出处。

一、 目的

因为项目需要,需要将pyzmq第三方包移植到arm板,这样会涉及zeromq与pyzmq两个库的交叉编译。

当然,有快捷的方法:

1. 直接使用arm板连接外网,直接安装zeromq与pyzmq,可以参考官网Guide或参考:http://blog.csdn.net/chdhust/article/details/31003005

2. 我们这里使用的方法是,zeromq在虚拟机编译,pyzmq在开发板上编译。

最终我们是为了得到arm平台的libzmq.so动态库,以及python zmq包,在python使用zmq,是需要依赖libzmq.so动态的,这个需要注意的。

二、准备工作

    1. zeroMQ源码下载,官网:http://zeromq.org/intro:get-the-software

    2. pyzmq源码下载,官网说明:http://zeromq.org/bindings:python

        github:http://zeromq.org/bindings:python   中有relesase历史版本,根据自己需要自行下载,偶尔会比较慢,可能是外国服务器的原因。

 

三、虚拟机上交叉编译

    1. 将源码zeromq-4.1.6.tar.gz放入虚拟机,依次执行以下命令:

        tar zxvf   zeromq-4.1.6.tar.gz  .   解压在当前目录。

        cd zeromq-4.1.6

        ./configure --host=arm-linux-gnueabihf --prefix=/opt/arm-zeromq/ --without-libsodium 蓝色为交叉编译库,根据自己系统交叉编译的平台选择,红色是生成lib与include等文件的文件夹,请自己事先创建。

        make  && make  install    注意不要随意切换超级用户,可以会造成找不到编译器之类的错误,主要看自己的linux配置。

        生成的文件都在/opt/arm-zeromq/下:

 

四、在arm板上编译pyzmq

    下载pyzmq-16.0.2.tar.gz到arm板中,并且将上一步生成的arm-zeromq文件夹全部下载下来,都放在根目录下:

    cd  /

    tar  zxvf  pyzmq-16.0.2.tar.gz  .   解压到当前目录,也就是根目录下。

      cd  pyzmq-16.0.2

     python2.7 setup.py configure --zmq=/zeromq-arm  红色部分即即为编译的时候需要找到的动态库文件等

     python2.7 setup.py build_ext --inplace

     python2.7 setup.py install

     安装好后都没有报错,进入到以下目录:

     cd  zmq/backend/cython

     使用file命令查看动态库的信息,如果为arm版本,就说明该包已经生成。注意这里这个包只能python2.7使用,根据自己的需要切换绿色python版本。

     如果看到的文件还是如下图的,说明编译失败:

    cd -    回到pyzmq-16.0.2文件夹,

    将在这个文件夹下的zmq文件夹拷贝,这个就是生成第三方python zmq包,注意zmq会依赖libzmq.so文件,根据需要放入指定地方。

 

五、希望

    在最后一步的时候又将pyzmq放到开发板中编译,显得有点累赘,希望各位看到小弟的帖子,有更好的方法,欢迎讨论。

   邮箱:weizhenhua94@163.com