1

我正在尝试使用以下命令编译 BluezTools:

./autogen.sh && ./configure && make

这是输出的一个片段:

obextransfer.c:(.text+0x4d5): undefined reference to `g_type_check_instance_cast'
obextransfer.c:(.text+0x4f1): undefined reference to `dbus_g_proxy_disconnect_signal'
obextransfer.c:(.text+0x4fd): undefined reference to `g_object_unref'
obextransfer.c:(.text+0x50a): undefined reference to `g_free'
obextransfer.c:(.text+0x517): undefined reference to `g_object_unref'
obextransfer.c:(.text+0x528): undefined reference to `g_type_check_class_cast'
lib/obexd/obextransfer.o: In function `obextransfer_cancel':
obextransfer.c:(.text+0x56a): undefined reference to `g_type_check_instance_is_a'
obextransfer.c:(.text+0x58a): undefined reference to `g_assertion_message_expr'
lib/obexd/obextransfer.o: In function `obextransfer_get_dbus_object_path':
obextransfer.c:(.text+0x5e2): undefined reference to `g_type_check_instance_is_a'
obextransfer.c:(.text+0x602): undefined reference to `g_assertion_message_expr'
lib/obexd/obextransfer.o: In function `_obextransfer_get_property':
obextransfer.c:(.text+0x64f): undefined reference to `g_type_check_instance_cast'
obextransfer.c:(.text+0x660): undefined reference to `g_type_name'
obextransfer.c:(.text+0x66f): undefined reference to `g_type_name'
obextransfer.c:(.text+0x6a3): undefined reference to `g_log'
lib/obexd/obextransfer.o: In function `progress_handler':
obextransfer.c:(.text+0x4af): undefined reference to `g_signal_emit'
lib/obexd/obextransfer.o: In function `obextransfer_cancel':
obextransfer.c:(.text+0x5ad): undefined reference to `dbus_g_proxy_call'
lib/obexd/obextransfer.o: In function `obextransfer_get_dbus_object_path':
obextransfer.c:(.text+0x619): undefined reference to `dbus_g_proxy_get_path'
lib/obexd/obextransfer.o: In function `_obextransfer_get_property':
obextransfer.c:(.text+0x6e7): undefined reference to `g_value_set_string'
collect2: error: ld returned 1 exit status
make[2]: *** [bt-monitor] Error 1
make[2]: Leaving directory `/home/[]/Downloads/bluez-tools-bluez-tools/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/home/[]/Downloads/bluez-tools-bluez-tools

这是我在 Linux 上构建 C 项目的第一次尝试,我哪里出错了?

运行 Linux Mint 15 Olivia 64 位。

4

2 回答 2

3

你安装了 bluez 和 obexd 吗?https://code.google.com/p/bluez-tools/#Requirements 您可以检查 ./configure 的输出是否有任何错误。通常有一个configure.log或类似于 grep 的错误。

我不了解 Mint 包管理,但您可能至少需要某种 obex*-dev 包或自己安装 obex 源。

编辑编辑回答评论。

我觉得 obexd-client 不够用,但是试试这个方法,看看是否够用。否则,您需要寻找一些 -dev 软件包,例如libglib2.0-cil-dev libglib2.0-devlibdbus-glib-1-dev。(这些是 Ubuntu 上的名称)。

这是我如何编译它(尽管仍然发出警告)。

  1. 为 glib 和 dbus 安装一堆 -dev 包(ddg/google 链接失败的函数,因此您可以查看它们来自哪些库)。

  2. 执行pkg-config --libs --cflags dbus-1 dbus-glib-1 glib-2.0

  3. 在 ./configure 中使用命令的输出,例如: env LIBS="-I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -ldbus-glib-1 -ldbus-1 -lgobject-2.0 -lglib-2.0" ./configure

  4. 执行make

另请参阅此问题:编译错误 dbus-ping-pong

于 2013-09-18T17:29:05.943 回答
0

通过添加修复了类似的问题pkg-config --libs gtk+-2.0。也许可以帮助某人。

于 2019-01-05T23:31:52.923 回答