我正在尝试安装python-pin。此工具使用 32 位的 Pin(英特尔检测工具)。当我尝试运行 python-pin 时,我得到:
E: Unable to load /home/censored/Documents/tools/Python_Pin/obj-intel64/Python_Pin.so: dlopen failed: library "libpython2.7.so.1.0" not found
我确实有 libpython2.7.so.1.0,位于:
/usr/lib/x86_64-linux-gnu/libpython2.7.so.1.0
但是它是 64 位的,而需要它的库是 32 位的。经过大量研究,我发现了以下与我的问题类似的问题:
如何在 64 位 Ubuntu 上安装 32 位 Python
这个适用于 Ubuntu 10.10,但对我来说这个解决方案似乎不起作用。
这些是更普遍的:
如何在 64 位版本的 Ubuntu 上运行 32 位程序?
阅读完这些内容后,我安装了 32 位版本的 python-dev:
$ sudo apt-get install python-dev:i386
安装成功,但是我找不到 32 位版本的 libpython2.7.so.1.0,而且仍然无法启动 python-pin。
编辑:
我已经通过以下方式手动编译了32位python:
$ CC="gcc -m32" LDFLAGS="-L/lib32 -L/usr/lib32 \
-Lpwd/lib32 -Wl,-rpath,/lib32 -Wl,-rpath,/usr/lib32" ./configure --prefix=/opt/pym32 --enable-shared
$ make
$ sudo make install
现在我的 Python 文件夹中终于有一个 32 位 libpython2.7.so.1.0 文件了。不过,当我这样做时:
$ LD_PRELOAD=/home/censored/Documents/tools/Python-2.7.13/libpython2.7.so.1.0 bin/python-pin Python_Pin/examples/ins_count.py /bin/ls
我收到这些错误:
ERROR: ld.so: object '/home/censored/Documents/tools/Python-2.7.13/libpython2.7.so.1.0' from LD_PRELOAD cannot be preloaded (wrong ELF class: ELFCLASS32): ignored.