Tensorflow的SWIG编程

来源:互联网 发布:快易数据恢复大师 编辑:程序博客网 时间:2024/04/28 19:14

这个是swig的Doc文档:http://swig.org/Doc3.0/SWIGDocumentation.html

SWIG是个帮助使用C或者C++编写的软件能与其它各种高级编程语言进行嵌入联接的开发工具。SWIG能应用于各种不同类型的语言包括常用脚本编译语言例如Perl, PHP, Python, Tcl, Ruby and PHP。支持语言列表中 也包括非脚本编译语言,例如C#, Common Lisp (CLISP, Allegro CL, CFFI, UFFI), Java, Modula-3, OCAML以及R,甚至是编译器或者汇编的计划应用(Guile, MzScheme, Chicken)。SWIG普遍应用于创建高级语言解析或汇编程序环境,用户接口,作为一种用来测试C/C++或进行原型设计的工具。SWIG还能够导出 XML或Lisp s-expressions格式的解析树。SWIG可以被自由使用,发布,修改用于商业或非商业中。相当于一个C/C++与其他语言的连接作用吧。

直接上例子:

首先是一个C的文件:

/* File : example.c */double  My_variable  = 3.0;/* Compute factorial of n */int fact(int n) {  if (n <= 1)    return 1;  else    return n*fact(n-1);}/* Compute n mod m */int my_mod(int n, int m) {  return(n % m);}

然后是SWIG接口文件:

/* File : example.i */%module example%{/* Put headers and other declarations here */extern double My_variable;extern int    fact(int);extern int    my_mod(int n, int m);%}extern double My_variable;extern int    fact(int);extern int    my_mod(int n, int m);
第一个build Unix下的Tcl模块(Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为 "tickle”。 实际上包含了两个部分:一个语言和一个库。 首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一 些互交程序如文本编辑器、调试器和shell。它有一个简单的语法 和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。 但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用)。

我Ubuntu搜索了一下没有tcl.h头文件,因为下面程序用到这个头文件。那么我们就需要安装一下TCL了。

下载地址:http://www.tcl.tk/

下载:tcl8.6.6-src.tar.gz

进入:/home/mi/git/TF_pro/swig1/tcl8.6.6/unix

终端运行下面命令:

sudo su./configure --prefix=/usr/local/tcl/ --enable-sharedmakemake install
测试:

$swig -tcl example.i$gcc -c -fpic example.c example_wrap.c -I/usr/include/tcl8.6$gcc -shared example.o example_wrap.o -o example.so$tclsh% load ./example.so% fact 424% my_mod 23 72% expr $My_variable + 4.57.5%
第二个build Perl5模块(Perl借取了C、sed、awk、shell 脚本语言以及很多其他程序语言的特性,其中最重要的特性是它内部集成了正则表达式的功能,以及巨大的第三方代码库CPAN。简而言之,Perl像C一样强大,像awk、sed等脚本描述语言一样方便,被Perl语言爱好者称之为“一种拥有各种语言功能的梦幻脚本语言”、“Unix 中的王牌工具”)。

下载:http://perlchina.org/get.html

下载并解压perl-5.24.0.tar.gz

进入该目录下终端运行:

rm -f config.sh Policy.shsh Configure -demakemake testsudo make install//config.sh Policy.sh 为以前安装时的配置文件,新安装或升级安装时需要将其删除。//sh Configure -de 安装使用默认配置,一般而言将会 ok 。 
测试:
$swig -perl5 example.i$gcc -c example.c example_wrap.c \      -I/usr/local/lib/perl5/5.24.0/x86_64-linux/CORE$ld -G example.o example_wrap.o -o example.so # This is for Solaris$perl5.003use example;print example::fact(4), "\n";print example::my_mod(23,7), "\n";print $example::My_variable + 4.5, "\n";<ctrl-d>2427.5

如果报错,这个错误是因为使用gcc的时候的问题,只要添加一个-fpic参数即可运行。

$swig -perl5 example.i$gcc -fpic -c example.c example_wrap.c -I/usr/local/lib/perl5/5.24.0/x86_64-linux/CORE$ld -G example.o example_wrap.o -o example.so # This is for Solaris$perl5.003use example;print example::fact(4), "\n";print example::my_mod(23,7), "\n";print $example::My_variable + 4.5, "\n";<ctrl-d>2427.5
第三个就是build python模块

安装就免了,系统自带。

$swig -python example.i$gcc -c -fpic example.c example_wrap.c -I/usr/include/python2.7$gcc -shared example.o example_wrap.o -o _example.so$python    >>> import example>>> example.fact(4)24>>> example.my_mod(23,7)2>>> example.cvar.My_variable + 4.57.5

简单使用收工。。。。。。。。。。。。。。。。。。。。。。。。

0 0
原创粉丝点击