Задать вопрос
Jey
@Jey
программист, изобретатель, организатор

Как скомпилировать под OpenWrt программу, использующую libusb?

Ребята, подскажите пожалуйста, уже несколько дней не могу решить проблему с компиляцией программы, которая использует libusb.

Предыстория. Начал разбираться с кросс-компиляцией по этому мануалу:
telecnatron.com/articles/Cross-Compiling-For-OpenW...

Вроде бы всё неплохо, hello world скомпилировалось отлично (опустим танцы с бубном по поводу установки среды для кросс-компиляции, та ещё процедура для меня), на роутере запустилось. Дальше у меня была задача скомпилировать программу dcled (www.last-outpost.com/~malakai/dcled/), чтобы попробовать вывести какие-то надписи на подключаемому по USB led-бэджику (в будущем хочу сделать его управляемым по wifi). Скачал исходники программы, распаковал. И тут засада...

Сначало пробовал сделать всё тоже самое, что и с классическим примером:
# Set up paths and environment for cross compiling for openwrt
export STAGING_DIR=/usr/local/crosscompile/openwrt/staging_dir
export TOOLCHAIN_DIR=$STAGING_DIR/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2
export LDCFLAGS=$TOOLCHAIN_DIR/usr/lib
export LD_LIBRARY_PATH=$TOOLCHAIN_DIR/usr/lib
export PATH=$TOOLCHAIN_DIR/bin:$PATH
mips-openwrt-linux-gcc -g -lm -lusb-1.0 -o dcled dcled.c


На выходе имеем ошибку:
dcled.c:30:20: fatal error: libusb.h: No such file or directory
 #include <libusb.h>
                    ^
compilation terminated.


Ок... пишут, что можно использовать стандартный make-файл с такими параметрами:
# Set up paths and environment for cross compiling for openwrt
export STAGING_DIR=/usr/local/crosscompile/openwrt/staging_dir
export TOOLCHAIN_DIR=$STAGING_DIR/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2
export LDCFLAGS=$TOOLCHAIN_DIR/usr/lib
export LD_LIBRARY_PATH=$TOOLCHAIN_DIR/usr/lib
export PATH=$TOOLCHAIN_DIR/bin:$PATH
make CC=mips-openwrt-linux-uclibc-gcc LD=mips-openwrt-linux-uclibc-ld

на выходе:

mips-openwrt-linux-uclibc-gcc dcled.o -o dcled -g -lm -lusb-1.0
/usr/local/crosscompile/openwrt/staging_dir/toolchain-mips_34kc_gcc-4.8-linaro_uClibc-0.9.33.2/lib/gcc/mips-openwrt-linux-uclibc/4.8.3/../../../../mips-openwrt-linux-uclibc/bin/ld: cannot find -lusb-1.0
collect2: error: ld returned 1 exit status
make: *** [dcled] Error 1


Перепробовал уже наверное миллион комбинаций и, честно говоря, мозг закипает.

Для справки результат выполнения "locate libusb.h"
/usr/include/libusb-1.0/libusb.h
/usr/local/crosscompile/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2/libusb-1.0.9/ipkg-install/usr/include/libusb-1.0/libusb.h
/usr/local/crosscompile/openwrt/build_dir/target-mips_34kc_uClibc-0.9.33.2/libusb-1.0.9/libusb/libusb.h
/usr/local/crosscompile/openwrt/staging_dir/target-mips_34kc_uClibc-0.9.33.2/usr/include/libusb-1.0/libusb.h


Помогите, а то с ума сойду :)
  • Вопрос задан
  • 5414 просмотров
Подписаться 4 Оценить 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы