Não é possível compilar dbus-ping-pong

1

Eu baixei arquivos de link

Estou tentando compilá-lo usando o comando

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

No entanto, recebo erros:

/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

Como resolvo esse problema?

    
por Mahipal 16.04.2012 / 10:42

1 resposta

1

Linkando as coisas no final, tente:

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)

A propósito, depois de compilar com sucesso usando esse comando, lancei o programa e descobri que:

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

Você sabe como podemos usar esse programa?

PS: usei $( ... ) em vez de backticks porque não passou corretamente no formulário.

PS2: encontrei a solução na minha própria pergunta:

Crie o arquivo "/usr/share/dbus-1/services/com.example.DBus.Echo.service" com o seguinte conteúdo:

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

Obrigado, Eliah, pelas explicações.

    
por user55559 02.06.2012 / 17:29

Tags