zoukankan      html  css  js  c++  java
  • 如何编译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 }') 

    否则执行会出错。
  • 相关阅读:
    ajax chrome load
    不一样的自拍
    jQuery点击空白关闭弹出层
    笔记整理
    带三角缺口的边框
    连续input在同一行对齐问题
    用Windows PowerShell 控制管理 Microsoft Office 365
    Qt and C++ Reflection,利用Qt简化C++的反射实现
    滴滴打车推出的“专车服务”后的见闻以及思考
    Exchange的AutoDiscover服务
  • 原文地址:https://www.cnblogs.com/super119/p/1924449.html
Copyright © 2011-2022 走看看