原创,转载注明出处。
一、 目的
因为项目需要,需要将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放到开发板中编译,显得有点累赘,希望各位看到小弟的帖子,有更好的方法,欢迎讨论。