2016-05-26 2 views
0

Я пытаюсь связать некоторый код propents на eLux 5 (работает с eLux 4) специальным дистрибутивом Linux. Командная строка очень длинная и содержит: -ludev -lpenDriverApi (обе динамические библиотеки, penDriverApi - это прогностический код, который зависит от udev). Теперь линкер сказал мне, что различные ссылки не определены из udev, как 'udev_monitor_unref'. С «nm» я подтвердил, что эти ссылки доступны в общем объекте udev - так что сообщения об ошибках действительно странны для меня. Поскольку я также пробовал различные параметры verbose/debug для компоновщика, я сейчас нахожусь в точке, не имея clou, как узнать, что пошло не так во время компоновки моего проекта cmake.Неопределенные ссылки в gcc-ссылке с udev on elux 5

Надеемся, что это изображение можно прочитать, потому что проклятое vmware разрешает копирование/вставку, которая включена (возможно, конфигурация elux плохая).

Linker command and error messages

Udev Версия на ELUX 4, 0.6.1 Udev Версия в ELUX 5, 1.3.5

ответ

2

Решение этой проблемы было, что третья сторона разделяемой библиотеки libpenDriverApi.so требуется перекомпиляция с libudev.so. 1, а также изменение компоновщика, так что ldd -r также показывает зависимость от libudev.

0

В последовательности связей любого объектного файла или библиотеки, которая требует символу определения должны появляться перед библиотека, предоставляющая определения, или неопределенные эталонные ошибки. Это связано с тем, что компоновщик по умолчанию будет искать библиотеку только для определения определений символов, которые он наблюдал, ссылаются, но не определены, в более ранние файлов.

Так что если libpenDriverApi зависит от libudev, то вы должны связать в порядке:

-lpenDriverApi -ludev 
+0

Заказ был выполнен cmake, но я также попытался выполнить команду компоновщика в командной строке, поэтому я также попытался изменить порядок -l без изменения результата :( – digipenKH

+0

@ user3021395 В этом случае вы вам нужно будет отправить по крайней мере всю команду неудачной связи и ошибки, которые следуют из нее. Добавьте их в тело вашего вопроса. Чтобы заставить 'make' печатать то, что на самом деле делает, сделать' VERBOSE = 1'. –

+0

I пожелать, чтобы это было возможно, но эта проклятая машина vmware не позволила бы (в то время как гостевая изолированная копия/вставка включена). Может быть, скриншот будет работать. – digipenKH

 Смежные вопросы

  • Нет связанных вопросов^_^