无法编译 dbus-ping-pong

无法编译 dbus-ping-pong

我已经从以下网站下载了文件 http://cgit.collabora.com/git/user/alban/dbus-ping-pong.git/tree/

我正在尝试使用命令来编译它

gcc pkg-config --libs --cflags dbus-1 dbus-glib-1-2 glib-2.0 -o dbus-ping-pong dbus-ping-pong.c

但是,我收到了错误:

/tmp/ccmJkxXb.o: In function g_once_init_enter:
dbus-ping-pong.c:(.text+0x22): undefined reference to g_once_init_enter_impl
/tmp/ccmJkxXb.o: In function
dbus_glib_marshal_echo_srv__BOOLEAN__STRING_POINTER_POINTER:
dbus-ping-pong.c:(.text+0x52): undefined reference to g_return_if_fail_warning
dbus-ping-pong.c:(.text+0x79): undefined reference to g_return_if_fail_warning
dbus-ping-pong.c:(.text+0x9d): undefined reference to g_value_peek_pointer
dbus-ping-pong.c:(.text+0xac): undefined reference to g_value_peek_pointer
dbus-ping-pong.c:(.text+0x109): undefined reference to g_value_set_boolean
/tmp/ccmJkxXb.o: In function echo_ping_class_intern_init:
dbus-ping-pong.c:(.text+0x122): undefined reference to g_type_class_peek_parent
/tmp/ccmJkxXb.o: In function echo_ping_get_type:
dbus-ping-pong.c:(.text+0x162): undefined reference to g_intern_static_string
dbus-ping-pong.c:(.text+0x192): undefined reference to g_type_register_static_simple
dbus-ping-pong.c:(.text+0x1a8): undefined reference to g_once_init_leave
/tmp/ccmJkxXb.o: In function echo_ping_class_init:
dbus-ping-pong.c:(.text+0x1cd): undefined reference to g_type_class_add_private
dbus-ping-pong.c:(.text+0x1e2): undefined reference to dbus_g_object_type_install_info
/tmp/ccmJkxXb.o: In function echo_ping_init:
dbus-ping-pong.c:(.text+0x1fe): undefined reference to g_type_instance_get_private
/tmp/ccmJkxXb.o: In function echo_ping:
dbus-ping-pong.c:(.text+0x21d): undefined reference to g_strdup
/tmp/ccmJkxXb.o: In function client:
dbus-ping-pong.c:(.text+0x265): undefined reference to dbus_g_proxy_new_for_name
dbus-ping-pong.c:(.text+0x2c3): undefined reference to dbus_g_proxy_call
dbus-ping-pong.c:(.text+0x2d1): undefined reference to dbus_g_error_quark
dbus-ping-pong.c:(.text+0x2f1): undefined reference to dbus_g_error_get_name
dbus-ping-pong.c:(.text+0x305): undefined reference to g_printerr
dbus-ping-pong.c:(.text+0x31d): undefined reference to g_printerr
dbus-ping-pong.c:(.text+0x328): undefined reference to g_error_free
dbus-ping-pong.c:(.text+0x358): undefined reference to g_print
dbus-ping-pong.c:(.text+0x363): undefined reference to g_free
/tmp/ccmJkxXb.o: In function main:
dbus-ping-pong.c:(.text+0x38f): undefined reference to g_type_init
dbus-ping-pong.c:(.text+0x3a3): undefined reference to dbus_g_bus_get
dbus-ping-pong.c:(.text+0x3c7): undefined reference to g_object_new
dbus-ping-pong.c:(.text+0x3df): undefined reference to g_type_check_instance_cast
dbus-ping-pong.c:(.text+0x3f9): undefined reference to dbus_g_connection_register_g_object
dbus-ping-pong.c:(.text+0x406): undefined reference to dbus_g_connection_get_connection
dbus-ping-pong.c:(.text+0x426): undefined reference to dbus_bus_request_name
dbus-ping-pong.c:(.text+0x43a): undefined reference to g_main_loop_new
dbus-ping-pong.c:(.text+0x44a): undefined reference to g_main_loop_run

我该如何解决这个问题?

答案1

链接内容放在最后,尝试一下:

gcc $(pkg-config --cflags dbus-1 dbus-glib-1) -o dbus-ping-pong dbus-ping-pong.c $(pkg-config --libs dbus-1 dbus-glib-1)

顺便说一句,使用该命令成功编译后,我启动了该程序并得到了:

错误:任何 .service 文件均未提供名称 com.example.DBus.Echo

您知道我们可以如何使用该程序吗?

附言:我使用了$( ... )而不是反引号,因为它没有正确传递表格。

PS2:我在自己的问题中找到了解决方案:

创建文件“/usr/share/dbus-1/services/com.example.DBus.Echo.service”,内容如下:

[D-BUS Service]
Name=com.example.DBus.Echo
Exec=/home/telecom/bachelordbus/dbus-ping-pong/dbus-ping-pong server
User=root

谢谢 Eliah 的解释。

相关内容