Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Кросс-компиляция библиотеки
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
PavelG
Здравствуйте, пытаюсь откомпилировать под arm библиотеку. Во время ее сборки вылетает следующая ошибка:
CCLD libopensc.la
/home/pavel/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.5.2/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -ltdl
collect2: ld returned 1 exit status

Я в Linux недавно, поэтому не совсем понимаю две вещи:
1) что означает вызов бинарника ld с флагом -ltdl, (или запись адресса библиотеки для линковщика как ../../lib -ltdl)?
2) чего линковщик не может найти?

Конфигурация следующая
./configure --host=arm-linux --disable-libtool-lock LTLIB_CFLAGS="-I/home/ARM_GCC/include" LTLIB_LIBS="-L/home/ARM_GCC/lib -ltdl" CC=arm-none-linux-gnueabi-gcc

PS
Собирал другую библиотеки требующую Libtool, и также использовал LTLIB_CFLAGS="-I/home/ARM_GCC/include" LTLIB_LIBS="-L/home/ARM_GCC/lib -ltdl". Все прекрасно собралось.
PavelG
С первым пунктом разобрался.
Второй вопрос остался в силе. Почему линковщик не может найти библиотеку, ведь она есть и путь к ней правильный.
XVR
Цитата(PavelG @ Oct 10 2012, 23:57) *
Почему линковщик не может найти библиотеку, ведь она есть и путь к ней правильный.
А вы в этом уверены? А библиотека, которая есть, точно собрана под ваш target (arm-none-linux-gnueabi)?
PavelG
Цитата(XVR @ Oct 11 2012, 11:52) *
А вы в этом уверены? А библиотека, которая есть, точно собрана под ваш target (arm-none-linux-gnueabi)?

Собирал так:
Код
host# ./configure --host=arm-linux --build=i686-PC-linux --enable-ltdl-install CC=arm-none-linux-gnueabi-gcc
host# make
host# make install


Другие бибилотеки после этого работали нормально на ARMе.
XVR
Цитата(PavelG @ Oct 11 2012, 14:07) *
Собирал так:
А сама библиотека libtdl.a собирается в процессе билда или отдельно? Если отдельно, то она тоже должна быть собрана в cross версии.
Кстати, вызов configure неверный. Ему надо указать, что собирается именно cross версия. А сейчас у вас только заменен компилятор на ARM, а библиотеки он будет пытаться прилинковать хостовые, что у вас похоже и получилось

PavelG
Цитата(XVR @ Oct 11 2012, 13:13) *
А сама библиотека libtdl.a собирается в процессе билда или отдельно?

Собирается вместе.

Цитата(XVR @ Oct 11 2012, 13:13) *
Кстати, вызов configure неверный. Ему надо указать, что собирается именно cross версия.


Несовсем понял как указать что собирается cross версия, как я понимаю переменная host как раз и указывает платформу для которой собирается? Плюс я смотрел все переменные, которые можно передать при конфигурации, и кроме host и CC, больше ничего не укажешь, что бы указывало на кросс компиляцию.
По крайней мере сегодня я собрал и успешно запустил Mplayer, там была переменная --enable-cross-compil, а тут ничего подобного нету.

Даже тут говорится о том, что крос компиляция определяется переменной --host.
XVR
Цитата(PavelG @ Oct 13 2012, 00:09) *
Несовсем понял как указать что собирается cross версия, как я понимаю переменная host как раз и указывает платформу для которой собирается? Плюс я смотрел все переменные, которые можно передать при конфигурации, и кроме host и CC, больше ничего не укажешь, что бы указывало на кросс компиляцию.
Возможно этого и достаточно. А arm-linux в качестве host платформы достаточно? Для embedded целей могут быть варианты. Посмотрите лог сборки - возможно что то не собралось

PavelG
Цитата(XVR @ Oct 13 2012, 12:07) *
Возможно этого и достаточно. А arm-linux в качестве host платформы достаточно? Для embedded целей могут быть варианты. Посмотрите лог сборки - возможно что то не собралось


Все я делал правельно, кроме ссылки на библиотеку =). Вместо -ltdl нужно указывать -lltdl, и тогда все успешно собирается. Спасибо за помощь, XVR.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.