如何编译Build一个GStreamer的Plugin

GStreamer的Plugin Writer's Guide通篇都没有给出一个完整的plugin的源代码列表,也没有描述如何build和install一个plugin,针对这一点,研究了一下gstreamer plugin template,发现是一个基于autoconf, automake的project,一般情况下,直接运行autogen.sh就会自动生成configure,然后configure,接着只需要make, make install即可。make install会把生成的.so安装到/usr/local/lib/gstreamer-0.10目录下。尝试build,却发现make错误,原因是有一个warning,而且编译选项中有-Werror,这样warning也会作为error处理,无法继续。研究后发现configure.ac中AS_COMPILER_FLAG函数(自定义的一个函数,定义原型在m4目录下)定义了-Werror,所以在AAS_COMPILER_FLAG设置代码前加入一行: 

GST_PLUGIN_CVS="no" 

就OK了。到此,总结一下如何build和install一个plugin: 

1. 到src目录下,../tools/make_element <plugin name>。make_element脚本就会基于gstplugin.c为模板,为我们生成plugin的skelton代码。 
2. 删掉gstplugin.*, gsttransform.*这些不是我们写的代码。 
3. 编辑src目录下Makefile.am,将原来的gstplugin这些改成我们写的plugin的名字,也就是定义源文件。注意不光是修改赋值的东西,赋值的变量原来也是形如libgstplugin...,这些变量名也要全部修改,否则make的时候会说找不到target的。所以,我的建议是,直接打开Makefile.am,然后在文件中全局将gstplugin替换成我们的plugin的名字。 
4. 回到plugin根目录,执行./autogen.sh,如果不想autogen自动调用configure,可以:./autoge.sh --noconfigure(具体看./autogen.sh --help) 
5. make; make install即可。 

当然,configure.ac, Makefile.am这些文件都是可以自定义的,完全可以在里面再写入更多的指令,因为这就是一个autoconf/automake的project,这就要参考autoconf和automake的手册了。 

注:忘了一点,gstreamer提供的make_element脚本还有一个错误,第30行左右的grep语句: 

REAL_NAME=`grep `id -u` /etc/passwd | awk -F":" '{ print $5 }' | awk -F"," '{ print $1 }'` 

要改成: 

REAL_NAME=$(grep `id -u` /etc/passwd | awk -F":" '{ print $5 }' | awk -F"," '{ print $1 }') 

否则执行会出错。
posted @ 2011-01-03 11:30  super119  阅读(1638)  评论(0编辑  收藏  举报