编译gstreamer插件新发现和libtool的新认识

由于在嵌入式系统中运行gstreamer,受到资源的限制,所以打算只安装gstreamer核心库和一些必须的element,其它的element用到的时候再添加。我的想法是,把base,good,。。。插件包中的需要用到的elment编译成插件。

    拿good插件包中的id3demux做试验(先在pc上试验,可惜pc上已经装了base插件包),把good插件包中的gst/id3demux目录下的5个文件copy到gst-template/gst-plugin/src目录下,用上一篇文章《编译自己的gstreamer插件》中提到的方法编译,郁闷,没通过,有空再研究一下(linux基本知识还很欠缺啊。。。)。

    后来我想,既然gstreamer的插件是动态链接库,那么只是把这些源文件编译成动态链接库是否可以呢?试一下:

    gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) -DPACKAGE='"GStreamer"' -Wimplicit -fpic -shared -g -o gstid3demux.so gstid3demux.c id3tags.c id3v2frames.c

     把编译出来的gstid3demux.so拷贝到gstreamer库目录下,写个应用程序调用一下,OK,没问题。再用gst-template的工具生成一个myfilter,用同样的方法:

     gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) -DPACKAGE='"GStreamer"' -DVERSION='"0.10.23"' -Wimplicit -fpic -shared -g -o gstmyfilter.so gstmyfilter.c

      把编译出来的gstmyfilter.so拷贝到gstreamer库目录下,调用成功。

 

      原来,只需要把你element编译成动态连接库就可以了。

原来对于有多个源文件的element,libtool需要对每个文件分别编译,以id3demux为例:

#libtool --mode=compile gcc `pkg-config --cflags gstreamer-0.10` -DPACKAGE='"GStreamer"' -DHAVE_USER_MTU -Wall -Wimplicit -g -c gstid3demux.c

 

#libtool --mode=compile gcc `pkg-config --cflags gstreamer-0.10` -DPACKAGE='"GStreamer"' -DHAVE_USER_MTU -Wall -Wimplicit -g -c id3tag.c

 

#libtool --mode=compile gcc `pkg-config --cflags gstreamer-0.10` -DPACKAGE='"GStreamer"' -DHAVE_USER_MTU -Wall -Wimplicit -g -c id3v2frame.c

 

然后再link:

 

#libtool --mode=link gcc -module -avoid-version -rpath /usr/local/lib/gstreamer-0.10/ -export-symbols-regex gst_plugin_desc -o gstid3demux.la gstid3demux.lo id3tag.lo id3v2frame.lo `pkg-config --libs gstreamer-0.10`

 

之后,再安装,搞定。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值