如何使用qemu编译和构建aarch64的python包?

问题描述 投票:0回答:1

我正在尝试为 aarch64 架构的包(

lap
)构建 python 轮子。我的主机环境是 WSL2,带有 Ubuntu 20.04 和
docker
。目标是 Buildroot
GNU/Linux
。因此目标上没有可用的编译器。我的目标是使用
aarch64
qemu
设置交叉构建环境。如通过仿真在 x86 上运行 AArch64 本机容器中所述,我们可以使用可在 AArch64 上运行的容器化环境,通过 QEMU 模拟器构建符合当前规范的轮子。我正在做的步骤:

    在 WSL2 中安装 qemu 包
  1. sudo apt-get install qemu binfmt-support qemu-user-static
    
    
  2. 注册脚本:
  3. docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    
    
  4. 测试仿真环境
  5. docker run --rm -t arm64v8/ubuntu uname -m
    并返回
    aarch64
    所以,我相信安装成功,仿真正在运行。另外,
    qemu-aarch64-static
    可以在
    /usr/bin/
    中使用
    
  6. 现在我克隆项目
  7. lap(在WSL2
    中)和
    cd lap/
    ,它包含
    setup.py
    ,但是当我执行以下命令来构建轮子时
    
    docker run --rm -v `pwd`:/io quay.io/pypa/manylinux2014_aarch64 bash -c '/opt/python/cp38-cp38/bin/python ./setup.py bdist_wheel'
    
    
我收到以下错误

``` WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64/v4) and no specific platform was requested /opt/python/cp38-cp38/bin/python: can't open file './setup.py': [Errno 2] No such file or directory ```
现在我不知道如何将

qemu-aarch64-static

传递给上面的
docker
命令?

任何人都可以告诉我如何解决这个问题并使用 QEMU 构建 python 轮子吗?

提前致谢。

P.S:如果缺少任何信息,请告诉我。

docker embedded-linux qemu pypi buildroot
1个回答
0
投票
一切似乎都工作正常,但最后一步您没有访问实际文件。

因为我不太了解docker。首先,我启动 aarch64 shell。

docker run -it quay.io/pypa/manylinux2014_aarch64 bash

[root@637db2c1af5e /]# uname -m

aarch64

然后从容器内部,我就像平常一样构建程序。

git clone https://github.com/gatagat/lap
然后安装一些依赖项。

python3.8 -m pip install numpy cython
然后我就可以造轮子了。

python3.8 setup.py bdist_wheel
然后我有一个“dist”文件夹。

-rw-r--r--。 1 root root 1.7M 8月22日11:59 lap-0.5.dev0-cp38-cp38-linux_aarch64.whl

© www.soinside.com 2019 - 2024. All rights reserved.