Я пытаюсь портировать приложение для управления устройством, использующим чип ftdi2332h, из windows в linux. Я установил библиотеку libftd2xx в системе Ubuntu 10.04 согласно этим инструкциям.
Когда я пытаюсь скомпилировать любой из примеров программ, я получаю следующую ошибку:
/usr/local/lib/libftd2xx.so: undefined reference to `memcpy@GLIBC_2.14'
collect2: ld returned 1 exit status
Какие-нибудь рекомендации, как это исправить?
В файле readme упоминается Ubuntu 12.04, которая поставляется с glibc 2.15. Вы используете Ubuntu 10.04, которая поставляется с glibc 2.11.1. Сообщение об ошибке, которое вы видите, говорит о некотором двоичном (здесь это наиболее вероятно libftd2xx.so
), на которую вы ссылаетесь, полагается на более новый glibc, чем вы, на который ссылаетесь, что логично, учитывая предыдущий факт.
Либо перекомпилировать libftd2xx.so
из источника по сравнению с версией glibc вашей системы (вероятно, не вариант, так как он только двоичный), или обновите вашу ОС. Ubuntu 10.04 довольно старая.
В крайнем случае (и попробуйте сделать это только в том случае, если вам нравится, ударяя пальцами по кувалдой), вы можете скомпилировать новый glibc для вашей системы и установить его где-нибудь как /opt
,
Обновление до Ubuntu 12.04. У меня тоже самое случилось Qt
Оказалось, библиотека glibc слишком старая. Поиск в Google показал, что попытка самостоятельно обновить glibc — очень опасное предложение.
Вы можете скачать и скомпилировать libc, и установить под /opt/lib/libcX/libc.so.6
, Затем вы можете иметь скрипт:
LD_LIBRARY_PATH=/opt/lib/libcX:/lib/:/usr/lib:/usr/share/lib
./your_program
Я не уверен, но если вы используете кросс-компилятор, у вас должны быть установлены совместимые версии базовых библиотек (не в /usr/include
а также /usr/lib
), и вы должны убедиться, что компилятор использует их, а не те, которые используются для собственного компилятора. И вы должны убедиться, что вся цепочка инструментов совместима с версией. (И я знаю, что это не очень полный ответ, но это все, что я знаю.)