MINIX上的Python C扩展

MINIX上的Python C扩展,python,minix,Python,Minix,我试图构建(我知道这是可行的),首先是通过distutils以通常的方式: # python2.7 setup.py build running build running build_py running build_ext building 'uptime._posix' extension gcc -fno-strict-aliasing -Wno-error -march=i586 -DHAVE_DB_185_H -I/usr/pkg/include -I/usr/include -DN

我试图构建(我知道这是可行的),首先是通过
distutils
以通常的方式:

# python2.7 setup.py build
running build
running build_py
running build_ext
building 'uptime._posix' extension
gcc -fno-strict-aliasing -Wno-error -march=i586 -DHAVE_DB_185_H -I/usr/pkg/include -I/usr/include -DNDEBUG -Wno-error -march=i586 -DHAVE_DB_185_H -I/usr/pkg/include -I/usr/include -I/usr/pkg/include/python2.7 -c src/_posix.c -o build/temp.minix-3-i686-2.7/src/_posix.o
ld -L/usr/tmp/work/lang/python27/work/Python-2.7.2 -lcompat_minix -minlib -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -L/usr/lib -Wl,-R/usr/lib build/temp.minix-3-   i686-2.7/src/_posix.o -o build/lib.minix-3-i686-2.7/uptime/_posix.so
ld: unrecognized option '-Wl,-R/usr/pkg/lib'
ld: use the --help option for usage information
build failed: uptime._posix (no big deal)
好,好,
distutils
是在不太流行的平台上经常中断的模块之一。因此,我尝试手动编译扩展部分:

# gcc -fno-strict-aliasing -march=i586 -DNDEBUG -I/usr/pkg/include/python2.7 -fPIC -shared -o _posix.so src/_posix.c
这是可行的,也就是说,它生成了
\u posix。因此
毫无怨言,但是,尝试用Python导入生成的模块没有:

>>> import _posix
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ImportError: Service unavailable
导入 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 导入错误:服务不可用 谷歌认为这与操作系统加载共享库(Python扩展)的能力有关。我去看了看,结果发现MINIX在以前根本不支持共享库,但现在它应该支持了。事实上,
/usr/pkg/include/python2.7/pyconfig.h
定义了
的HAVE\u DLOPEN
的HAVE\u DYNAMIC\u LOADING
,显然是这样的


发生了什么事?

MINIX现在确实支持共享库,但是
pkgin
提供的二进制Python包是静态链接的,这使得它们无法加载共享库。解决这个问题的唯一方法是自己编译Python,最好是通过。默认情况下,所有
pkgsrc
包都是动态构建的

(您还必须手动构建扩展。)