Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:4
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:8
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512
Компиляция usbutils
MiniMax (Guest)
Добавлено 30.11.1999 00:00 Редактировалось 23.02.2009 23:13
0
Сообщение: 1
MiniMax (Guest)

Topic opened
Спуститься к концу Подняться к началу
MiniMax (Guest)
Добавлено 23.02.2009 12:21 Редактировалось 23.02.2009 12:21 Сообщение: 2
MiniMax (Guest)

lsusb отсутствует в Busybox.
Попробовал скомпилировать libusb-1.0.0, libusb-compat-0.1.0, usbutils-0.73.
Для ПК проблем нет. Все скопимлировалось и проинсталлировалось.
./configure
make
make install


Для ARM libusb-1.0.0, libusb-compat-0.1.0 проблем нет.
/configure --host=arm-none-linux-gnueabi
make
make install

Возникли проблемы с usbutils на этапе конфигурации

checking for usb_get_string_simple in -lusb... no
configure: error: get libusb 0.1.8 or newer

В чем может быть проблема ?
Спуститься к концу Подняться к началу
Strijar (Guest)
Добавлено 23.02.2009 12:48 Редактировалось 23.02.2009 12:48 Сообщение: 3
Strijar (Guest)

Он ведь написал что не нашел libusb. Соберите сначало его (для ARM), укажите до него путь.
Спуститься к концу Подняться к началу
MiniMax (Guest)
Добавлено 23.02.2009 12:56 Редактировалось 23.02.2009 12:56 Сообщение: 4
MiniMax (Guest)

Естественно,что я уже собрал libusb для ARM.
Пробовал и со своими путями
*****************************************************************************************
libusb
-----------------------------------------------------------------------------------------
./configure --prefix=/mnt/usb/libusb --host=${TARGET}
./configure --host=${TARGET}
make
sudo make install
*****************************************************************************************
libusb-compat
-----------------------------------------------------------------------------------------
./configure --prefix=/mnt/usb/libusb --host=${TARGET} CFLAGS=-I/mnt/usb/libusb/include LDFLAGS=-L/mnt/usb/libusb/lib
make
sudo make install
*****************************************************************************************
Usbutils
./configure --prefix=/mnt/usb/usbutils CFLAGS=-I/mnt/usb/libusb/include LDFLAGS=-L/mnt/usb/libusb/lib

./configure --target=${TARGET} --host=${TARGET} --build=${TARGET}

И с путями по умолчанию. Проблема с usbutils на этапе конфигурации не уходит

Какие флаги ему еще добавить ?
Спуститься к концу Подняться к началу
MiniMax (Guest)
Добавлено 23.02.2009 14:53 Редактировалось 23.02.2009 14:53 Сообщение: 5
MiniMax (Guest)

Это не проблема путей. Я сделал sudo make uninstall для
libusb-1.0.0, libusb-compat-0.1.0

Потом пересобрал libusb-1.0.0, libusb-compat-0.1.0 с --prefix=моя директоря со штатным gcc компилятором

Надо было только добавить PKG_CONFIG_PATH
Все собирается очень легко с gcc.
Но с кросс-компилятором все остается по прежнему.
checking for usb_get_string_simple in -lusb... no
configure: error: get libusb 0.1.8 or newer

Я посмотрел на configure файл. Там есть попытка вызвать функцию usb_get_string_simple из C кода.
Вот похоже оно и сбоит.

Кто-то собирал usbutils вручную ?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно MiniMax 23.02.2009 г. в 14:54:53
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 23.02.2009 15:46 Редактировалось 23.02.2009 15:46 Сообщение: 6
repairman (Guest)

Посмотри buildroot, там на usbutils патчи накладываются, прежде чем собирать... а libusb в sysroot ставится, прежде чем собирать usbutils, потому с их поиском проблем нет...

По идее должна быть опция --with-libusb=путь... НО про нее не упоминается в ./configure --help, а должно бы, если поддерживается...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 23.02.2009 г. в 16:00:45
Спуститься к концу Подняться к началу
MiniMax (Guest)
Добавлено 23.02.2009 16:47 Редактировалось 23.02.2009 16:47 Сообщение: 7
MiniMax (Guest)

я уверен на 99.99% процентов, что это не проблема путей.
Я уже ставил и в sysroot и в мою локальную директорию.
--with-libusb= это пробовал.

Проблема приходит отсюда.
Мне кажется, что они компилируют простой C пример. Я не думаю, что они пытаются запустить его на выполнение.
Это невозможно в случае кросс-компиляции.

Код

echo "$as_me:$LINENO: checking for usb_get_string_simple in -lusb" >&5
echo $ECHO_N "checking for usb_get_string_simple in -lusb... $ECHO_C" >&6
if test "${ac_cv_lib_usb_usb_get_string_simple+set}" = set; then
echo $ECHO_N "(cached) $ECHO_C" >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-lusb $LIBS"
cat >conftest.$ac_ext <<_ACEOF
/* confdefs.h. */
_ACEOF
cat confdefs.h >>conftest.$ac_ext
cat >>conftest.$ac_ext <<_ACEOF
/* end confdefs.h. */

