如何在64位CentOS 6上编译和运行32位Python?

5

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

背景

我有一张PCI-GPIB接口卡,其驱动程序来自National Instruments。在驱动程序页面上写道:

NI-488.2版本2.9支持64位内核。该驱动程序目前仅可从32位应用程序中使用。

使用Python调用驱动程序

我使用PyVISA包装器来使用驱动程序,如下所示:

import visa

然而,我收到以下错误:
OSError: /usr/local/vxipnp/linux/bin/libvisa.so.7: wrong ELF class: ELFCLASS32

问题

国家仪器公司表示他们的驱动程序支持64位内核。 好的
但它只能在32位应用程序内部使用。 不好的。我自己编译的Python安装包是64位的。

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


1
一个完整的指南回答你的问题:http://aresou.net/post/6/compile-install-32-bit-python-on-64-bit-centos - user1998844
2个回答

2

以下是我在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
@RDT2 感谢指出,已经修复了 ~/tmp 的拼写错误。LD_RUN_PATH 在运行 make install 前是空的。 - sashk

-1
如果可以从例如~/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)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接