1

I have downloaded files from http://cgit.collabora.com/git/user/alban/dbus-ping-pong.git/tree/

I am trying to compile it using the command

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

However, I get errors:

/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

How do I resolve this issue ?

benortiz
  • 133
  • 6
Mahipal
  • 11
  • 3

1 Answers1

1

Linking stuff goes at end, try that:

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)

By the way, after compiling successfully using that command, I launched the program und i've got that:

Error: The name com.example.DBus.Echo was not provided by any .service files

Do you know how might we use that program?

PS: I've used $( ... ) rather than backticks because it didn't pass the form correctly.

PS2: I've found the solution at my own question:

Create the file "/usr/share/dbus-1/services/com.example.DBus.Echo.service" with the following content:

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

Thank you, Eliah, for the explanations.

user55559
  • 11
  • 2
  • If you want to use backticks instead of $( ... ), enclose them in a preformatted code block (by putting four spaces before the line, or by selecting what you want in the block and clicking the <$> button in the editing toolbar (or by enclosing it in <pre><code> ... </code></pre> HTML tags). – Eliah Kagan Jun 02 '12 at 16:21