2011-12-01 84 views
2

因此,我正在开始一个将使用gstreamer库的项目。我正在从GStreamer的文档的测试项目,并正在以下error.This程序工作正常上的archlinux但示数出在Ubuntu链接到gstreamer库的问题ubuntu 11.10

gcc `pkg-config --cflags --libs gstreamer-0.10` main.c -o player 
/tmp/cciFhGCe.o: In function `main': 
main.c:(.text+0x1e): undefined reference to `gst_init' 
main.c:(.text+0x36): undefined reference to `gst_version' 
collect2: ld returned 1 exit status 
make: *** [player] Error 1 

我的代码是我从GStreamer的文档,得到了下面的

#include <stdio.h> 
#include <gst/gst.h> 

int 
main (int argc, 
     char *argv[]) 
{ 
    const gchar *nano_str; 
    guint major, minor, micro, nano; 

    gst_init (&argc, &argv); 

    gst_version (&major, &minor, &micro, &nano); 

    if (nano == 1) 
    nano_str = "(CVS)"; 
    else if (nano == 2) 
    nano_str = "(Prerelease)"; 
    else 
    nano_str = ""; 

    printf ("This program is linked against GStreamer %d.%d.%d %s\n", 
      major, minor, micro, nano_str); 

    return 0; 
} 

,我使用编译的指令是

gcc `pkg-config --cflags --libs gstreamer-0.10` main.c -o player 

和pkg配置的输出

-pthread -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/gstreamer-0.10 -I/usr/include/libxml2 -pthread -lgstreamer-0.10 -lgobject-2.0 -lgmodule-2.0 -lxml2 -lgthread-2.0 -lrt -lglib-2.0 
+0

嗯,奇怪我在我的ubuntu机器上得到了同样的结果,但在我的gentoo上工作正常,或者在我的ubuntu上使用gcc-4.4。 – Swind

+0

我在ubuntu上使用gcc-4.6.1,在arch安装上使用4.6.2 – Mindbane

回答

5

所以感谢freenode上的伟大的球员#gstreamer

在unbuntu GCC的版本一些更改了pkg配置语句的顺序做。

gcc `pkg-config gstreamer-0.10 --cflags` main.c -o player.out `pkg-config gstreamer-0.10 --libs` 

使用这种格式修复它。