【问题标题】:How do I compile and run 32-bit Python on 64-bit CentOS 6?如何在 64 位 CentOS 6 上编译和运行 32 位 Python?
【发布时间】:2014-02-12 09:53:49
【问题描述】:

我需要在 64 位 CentOS 中运行 32 位 Python。

背景

我有一个 PCI-GPIB 接口卡。它的驱动程序来自National Instruments。它在驱动程序页面中显示:

NI-488.2 2.9 版支持 64 位内核。该驱动程序目前只能用于 32 位应用程序。

使用 Python 驱动程序

我使用PyVISA wrapper 来使用驱动,像这样:

import visa

但是,我收到以下错误:

OSError: /usr/local/vxipnp/linux/bin/libvisa.so.7: wrong ELF class: ELFCLASS32

问题

National Instruments 表示他们的驱动程序支持 64 位内核。
但它只能在in 32 位应用程序中使用。 糟糕。我的 Python 安装(我自己编译)是 64 位的。

如何在 64 位 CentOS 6 中编译 32 位 Python?

【问题讨论】:

标签: python linux compilation 32bit-64bit


【解决方案1】:

这是我在 CentOS 6.10 上构建 32 位 Python 2.7.15 的方法:

安装所需的包:

sudo yum install libgcc.i686 glibc-devel.i686 glibc.i686 zlib-devel.i686\
readline-devel.i686 gdbm-devel.i686 openssl-devel.i686 ncurses-devel.i686\ 
tcl-devel.i686 db4-devel.i686 bzip2-devel.i686

构建 32 位 Python:

mkdir ${HOME}/{Archive,Build}
wget http://www.python.org/ftp/python/2.7.15/Python-2.7.15.tgz -O ${HOME}/Archive/Python-2.7.15.tgz
tar xzvf ~/Archive/Python-2.7.15.tgz -C ${HOME}/Build
cd ${HOME}/Build/Python-2.7.15
[sudo] mkdir -p /opt/Python-2.7.15
CFLAGS=-m32 LDFLAGS=-m32 ./configure --prefix=/E/.sbx/Python-2.7.15 --enable-shared 
LD_RUN_PATH=/opt/Python-2.7.15/lib make
make install

【讨论】:

  • 这有点接近。虽然我认为有很多错误。您在 ~/tmp 中获得了 tarball,但随后尝试在 ~/Archive 中访问它。然后你创建一个 /opt/Python-2.7.7 目录,但下一行 --prefix 说使用 /E/.sbx/Python-2.7.7。然后 LD_RUN_PATH 行说使用 /opt/Python-2.7.7/lib 但该文件夹中没有任何内容。
  • @RDT2 感谢您的指出,修正了~/tmp 的错字。在您运行 make install 之前,LD_RUN_PATH 将为空。
【解决方案2】:

如果可以从例如~/tmp/Python-3.7.1 运行 python,则以下对我有用:

mkdir ~/tmp
cd ~/tmp
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
tar xzf Python-3.7.1.tgz
cd Python-3.7.1
CFLAGS=-m32 LDFLAGS=-m32 ./configure
make

当然,您需要先安装 i686 的库和编译器:

sudo yum install libgcc.i686 glibc-devel.i686 glibc.i686 zlib-devel.i686 readline-devel.i686 gdbm-devel.i686 openssl-devel.i686 ncurses-devel.i686 tcl-devel.i686 db4-devel.i686 bzip2-devel.i686 libffi-devel.i686

(与其他答案相比,添加了 libffi-devel)

【讨论】:

    猜你喜欢
    • 2016-11-08
    • 2013-10-20
    • 1970-01-01
    • 2023-03-03
    • 2017-01-21
    • 2014-07-02
    • 2018-02-26
    • 1970-01-01
    • 2012-08-30
    相关资源
    最近更新 更多