【问题标题】:Cross-Compile Python with zlib support使用 zlib 支持交叉编译 Python
【发布时间】:2020-12-15 01:16:21
【问题描述】:

我正在尝试使用 zlib 支持交叉编译 python。

我做了什么,什么在起作用:

  • 已下载 Python 源代码 (Python-3.6.5)
  • 从 Python 文件夹编译 zlib:
#!/bin/sh

# Path to angstrom cross-compiler
CROSS_COMPILE=/home/angstrom/arm/bin

CC=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-gcc CXX=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-g++ AR=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-ar LD=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-ld \
        RANLIB=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-ranlib \
    ./configure \
    --prefix=$HOME/python \
    --enable-shared
  • 将已编译的 zlib 库文件复制到 angstrom 编译器位置,以确保找到它。
  • 配置 Python:
#!/bin/sh

# Path to angstrom bin folder
CROSS_COMPILE=/home/angstrom/arm/bin

CC=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-gcc CXX=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-g++ AR=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-ar LD=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-ld \
        RANLIB=$CROSS_COMPILE/arm-angstrom-linux-gnueabi-ranlib \
    ./configure --host=arm-angstrom-linux --target=arm-angstrom-linux-gnueabi \
    --build=x86_64-linux-gnu --prefix=$HOME/python \
    READELF==arm-angstrom-linux-gnueabi-readelf \
    --disable-ipv6 ac_cv_file__dev_ptmx=no ac_cv_file__dev_ptc=no \
    ac_cv_have_long_long_format=yes --enable-shared
  • 在 Modules/Setup 中激活 zlib,如讨论的 here。
  • 制作和制作安装
#!/bin/sh

# Path to angstrom bin folder
CROSS_COMPILE=/home/toolchain/angstrom/arm/bin

make HOSTPYTHON=$HOME/python \
BLDSHARED="$CROSS_COMPILE/arm-angstrom-linux-gnueabi-gcc -shared" CROSS-COMPILE=arm-angstrom-linux-gnueabihf- \
CROSS_COMPILE_TARGET=yes HOSTARCH=arm-angstrom-linux BUILDARCH=arm-angstrom-linux-gnueabihf

make altinstall HOSTPYTHON=$HOME/python \
BLDSHARED="$CROSS_COMPILE/arm-angstrom-linux-gnueabi-gcc -shared" CROSS-COMPILE=arm-angstrom-linux-gnueabihf- \
CROSS_COMPILE_TARGET=yes HOSTARCH=arm-angstrom-linux BUILDARCH=arm-angstrom-linux-gnueabihf \
prefix=$HOME/python

make 进程的输出表明 zlib 未编译:

Python build finished successfully!
The necessary bits to build these optional modules were not found:
_bz2                  _curses               _curses_panel
_dbm                  _gdbm                 _lzma
_sqlite3              _ssl                  _tkinter
readline              zlib
To find the necessary bits, look in setup.py in detect_modules() for the module's name.

将编译后的模块复制到 arm 设备,显示 Python 工作但不支持 zlib。

【问题讨论】:

  • 我从 python bugs.python.org/issue28444 发现了以下错误报告。我将设置一个新的虚拟机,看看它是否有效。
  • 成功了吗?我现在也在苦苦挣扎……

标签: python arm cross-compiling zlib


【解决方案1】:

Python 将检测 setup.py 中的 zlib 和其他依赖项。在检测之前,它将在CPPFLAGS 和LDFLAGS 中搜索有效的包含目录和库目录。因此,在配置 Python 时尝试如下设置CPPFLAGS 和LDFLAGS:

CC=blah CXX=blah AR=blah LD=blah RANLIB=blah \
CPPFLAGS="-I$HOME/python/include" LDFLAGS="-L$HOME/python/lib" \
    ./configure blahblah

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    相关资源
    最近更新 更多