我正在尝试使用Linux机器上的openwebrtc,通过webrtc协议获取一个简单的本机客户端来传输音频和视频。
我在这里遵循了构建说明。 https://github.com/EricssonResearch/openwebrtc/wiki/Building-OpenWebRTC
没有linux示例代码所以我一直在尝试一点一点地复制OSX代码,直到我有一些工作。 https://github.com/EricssonResearch/openwebrtc-examples/blob/master/osx/Camera%20Test/Camera%20Test/AppDelegate.m
#include <stdio.h>
#include <owr/owr.h>
#include <owr/owr_media_source.h>
#include <owr/owr_types.h>
#include <owr/owr_video_renderer.h>
#define SELF_VIEW_TAG "self-view"
static void got_sources(GList *sources, gpointer user_data) {
g_assert(sources);
// haven't actually gotten to showing video yet
// the above line does not compile =(
}
int main(void) {
printf("starting owr\n");
owr_init(NULL);
owr_run_in_background();
owr_get_capture_sources(OWR_MEDIA_TYPE_VIDEO, got_sources, NULL);
printf("exiting owr\n");
owr_quit();
return 0;
}
问题是我使用glib函数编译错误,如g_assert或g_object_get。
> make
gcc webrtc-client.c -o webrtc-client -lopenwebrtc
/usr/bin/ld: /tmp/ccd4VTU9.o: undefined reference to symbol 'g_object_get'
/opt/openwebrtc-0.3/lib/libgobject-2.0.so.0: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
Makefile:23: recipe for target 'webrtc-client' failed
这些是我在Makefile中设置的env变量
export PATH:=/opt/openwebrtc-0.3/bin:$(PATH)
export LD_LIBRARY_PATH:=/opt/openwebrtc-0.3/lib:$(LD_LIBRARY_PATH)
export GST_PLUGIN_PATH_1_0:=/opt/openwebrtc-0.3/lib/gstreamer-1.0/:$(GST_PLUGIN_PATH_1_0)
export PKG_CONFIG_PATH:=/opt/openwebrtc-0.3/lib/pkgconfig:$(PKG_CONFIG_PATH)
export CPATH:=/opt/openwebrtc-0.3/include:/opt/openwebrtc-0.3/include/glib-2.0:/opt/openwebrtc-0.3/lib/glib-2.0/include:$(CPATH)
export LIBRARY_PATH:=/opt/openwebrtc-0.3/lib:$(LIBRARY_PATH)
作为openwebrtc instalation的一部分,cerbero在/opt/openwebrtc-0.3/lib/
下安装了glib。我也尝试安装apt软件包libglib2.0-dev
并注释掉我的PKG_CONFIG_PATH,但这不起作用。
如何让我的构建过程正确合并glib?
答案 0 :(得分:0)
g_object_get是gobject而不是glib的一部分。
我需要一个-lgobject-2.0
标志