我在我的ubuntu 16 x86_64上有简单的python cython项目(来自http://docs.cython.org/src/tutorial/cython_tutorial.html的hello world示例) . 我可以使用cython for x86_64构建这个项目 .
如何在不使用真正的armv7板/ cpu的情况下为armv7版本的ubuntu 15构建项目?
我有 arm-linux-gnueabihf-gcc
(http://packages.ubuntu.com/xenial/devel/gcc-arm-linux-gnueabihf),它可以为armv7编译简单的C程序 . 如何更改cython的设置以使用交叉编译器为arm构建共享对象?
1 回答
交叉编译需要架构相关的库和头文件 .
测试时是否可以在
dpkg --add-architecture armhf
和apt-get update
之后安装python3.5-dev软件包和其他软件包(在对sources.list进行一些修改之后),结果基本上是 .apt-get install python3.5:armhf
是不起作用的东西,seeQEMU和chroot提供了一种不需要"full"虚拟机的可能解决方案 . 可以通过
debootstrap
命令创建适合chroot的目录 . 创建后,schroot
可以授予对该环境的访问权限 .在以下命令中替换
<DIRECTORY>
和<USER>
:应该可以访问环境
对于root用户会话(用户必须在根组中列出的组中),
在此之后,还可以交叉编译cython模块:
hello.pyx:
编译(chroot中的
python3.5-config --cflags
和python3.5-config --libs
选项,注意-fPIC
):然后可以测试该模块
交叉编译基于cython的python模块也可以工作 . 使用setup.py
以这种方式 Build 一个简单的
hello world
模块是可能的 . 模块的文件名错误,在这种情况下它是hello.cpython-35m-x86_64-linux-gnu.so
. 将其重命名为hello.so
后,可以导入它 .