реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Кросс-компиляция библиотеки
PavelG
сообщение Oct 10 2012, 13:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Здравствуйте, пытаюсь откомпилировать под 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". Все прекрасно собралось.
Go to the top of the page
 
+Quote Post
PavelG
сообщение Oct 10 2012, 19:57
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



С первым пунктом разобрался.
Второй вопрос остался в силе. Почему линковщик не может найти библиотеку, ведь она есть и путь к ней правильный.

Сообщение отредактировал PavelG - Oct 10 2012, 19:58
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 11 2012, 08:52
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(PavelG @ Oct 10 2012, 23:57) *
Почему линковщик не может найти библиотеку, ведь она есть и путь к ней правильный.
А вы в этом уверены? А библиотека, которая есть, точно собрана под ваш target (arm-none-linux-gnueabi)?
Go to the top of the page
 
+Quote Post
PavelG
сообщение Oct 11 2012, 10:07
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Цитата(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е.

Сообщение отредактировал PavelG - Oct 11 2012, 10:09
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 11 2012, 10:13
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



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

Go to the top of the page
 
+Quote Post
PavelG
сообщение Oct 12 2012, 20:09
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



Цитата(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.

Сообщение отредактировал PavelG - Oct 12 2012, 20:14
Go to the top of the page
 
+Quote Post
XVR
сообщение Oct 13 2012, 09:07
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



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

Go to the top of the page
 
+Quote Post
PavelG
сообщение Oct 15 2012, 10:54
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 61
Регистрация: 11-10-11
Пользователь №: 67 674



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


Все я делал правельно, кроме ссылки на библиотеку =). Вместо -ltdl нужно указывать -lltdl, и тогда все успешно собирается. Спасибо за помощь, XVR.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st June 2025 - 20:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.01403 секунд с 7
ELECTRONIX ©2004-2016