Python使用C语言生成的库

来源:互联网 发布:金税盘开票软件最新版 编辑:程序博客网 时间:2024/04/26 00:11

下载需要的工具

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:

  1. #include <string.h>
  2. int is_palindrome(char* text)
  3. {
  4. if (NULL == text)
  5. return 0;
  6. int i;
  7. int len = strlen(text);
  8. char* low = text;
  9. char* high = text + len - 1;
  10. while (low <= high)
  11. {
  12. if (*low != *high)
  13. {
  14. return 0;
  15. }
  16. ++low;
  17. --high;
  18. }
  19. return 1;
  20. }

接口文件 palindrome.i

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

运行SWIG

  1. swig -python palindrome.i

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

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

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

编译、链接

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

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

测试

  1. >>> import _palindrome
  2. >>> _palindrome.is_palindrome("12321")
  3. 1
  4. >>> _palindrome.is_palindrome("123212")
  5. 0

成功

0 0