【发布时间】:2014-01-08 20:29:16
【问题描述】:
我正在尝试在 FreeBSD/PC-BSD 下使用一些 Linux 库,但我对 FreeBSD 上的 Linux 二进制兼容性如何工作有一些疑问。
我已安装此任务所需的内核模块,以及包含 Linux 库的附加 linux_base 包。
库本身是 libspotify,可以在这里下载(FreeBSD 没有可用的 libspotify 构建,所以必须使用 Linux 的): https://developer.spotify.com/technologies/libspotify/#download
运行这段被剪断的 Python 代码失败:
import ctypes
lib_path = './libspotify.so'
lib = ctypes.cdll.LoadLibrary(lib_path)
上面写着:
OSError: Shared object "libpthread.so.0" not found, required by "libspotify.so"
手册说 linux 二进制文件必须使用 brandelf 标记,我这样做了:
http://www.freebsd.org/doc/handbook/linuxemu-lbc-install.html#idp74327472
但是还不行。
所以问题是: Linux 二进制兼容性仅适用于 Linux 可执行文件,还是也适用于在 FreeBSD 可执行文件中加载 Linux 库?
编辑:我知道这可能需要更改链接器配置,如this similar question 的回答中所述,但由于该库将在 Python 脚本中加载,因此它不会'似乎不是一个合适的方法。
提前致谢。
【问题讨论】:
-
据我所知,是第一个。 Linux 仿真层只能由 Linux 可执行文件调用。当然也有例外,比如nspluginwrapper。
标签: python linux freebsd emulation libspotify