centos swig 编译c,python调用
2015-08-03 17:39
726 查看
本文的原文连接是: /article/1665648.html 未经博主允许不得转载。
最新的版本已经开始支持golang了。
可以使用 yum install swig (这个安装的是2.0.10版本)
下载源代码直接安装最新。
http://www.swig.org/download.html
http://www.swig.org/translations/chinese/tutorial.html
首先创建example.i 接口文件:
编写接口的实现文件example.c:
编译python模块:
测试python模块:
swig 非常方便的实现了python的模块扩展,可以将现有的c,c++库封装成模块提供给python调用。
1,关于swig
SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。最新的版本已经开始支持golang了。
2,官方例子
首先安装swig,官网网站最新的是3.0.6版本。可以使用 yum install swig (这个安装的是2.0.10版本)
下载源代码直接安装最新。
http://www.swig.org/download.html
[code]tar -zxvf swig-3.0.6.tar.gz cd swig-3.0.6 ./configure make make install #python 需要安装开发包 yum install python-devel
http://www.swig.org/translations/chinese/tutorial.html
首先创建example.i 接口文件:
[code] /* example.i */ %module example %{ /* Put header files here or function declarations like below */ extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time(); %} extern double My_variable; extern int fact(int n); extern int my_mod(int x, int y); extern char *get_time();
编写接口的实现文件example.c:
[code]/* File : example.c */ #include <time.h> double My_variable = 3.0; int fact(int n) { if (n <= 1) return 1; else return n*fact(n-1); } int my_mod(int x, int y) { return (x%y); } char *get_time() { time_t ltime; time(<ime); return ctime(<ime); }
编译python模块:
[code]#编译python模块,会生成一个 swig -python example.i 编译c文件,和wrap文件,使用python库编译 gcc -c -fPIC example.c example_wrap.c -I/usr/include/python2.7 #生成共享库 ld -shared example.o example_wrap.o -o _example.so
测试python模块:
[code]>>> import example >>> example.fact(5) 120 >>> example.my_mod(10,30) 10 >>> example.get_time() 'Mon Aug 3 05:25:35 2015\n' >>> example.get_time() 'Mon Aug 3 05:25:37 2015\n' >>> example.get_time() 'Mon Aug 3 05:25:38 2015\n'
3,总结
本文的原文连接是: /article/1665648.html 未经博主允许不得转载。swig 非常方便的实现了python的模块扩展,可以将现有的c,c++库封装成模块提供给python调用。
相关文章推荐
- linux一些操作
- 1.9-selinux介绍
- Linux进程控制相关概念
- 如何在内核里面查找某些结构体或者宏的定义
- LInux内核同步与互斥
- Linux进程调度机制(1)
- linux上使用LD_DEBUG环境变量查看程序使用哪些库
- 查看linux版本的命令
- 修改CentOS系统默认编码为中文utf8(也可修改成其他的)
- linux安装安卓开发工具android studio
- 创建mini Linux
- Linux 文件相关编程
- 在linux下利用nohup来后台运行java程序
- Linux 命令行学习笔记
- 为什么中断handler中不能休眠
- Linux端口处理
- linux下Qt安装问题
- Linux内核中RAID5源码详解之写过程剖析(二)
- LINUX下解压缩方法
- linux 下的source命令的作用是什么?