【问题标题】:Issues linking against gstreamer libraries ubuntu 11.10链接到 gstreamer 库 ubuntu 11.10 的问题
【发布时间】:2013-07-23 23:18:14
【问题描述】:

所以我开始了一个使用 gstreamer 库的项目。我正在运行 gstreamer 文档中的测试项目并收到以下错误。该程序在 archlinux 上正常运行,但在 ubuntu 上出错

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-config 的输出

-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

【问题讨论】:

  • 嗯,奇怪的是,我在我的 ubuntu 机器上得到了同样的结果,但在我的 gentoo 上运行良好,或者在我的 ubuntu 上使用 gcc-4.4。
  • 我在 ubuntu 上使用 gcc-4.6.1,在 Arch 安装上使用 4.6.2

标签: c ubuntu linker gstreamer


【解决方案1】:

感谢 freenode #gstreamer 上的大佬们

在 unbuntu 的 gcc 版本中,对 pkg-config 语句的顺序进行了一些更改。

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

使用这种格式修复了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-03-23
    • 2012-01-19
    • 2011-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多