首先我是按照 点击打开链接 中的方法一安装的gstreamer;
但是当我在测试自己写的一个小代码的时候,出现了 对‘gst_init’未定义的引用 ;对‘gst_version’未定义的引用
....等错误,很明显是未链接到gstreamer库;
我是用以下命令进行的编译:
gcc -Wall $(pkg-config --cflags --libs gstreamer-0.10) -g mygst_test.c -o hello
网络查询了gcc参数顺序相关的问题,发现问题在于此:
对于C/C++编译而言,读取编译选项是按照从左到右的顺序执行的 。那么当编译器遇到源文件的时候,就开始对源文件中用到的函数进行解析,找到相对应的函数的函数体或者说是定义(Definition of Function)。这个过程是按照先遇到不能解析的函数(unresolved function),然后在源文件选项后面的一些选项中寻找可能的函数体的信息,是这样的一个顺序进行的。那么我们可以发现对于Makefile A,由于包含函数体或者函数定义信息的编译选项出现在源文件之前,那么当编译器在源文件中遇到不能解析的函数时,在源文件之后的选项中寻找相关的信息,那 么就出现了编译错误,也就是无法找到相关的函数定义。所以 gcc编译时依赖库的顺序是很重要的。比如说,liba.a依赖于libb.a,则必须写成-la -lb,这点不能搞错
鉴于这个解释,我使用以下命令顺利编译通过了
gcc -Wall mygst_test.c -o testgstream $(pkg-config --cflags --libs gstreamer-0.10)
作为新手 需要记录下来