现在的位置: 首页 > 综合 > 正文

gstreamer成功安装后 出现 “未定义的引用”的错误的解决方案

2018年02月23日 ⁄ 综合 ⁄ 共 691字 ⁄ 字号 评论关闭

首先我是按照 点击打开链接 中的方法一安装的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)

作为新手 需要记录下来

抱歉!评论已关闭.