编译错误:未定义的引用

时间:2014-11-27 10:47:26

标签: gcc ubuntu-12.04 udev

我正在使用C程序从Udev获取事件。该程序已在运行Debian的主机(使用GCC 4.7.2-5)上编译和测试。

最近,切换到Ubuntu 12.04 LTS(使用GCC 4.6.3)。在链接阶段,同一程序无法编译和暂停。

automounter_main.c:(.text+0xd4e): undefined reference to `udev_new'
automounter_main.c:(.text+0xe02): undefined reference to `udev_device_new_from_devnum'
automounter_main.c:(.text+0xeb0): undefined reference to `udev_device_new_from_syspath'
automounter_main.c:(.text+0xf63): undefined reference to `udev_device_get_sysattr_list_entry'
automounter_main.c:(.text+0xf77): undefined reference to `udev_list_entry_get_name'
automounter_main.c:(.text+0xf85): undefined reference to `udev_device_get_sysattr_value'
automounter_main.c:(.text+0x100a): undefined reference to `udev_device_get_sysattr_value'
automounter_main.c:(.text+0x1055): undefined reference to `udev_device_get_sysattr_value'
automounter_main.c:(.text+0x1078): undefined reference to `udev_list_entry_get_next'
automounter_main.c:(.text+0x108c): undefined reference to `udev_device_get_parent'
automounter_main.c:(.text+0x1118): undefined reference to `udev_device_unref'
automounter_main.c:(.text+0x1122): undefined reference to `udev_unref'

采取了以下步骤,但似乎没有任何效果。

  • 安装与udev相关的所有软件包(udev,libudev-dev,libudev0)。据报道,所有包裹都是最新的。
  • 在/ usr / lib中创建指向正确udev库的符号链接。
  • 升级的libc包

使用以下方法验证了符号链接:

$ ls -l libudev*

lrwxrwxrwx 1 root root    39 Nov 27 15:57 libudev.so -> /lib/x86_64-linux-gnu/libudev.so.0.13.0)

请帮我找到解决此错误的方法。

提前致谢。

1 个答案:

答案 0 :(得分:3)

我的猜测是你需要将-ludev移到链接命令行的末尾。