下载需要的工具

1、下载pcre库 wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.37.tar.gz 
2、下载SWIG:wget http://sourceforge.net/projects/swig/files/latest/download?source=typ_redirect

安装pcre 
安装swig

可能会提示找不到pcre库,pcre默认安装再/usr/local/bin里,需要在系统环境变量中指定该路径: 
vim ~/.bash_profile 
export PATH=$PATH:/usr/local/bin 
保存退出并运行该文件:. ~/.bash_profile



编写C函数及接口文件

写一个简单的检测回文数的C程序 palindrome.c:

#include <string.h>
int is_palindrome(char* text)
{
    if (NULL == text)
        return 0;
    int i;
    int len = strlen(text);
    char* low = text;
    char* high = text + len - 1;
    while (low <= high)
    {
        if (*low != *high)
        {
            return 0;
        }
        ++low;
        --high;
    }
    return 1;
}

接口文件 palindrome.i


%module palindrome
%{
#include <string.h>
%}
extern int is_palindrome(char* text);

运行SWIG



swig -python palindrome.i

找不到pcre.so.1 
解决办法



export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

此时生成两个文件:palindrome_wrap.c palindrome.py



编译、链接


gcc -fPIC -o palindrome.o -c palindrome.c
gcc -fPIC -o palindrome_wrap.o -I/usr/include/python2.6 -c palindrome_wrap.c
gcc -shared -o _palindrome.so palindrome.o palindrome_wrap.o

这时会生成一个文件 _palindrome.so,这就是Python可用的库文件



测试


>>> import _palindrome
>>> _palindrome.is_palindrome("12321")
1
>>> _palindrome.is_palindrome("123212")
0

成功