libusb-1.0, собранный тулчейном энтузиастов уже входит в состав прошивки:
Настоятельно рекомендую использовать статически собранные библиотеки ncurses 5.9, libusb 1.0 для того, чтобы не налететь на dependency hell. Невозможно будет предсказать какой вариант библиотеки будет использоваться загрузчиком libdl. Например, если будет загружен в память ваш вариант ncurses, то не будет работать завязанный на него софт из состава optware и наоборот: если в память сначала будет загружен экземпляр ncurses из optware, то ваш вариант подгружен не будет, так как загрузчик не увидит разницы, и, соответственно, необходимости в повторной загрузки в память разделяемого объекта.Code:$ find /usr/lib -name libusb* /usr/lib/libusb-1.0.so
В опции -I/... здесь указана т.н. стандартная директория поиска интерфейсов. Она и так будет использоваться тулчейном без явного на то указания. Если не используется ключ -nostdinc, то эту опцию можно опустить.
Было: WL500gP (fw 1.9.2.7-10-USB-1.71) + Toshiba TravelStar 250Gb 2.5" inside router.
(ADOS + rTorrent WebUI+rtorrent + samba + rrdtool + XMail + QuiXplorer + ClamAV)
> Мои инструкции < Для новичков и ленивых > Wiki переехало сюда < "Ночные" сборки >
Пытаюсь собрать toollchain. Под Debian c ядром 2.6.26-2-686
Выполняю следующие команды, аналогично этой инструкции
Но сборка до конца не доходит, из лога видно, что нет файла binutils на сервере.Code:svn co https://svn.nslu2-linux.org/svnroot/optware/trunk optware echo "export OPTWARE_TARGET=oleg" >> .profile cd optware make directories toolchain
Подскажите где взять его.+ wget --tries=5 --passive-ftp -P /home/necrom/downloads -c http://www.kernel.org/pub/linux/deve....94.0.2.tar.gz
--2011-12-01 02:22:20-- http://www.kernel.org/pub/linux/deve....94.0.2.tar.gz
Resolving www.kernel.org... 149.20.4.69
Connecting to www.kernel.org|149.20.4.69|:80... connected.
HTTP request sent, awaiting response... 404 Not Found
2011-12-01 02:22:20 ERROR 404: Not Found.
+ test -f /home/necrom/downloads/binutils-2.15.94.0.2.tar.gz
+ abort 'file binutils-2.15.94.0.2.tar.gz not found'
+ echo file binutils-2.15.94.0.2.tar.gz not found
file binutils-2.15.94.0.2.tar.gz not found
+ exec false
make: *** [/home/necrom/optware/toolchain/crosstool/.built] Ошибка 1
И ещё такой вопрос, данный toollchain подойдёт для:
Linux version 2.4.37.11 (root@localhost) (gcc version 3.4.6) 1.9.2.7-d-r2624
Сегодня на конец то собрал toolchain, но возникла проблема со сборкой тестового пакета для rtorrent.
Что сделал:
Всё шло хорошо пока не выпал такой вот букет.Устанавил пакеты:
Добавляем в ~/.profileCode:sudo apt-get install autoconf automake bash bison++ bzip2 diff dropbear file flex g++ gawk groff libncurses-dev libtool libslang2 make mc patch perl sed shtool subversion tar texinfo zlib1g zlib1g-dev build-essential
Пере зашёл в Gnome.Code:export OPTWARE_TARGET=oleg
Скачал пакеты и добавил в папку downloadCode:cd ~ svn co http://svn.nslu2-linux.org/svnroot/optware/trunk optware cd ./optware
binutils-2.17.50.0.8.tar.bz2
linux-libc-headers-oleg.tar.bz2
buildroot-svn-17310.tar.gz
ncurses-5.5.tar.gz
busybox-1.1.3.tar.bz2
uClibc++-0.2.2+r26250.tbz2
gcc-4.1.1.tar.bz2
uClibc-0.9.28.tar.bz2
gdb-6.5.tar.bz2
uClibc-locale-030818.tgz
Code:make directories toolchain make oleg-target cd oleg make directories ipkg-utils make rtorrent
Ошибка была в том, что в поставляемом файле xmlrpc_curl_transport.c нужно за комментировать на строке 78 библиотеку curl/types.h/home/necrom/optware/oleg/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-uclibc-gcc -c -I/home/necrom/optware/oleg/builds/xmlrpc-c -I/home/necrom/optware/oleg/builds/xmlrpc-c/include -I/home/necrom/optware/oleg/builds/xmlrpc-c/include -I/home/necrom/optware/oleg/builds/xmlrpc-c/lib/util/include -I/home/necrom/optware/oleg/staging/opt/include -DNDEBUG -O2 -pipe -I/home/necrom/optware/oleg/staging/opt/include -Wall -Wundef -Wimplicit -W -Winline -Wundef -Wmissing-declarations -Wstrict-prototypes -Wmissing-prototypes -fno-common -g -O3 xmlrpc_curl_transport.c -fPIC -DPIC -o xmlrpc_curl_transport.lo
xmlrpc_curl_transport.c:78:24: error: curl/types.h: No such file or directory
xmlrpc_curl_transport.c: In function 'setInterrupt':
xmlrpc_curl_transport.c:1733: warning: pointer targets in assignment differ in signedness
xmlrpc_curl_transport.c: In function 'finishAsynch':
xmlrpc_curl_transport.c:1998: warning: pointer targets in passing argument 5 of 'curlMulti_finish' differ in signedness
xmlrpc_curl_transport.c: In function 'call':
xmlrpc_curl_transport.c:2055: warning: pointer targets in passing argument 4 of 'performRpc' differ in signedness
make[4]: *** [xmlrpc_curl_transport.lo] Ошибка 1
make[4]: Leaving directory `/home/necrom/optware/oleg/builds/xmlrpc-c/lib/curl_transport'
make[3]: *** [curl_transport/all] Ошибка 2
make[3]: Leaving directory `/home/necrom/optware/oleg/builds/xmlrpc-c/lib'
make[2]: *** [lib/all] Ошибка 2
make[2]: Leaving directory `/home/necrom/optware/oleg/builds/xmlrpc-c'
make[1]: *** [/home/necrom/optware/oleg/builds/xmlrpc-c/.built] Ошибка 2
make[1]: Leaving directory `/home/necrom/optware/oleg'
make: *** [/home/necrom/optware/oleg/builds/rtorrent/.configured] Ошибка 2
Для поиска файла используемxmlrpc_curl_transport.c:78:24: error: curl/types.h: No such file or directory
Подскажите, как собрать теперь в пакет rtorrent. А также udpxy, скаченный отсюда. Желательно детально, если не сложно.Code:find ./ -name 'xmlrpc_curl_transport.c'
Last edited by necrom; 01-12-2011 at 19:07.
Загляните в пакет rtorrent, там есть зависимая libcurl, для которой могли забыть добавить:
а) цель curl-stage в rtorrent.mk,
б) путь к интерфейсам (ключ -I/... для компилятора) и самой библиотеке (ключ -L/... для линковщика).
1) Прочитать README и убедиться, что у udpxy 1.0 нет никаких зависимых.
2) Скачать и распаковать исходники:
3) Подправить Makefile, указав кросс-компилятор строчкой CC := /opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gccCode:$ wget http://downloads.sourceforge.net/project/udpxy/udpxy/Chipmunk-1.0/udpxy.1.0-Chipmunk-18.tgz?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fudpxy%2Ffiles%2Fudpxy%2FChipmunk-1.0%2F&ts=1322811779&use_mirror=citylan $ tar -xvf ../downloads/udpxy.1.0-Chipmunk-18.tgz\?r\=http\:%2F%2Fsourceforge.net%2Fprojects%2Fudpxy%2Ffiles%2Fudpxy%2FChipmunk-1.0%2F $ cd ./udpxy-1.0-Chipmunk-18/
4) Скомпилировать, выполнив make.
5) Забрать на роутер результат компиляции - файл ./udpxy
Опционально можно удалить из полученного бинарника отладочные символы:
В составе прошивки:Code:$ du -h ./udpxy 112K ./udpxy $ /opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-strip ./udpxy $ du -h ./udpxy 96K ./udpxy
ЗЫ. Единственная уважительная причина использования Optware - прошивка ветки -d при использовании заметного числа готовых зависимых библиотек.Code:$ which udpxy /usr/sbin/udpxy $ du -h /usr/sbin/udpxy 65.5K /usr/sbin/udpxy $ cat /.version 1.9.2.7-rtn-r3497
Last edited by ryzhov_al; 02-12-2011 at 09:01.
Сам torrent собрался, только вот не понимаю как его в пакет завернуть .ipk.
Конфиг был стандартный, оставляемый с optware
Путь к интерфейсам (ключ -I/... для компилятора) и самой библиотеке (ключ -L/... для линковщика).RTORRENT_SITE=http://libtorrent.rakshasa.no/downloads
RTORRENT_VERSION ?= 0.8.6
RTORRENT_IPK_VERSION ?= 1
RTORRENT_SVN=svn://rakshasa.no/libtorrent/trunk/rtorrent
#RTORRENT_SVN_REV=1037
ifdef RTORRENT_SVN_REV
RTORRENT_SOURCE=rtorrent-svn-$(RTORRENT_SVN_REV).tar.gz
else
RTORRENT_SOURCE=rtorrent-$(RTORRENT_VERSION).tar.gz
endif
RTORRENT_DIR=rtorrent-$(RTORRENT_VERSION)
RTORRENT_UNZIP=zcat
RTORRENT_MAINTAINER=NSLU2 Linux <nslu2-linux@yahoogroups.com>
RTORRENT_DESCRIPTION=rtorrent is a BitTorrent client for ncurses, using the libtorrent library.
RTORRENT_SECTION=net
RTORRENT_PRIORITY=optional
RTORRENT_NCURSES=$(strip \
$(if $(filter ds101g syno-e500, $(OPTWARE_TARGET)), ncurses, \
$(NCURSES_FOR_OPTWARE_TARGET)))
RTORRENT_DEPENDS=libtorrent, $(RTORRENT_NCURSES), libcurl, xmlrpc-c, zlib
RTORRENT_SUGGESTS=dtach, screen, adduser
RTORRENT_CONFLICTS=
#
# RTORRENT_CONFFILES should be a list of user-editable files
RTORRENT_CONFFILES=/opt/etc/rtorrent.conf
#
# RTORRENT_PATCHES should list any patches, in the the order in
# which they should be applied to the source code.
#
RTORRENT_PATCHES=$(RTORRENT_SOURCE_DIR)/uint32_t.patch
#
# If the compilation of the package requires additional
# compilation or linking flags, then list them here.
#
RTORRENT_CPPFLAGS=-O3 -I$(STAGING_INCLUDE_DIR)/$(RTORRENT_NCURSES)
RTORRENT_LDFLAGS=
RTORRENT_CONFIGURE=
ifeq ($(LIBC_STYLE), uclibc)
ifdef TARGET_GXX
RTORRENT_CONFIGURE += CXX=$(TARGET_GXX)
endif
endif
ifeq (ncurses, $(RTORRENT_NCURSES))
RTORRENT_CONFIGURE += ac_cv_search_add_wch=no
RTORRENT_CONFIGURE_OPTS = --without-ncursesw
endif
RTORRENT_CONFIGURE_OPTS += --with-xmlrpc-c
#
# RTORRENT_BUILD_DIR is the directory in which the build is done.
# RTORRENT_SOURCE_DIR is the directory which holds all the
# patches and ipkg control files.
# RTORRENT_IPK_DIR is the directory in which the ipk is built.
# RTORRENT_IPK is the name of the resulting ipk files.
#
# You should not change any of these variables.
#
RTORRENT_BUILD_DIR=$(BUILD_DIR)/rtorrent
RTORRENT_SOURCE_DIR=$(SOURCE_DIR)/rtorrent
RTORRENT_IPK_DIR=$(BUILD_DIR)/rtorrent-$(RTORRENT_VERSION)-ipk
ifdef RTORRENT_SVN_REV
RTORRENT_IPK=$(BUILD_DIR)/rtorrent_$(RTORRENT_VERSION)+r$(RTORRENT_SVN_REV)-$(RTORRENT_IPK_VERSION)_$(TARGET_ARCH).ipk
else
RTORRENT_IPK=$(BUILD_DIR)/rtorrent_$(RTORRENT_VERSION)-$(RTORRENT_IPK_VERSION)_$(TARGET_ARCH).ipk
endif
Это я полагаю ключ RTORRENT_LDFLAGS=
Ещё не совсем понятно, где взять mipsel-uclibc-gcc, поискал его в toolchain нашёл только.
Если обобщить весь алгоритм сборки:Code:ls toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux- mipsel-linux-c++ mipsel-linux-uclibc-c++ mipsel-linux-cc mipsel-linux-uclibc-cc mipsel-linux-c++filt mipsel-linux-uclibc-c++filt mipsel-linux-cpp mipsel-linux-uclibc-cpp mipsel-linux-g++ mipsel-linux-uclibc-g++ mipsel-linux-gcc mipsel-linux-uclibc-gcc mipsel-linux-gcc-4.1.1 mipsel-linux-uclibc-gcc-4.1.1
То нужно:
1. Написать mk файл и положить в папку make.
2. Залить исходники в папку builds под тем же названием
А дальше как получить ipk не понимаю.
Потому, что я привёл в примере сборку с помощью энтузиасткого тулчейна.
В случае использования среды Optware...
... и положить патчи к исходникам в ./optware/sources/ если это необходимо.
Нет. Вы же указываете в make-файле откуда выкачивать файл. Если такого файла в папке ./optware/downloads нет, то среда Optware сама его выкачает, распакует в ./optware/builds, наложит патчи из ./optware/sources и скомпилирует.
Кстати, вы можете посмотреть значение любой переменной среды, выполнивCode:$ make rtottent-ipk
Для использования среды optware достаточно изучения двух этих документов.Code:$ make query-VAR_NAME
ЗЫ Повторюсь, оправдано ли использование Optware?
Спасибо получилось!
Полезная вещь, спасибо, буду использовать.
Если для простых сборок, то думаю нет. Решил просто с неё начать, для ознакомления работы с toolchain. А чем лучше сборка от энтузиастов и OpenWRT Buildroot? (Полагаю, новым ядром или ещё чем?)
- Ядром.
- GCC и uClibc.
- Актуальностью и многообразием пакетов.
Перечитал пол темы до 4 страницы вроде ещё понимал, как то (не всё правда), но после 4 забуксовал как то. Я так понял, что вы пере собираете репозиторий, для прошивки от энтузиастов? А debwrt решили не трогать?
Для сборки в пакет от энтузиастов используете ipkg-utils?
Полагаю ещё это ман к установки смешанного toolchain OpenWrt и Oleg.
Прочитал ещё эту тему тоже почерпнул немного нового, спасибо. Как наберусь знаний, по сборке присоединюсь к вам![]()
Last edited by necrom; 02-12-2011 at 19:04.
Да. Цель - сделать самый распространённый и полнокровный репозиторий сообщества OpenWRT доступным на роутерах ASUS с энтузиасткой прошивкой.
Опосредованно - да. И Optware и OpenWRT Buildroot используют свой встроенный функционал для создания пакетов на основе ipkg-utils. Процесс сборки пакета после компиляции автоматизирован.
Да. Там мной описаны шаги, позволяющие собирать пакеты OpenWRT энтузиастким тулчейном. Для того, чтобы облегчить другим авторам сборку необходимого им софта.
Попытался сегодня собрать udpxy через
B получил кучу предупреждений, и ошибок.Code:make udpxy
Разобрался, не было конфигурационных файловCode:make/template.mk:114: предупреждение: переопределение команд для цели `/home/necrom/optware/oleg/builds/<foo>/.configured' make/simpl_temp.mk:59: предупреждение: старые команды для цели `/home/necrom/optware/oleg/builds/<foo>/.configured' игнорируются
Посидел поковырялся, даже не получилось скомпилить udpxy просто руками.
Настройки в файле сделал такие:
Флаги убрал, с ними вообще даже не стартует.СС := /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1
Code:make Making a [release] version (use 'debug' target as an alternative) make[1]: Entering directory `/home/necrom/optware/downloads/udpxy-1.0' /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c udpxy.c -o udpxy.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c rparse.c -o rparse.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c util.c -o util.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c prbuf.c -o prbuf.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c ifaddr.c -o ifaddr.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c ctx.c -o ctx.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c mkpg.c -o mkpg.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c rtp.c -o rtp.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c uopt.c -o uopt.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c dpkt.c -o dpkt.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c netop.c -o netop.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c extrn.c -o extrn.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c main.c -o main.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -c udpxrec.c -o udpxrec.o /home/necrom/optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin/mipsel-linux-gcc-4.1.1 -DUDPXREC_MOD -DNDEBUG -DTRACE_MODULE -o udpxy udpxy.o rparse.o util.o prbuf.o ifaddr.o ctx.o mkpg.o rtp.o uopt.o dpkt.o netop.o extrn.o main.o udpxrec.o udpxy.o: In function `server_loop': udpxy.c:(.text+0x49c8): undefined reference to `pselect' collect2: ld returned 1 exit status make[1]: *** [udpxy] Ошибка 1 make[1]: Leaving directory `/home/necrom/optware/downloads/udpxy-1.0' make: *** [release] Ошибка 2
Last edited by Omega; 19-02-2012 at 17:15. Reason: fixed
Здесь в примере просто обозначено место для сборки зависимостей. Убирайте.Code:$(MAKE) <bar>-stage <baz>-stage
udpxy не использует GNU Build System, поэтому скрипта ./configure в составе исходников udpxy вы не найдёте.Code:LDFLAGS="$(STAGING_LDFLAGS) $(UDPXY_LDFLAGS)" \ ./configure \ --build=$(GNU_HOST_NAME) \
Здравствуй, optware, Новый год!Code:udpxy.c.text+0x49c8): undefined reference to `pselect'Вот вам первая подножка от старого тулчейна: Optware использует uClibC 0.9.28 which does not have pselect().
Бросайте вы его!