Compilation 使用新的glib版本编译gstreamer

Compilation 使用新的glib版本编译gstreamer,compilation,gstreamer,centos6,glib,Compilation,Gstreamer,Centos6,Glib,我已经安装了CentOS 6.7。我需要编译gstreamer1.4.5(或任何1.x),因为CentOS发行版有gstreamer0.10。GStreamer 1.x需要GLib2>=2.32左右,但CentOS需要2.28.8。因此,我使用特定位置/usr/mylibs(as--prefix-param)编译了Glib2.44.1 现在我正在尝试编译GStreamer 1.4.5: export GLIB_CFLAGS="-I/usr/mylibs/include/glib-2.0 -I/u

我已经安装了CentOS 6.7。我需要编译gstreamer1.4.5(或任何1.x),因为CentOS发行版有gstreamer0.10。GStreamer 1.x需要GLib2>=2.32左右,但CentOS需要2.28.8。因此,我使用特定位置/usr/mylibs(as--prefix-param)编译了Glib2.44.1

现在我正在尝试编译GStreamer 1.4.5:

export GLIB_CFLAGS="-I/usr/mylibs/include/glib-2.0 -I/usr/mylibs/lib/glib-2.0/include" && export GLIB_LIBS="-L/usr/mylibs -L/usr/mylibs/lib/glib-2.0" && export GIO_CFLAGS="-I/usr/mylibs/include -I/usr/mylibs/include/gio-unix-2.0" && export GIO_LIBS="-L/usr/mylibs -L/usr/mylibs/lib/gio" && export PYTHON=/usr/mylibs/bin/python
./configure --prefix=/usr/mylib
or
./configure 
make
它会一直工作,直到出现以下错误:

Making all in helpers
make[4]: Entering directory `/root/gstreamer/gstreamer-1.4.5/libs/gst/helpers'
  CC       gst_plugin_scanner-gst-plugin-scanner.o
  CCLD     gst-plugin-scanner
gst_plugin_scanner-gst-plugin-scanner.o: In function `main':
/root/gstreamer/gstreamer-1.4.5/libs/gst/helpers/gst-plugin-scanner.c:45: undefined reference to `g_malloc'
/root/gstreamer/gstreamer-1.4.5/libs/gst/helpers/gst-plugin-scanner.c:55: undefined reference to `g_free'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_param_spec_object'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_utf8_validate'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_date_get_month'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_value_get_float'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_checksum_update'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_memdup'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_type_interface_peek'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_value_set_int64'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_thread_pool_new'
...
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_param_spec_ref'
collect2: ld returned 1 exit status
make[4]: *** [gst-plugin-scanner] Error 1
make[4]: Leaving directory `/root/gstreamer/gstreamer-1.4.5/libs/gst/helpers'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/root/gstreamer/gstreamer-1.4.5/libs/gst'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/gstreamer/gstreamer-1.4.5/libs'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/gstreamer/gstreamer-1.4.5'
make: *** [all] Error 2

我错过了什么?请帮助。

您似乎误解了
*\u LIBS
环境变量的工作原理。它应该包含链接到glib所需的标志;类似于“-L/usr/mylibs/lib-lglib-2.0”的东西应该可以工作


-L…标志为链接器提供了一个额外的位置来查找共享库(即,
libglib-2.0.so
),但在您的标志中,您为链接器提供了一个位于其所需目录之上的目录(/usr/mylibs)和一个子目录(/usr/mylibs/lib/glib-2.0)。-l…标志告诉它要查找哪个特定库,但您完全忽略了它。

我在CentOS 6.3虚拟机上遇到了相同的问题。我试图针对glib 2.32.4构建GStreamer 1.4.5。如中所示,当您尝试构建(而不是2.0版本!)时,似乎链接了不正确的库,而不是在GLIB\u CFLAGS中显式定义目录路径,您可以使用PKG\u CONFIG\u PATH

找到pkgconfig目录并确保您安装的软件包驻留在其中(如glib-2.0、gobject-2.0、gthread-2.0等)(在我的计算机上,我的路径是:
/usr/local/lib/pkconfig/
),我注意到在您的目录列表中,您提供了确实有pkgconfig的软件包

首先,导出变量,然后配置,最后生成:

export-PKG\u-CONFIG\u-PATH=/usr/mylibs/lib/pkgconfig/
/配置
制造

GStreamer现在应该正确构建

Making all in helpers
make[4]: Entering directory `/root/gstreamer/gstreamer-1.4.5/libs/gst/helpers'
  CC       gst_plugin_scanner-gst-plugin-scanner.o
  CCLD     gst-plugin-scanner
gst_plugin_scanner-gst-plugin-scanner.o: In function `main':
/root/gstreamer/gstreamer-1.4.5/libs/gst/helpers/gst-plugin-scanner.c:45: undefined reference to `g_malloc'
/root/gstreamer/gstreamer-1.4.5/libs/gst/helpers/gst-plugin-scanner.c:55: undefined reference to `g_free'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_param_spec_object'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_utf8_validate'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_date_get_month'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_value_get_float'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_checksum_update'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_memdup'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_type_interface_peek'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_value_set_int64'
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_thread_pool_new'
...
../../../gst/.libs/libgstreamer-1.0.so: undefined reference to `g_param_spec_ref'
collect2: ld returned 1 exit status
make[4]: *** [gst-plugin-scanner] Error 1
make[4]: Leaving directory `/root/gstreamer/gstreamer-1.4.5/libs/gst/helpers'
make[3]: *** [all-recursive] Error 1
make[3]: Leaving directory `/root/gstreamer/gstreamer-1.4.5/libs/gst'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/root/gstreamer/gstreamer-1.4.5/libs'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/root/gstreamer/gstreamer-1.4.5'
make: *** [all] Error 2