2014-11-27 1 views
2

Я работаю над программой C для получения событий от Удева. Программа была скомпилирована и протестирована на хосте, на котором запущен 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). Сообщается, что все пакеты являются последними.
  • Создайте Symlink в/usr/lib, указав правильную библиотеку udev.
  • Модернизированного Libc пакет

Symlink был проверен с помощью:

$ 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

Очевидно, что компоновщик не связывает некоторую библиотеку udev. Проверьте (или разместите здесь) вашу команду компоновщика и предоставите ли правильной библиотеке '-l' и/или' -L'. – usr1234567

+0

@ usr1234567 Спасибо, что указал на компоновщик. Я, очевидно, не обращал внимания на порядок параметров, заданных там. – Girish

ответ

3

Я предполагаю, что вам нужно переместить -ludev в конец командной строки ссылки.

+0

Вы правы, кажется, что -ludev перед объектами. Теперь он исправлен. – Girish