Posts Tagged ‘ avant

两个小问题(lcrypto, Py_InitModule4),记录一下~

一、cannot find -lcrypto
编译 fitx 时遇到的。一番 Google 之后,原来是指 libcrypto.so,而这个库属于 libssl-dev 包。
依赖里没有提这个包,装上后就没事了。

PS:因为 scim-python 是直接 make install 的,没有打包。fitx 依赖于 scim-python,我没有改依赖关系,而是用 dpkg -i –force- 安装。然后dpkg给出提示说:

dpkg:fitx:尽管有依赖关系的问题,但不管怎样,还是按照您的要求,继续配置:

不知怎的,我觉得这段话很好玩。有一种幽默感、亲切感、尊重感,还有……~~~

二、undefined symbol: Py_InitModule4
运行 awn-manager 时遇到的。这是配置错误,/usr/bin/awn-manager:

SITE_PKG = ‘/usr/lib/python2.4/site-packages’

将其中的2.4改成2.5就OK了。

原因是,python2.5 中,将 64bit 系统下的 Py_InitModule4 改名为 Py_InitModule4_64 了。改名目的是为了阻止2.4的模块调用2.5的解析器。因为2.5针对64bit机做了不兼容于2.4的修改,以支持 4GB+ 内存。

#if SIZEOF_SIZE_T != SIZEOF_INT
/* On a 64-bit system, rename the Py_InitModule4 so that 2.4 modules cannot get loaded into a 2.5 interpreter */
#define Py_InitModule4 Py_InitModule4_64
#endif

http://svn.python.org/projects/python/trunk/Include/modsupport.h

In Python 2.4, indices of sequences are restricted to the C type int. On 64-bit machines, sequences therefore cannot use the full address space, and are restricted to 2**31 elements. This PEP proposes to change this, introducing a platform-specific index type Py_ssize_t.

As the proposed change will cause incompatibilities on 64-bit machines, it should be carried out while such machines are not in wide use (IOW, as early as possible).

http://www.python.org/dev/peps/pep-0353/