/* Override any gcc2 internal prototype to avoid an error. */
#ifdef __cplusplus
extern "C"
#endif
/* We use char because int might match the return type of a gcc2
builtin and then its argument prototype would still apply. */
char usb_get_string_simple ();
int
main ()
{
usb_get_string_simple ();
;
return 0;
}
_ACEOF
rm -f conftest.$ac_objext conftest$ac_exeext
if { (eval echo "$as_me:$LINENO: "$ac_link"") >&5
(eval $ac_link) 2>conftest.er1
ac_status=$?
grep -v '^ *+' conftest.er1 >conftest.err
rm -f conftest.er1
cat conftest.err >&5
echo "$as_me:$LINENO: $? = $ac_status" >&5
(exit $ac_status); } &&
{ ac_try='test -z "$ac_c_werror_flag"
|| test ! -s conftest.err'
{ (eval echo "$as_me:$LINENO: "$ac_try"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: $? = $ac_status" >&5
(exit $ac_status); }; } &&
{ ac_try='test -s conftest$ac_exeext'
{ (eval echo "$as_me:$LINENO: "$ac_try"") >&5
(eval $ac_try) 2>&5
ac_status=$?
echo "$as_me:$LINENO: $? = $ac_status" >&5
(exit $ac_status); }; }; then
ac_cv_lib_usb_usb_get_string_simple=yes
else
echo "$as_me: failed program was:" >&5
sed 's/^/| /' conftest.$ac_ext >&5

ac_cv_lib_usb_usb_get_string_simple=no
fi
rm -f conftest.err conftest.$ac_objext
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
echo "$as_me:$LINENO: result: $ac_cv_lib_usb_usb_get_string_simple" >&5
echo "${ECHO_T}$ac_cv_lib_usb_usb_get_string_simple" >&6
if test $ac_cv_lib_usb_usb_get_string_simple = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBUSB 1
_ACEOF

LIBS="-lusb $LIBS"

else
{ { echo "$as_me:$LINENO: error: get libusb 0.1.8 or newer" >&5
echo "$as_me: error: get libusb 0.1.8 or newer" >&2;}
{ (exit 1); exit 1; }; }
fi


_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно MiniMax 23.02.2009 г. в 16:50:13
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 23.02.2009 20:39 Редактировалось 23.02.2009 20:39 Сообщение: 8
repairman (Guest)

Короче... я его собрал... но пришлось руками поправить кое-что... криво все это...
Очень нужно ?

Проверка в configure ремарчится, потом при сборке указываешь через CFLAGS и LDFLAGS - пути к инклудам и библиотекам libusb...

libusb:
Код

./configure --host=armv5l-linux-uclibc --prefix=`pwd`/../_install
make
make install


usbutils:
Код

./configure --host=armv5l-linux-uclibc
make CFLAGS="-I../_install/include" LDFLAGS="-L../_install/lib"


config.h - заремарчить
//#define malloc rpl_malloc

cofigure от usbutils строка 5139:
Код

#if test $ac_cv_lib_usb_usb_get_string_simple = yes; then
cat >>confdefs.h <<_ACEOF
#define HAVE_LIBUSB 1
_ACEOF

LIBS="-lusb $LIBS"

#else
# { { echo "$as_me:$LINENO: error: get libusb 0.1.8 or newer" >&5
#echo "$as_me: error: get libusb 0.1.8 or newer" >&2;}
# { (exit 1); exit 1; }; }
#fi



USE_ZLIB=yes


Содержимое ../_install - тоже должно быть отправлено на рутфс платы...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 23.02.2009 г. в 21:32:04
Спуститься к концу Подняться к началу
Strijar (Guest)
Добавлено 23.02.2009 20:52 Редактировалось 23.02.2009 20:52 Сообщение: 9
Strijar (Guest)

Загляните в config.log и станет ясно в чем именно проблема
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 23.02.2009 21:04 Редактировалось 23.02.2009 21:04 Сообщение: 10
repairman (Guest)

В чем проблема ясно... непонятно как это исправить...

.configure ищет libusb по стандартному пути системы, а задать ему особый путь - в configure не предусмотрено, известные мне способы: --with-.. LDFLAGS и т.п. - игнорируются...

В любом случае требуется вмешательство в скрипт configure... создатель usbutils даже не предполагал, что может быть кросс-компиляция, когда дерево хоста вообще не совпадает с деревом таргета....

Кто хочет - может сделать красиво, например, введя опцию with-libusb... я не силен в шеловых скриптах, я пас...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 23.02.2009 г. в 21:16:43
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Старый форум » SK-MAT91SAM9XE512