如何提供包含SWIG的路径?

时间:2015-10-24 11:42:26

标签: python openssl swig setup.py m2crypto

我正在尝试构建M2Crypto库,但是swig找不到头文件:

M2Crypto@(master=)$ python setup.py build
running build
running build_py
running build_ext
building 'M2Crypto.__m2crypto' extension
swigging SWIG/_m2crypto.i to SWIG/_m2crypto_wrap.c
swig -python -I/usr/include/python2.7 -I/usr/include -includeall -modern -builtin -outdir build/lib.linux-i686-2.7/M2Crypto -o SWIG/_m2crypto_wrap.c SWIG/_m2crypto.i
SWIG/_evp.i:12: Error: Unable to find 'openssl/opensslconf.h'
SWIG/_ec.i:7: Error: Unable to find 'openssl/opensslconf.h'
error: command 'swig' failed with exit status 1

我在openssl/opensslconf.h中有OpenSSL标头,包括/usr/include/i386-linux-gnu - 这是openssl-dev软件包安装到的地方。这条路径没有传递给swig; setup.py似乎对此一无所知。

这看起来像包裹的错误(或问题),即M2Crypto?什么是正确的解决方案?

1 个答案:

答案 0 :(得分:2)

原因是libssl-dev将opensslconf.h移动到依赖于体系结构的子树/ usr / include / x86_64-linux-gnu中。根据您的体系结构,目录可能不同。

有两种可能的解决方法(两种方法都可以):

选项1:将文件软链接到更改前的位置:

sudo ln -s /usr/include/x86_64-linux-gnu/openssl/opensslconf.h /usr/include/openssl/opensslconf.h

this article

中也对此进行了描述

选项2:在M2Crypto的setup.py中,将特定于体系结构的目录添加到swig命令使用的包含路径中:

-I/usr/include/x86_64-linux-gnu

this article

中也对此进行了描述

在M2Crypto项目中,还有issue 69对此开放。

安迪