Results 1 to 15 of 143

Thread: Переход от нативной компиляции к кросс-компиляции

Hybrid View

Previous Post Previous Post   Next Post Next Post
  1. #1
    Quote Originally Posted by necrom View Post
    Ошибка была в том, что в поставляемом файле xmlrpc_curl_transport.c нужно за комментировать на строке 78 библиотеку curl/types.h
    Загляните в пакет rtorrent, там есть зависимая libcurl, для которой могли забыть добавить:
    а) цель curl-stage в rtorrent.mk,
    б) путь к интерфейсам (ключ -I/... для компилятора) и самой библиотеке (ключ -L/... для линковщика).

    Quote Originally Posted by necrom View Post
    Подскажите, как собрать теперь в пакет rtorrent. А также udpxy, скаченный отсюда. Желательно детально, если не сложно.
    1) Прочитать README и убедиться, что у udpxy 1.0 нет никаких зависимых.
    2) Скачать и распаковать исходники:
    Code:
    $ 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/
    3) Подправить Makefile, указав кросс-компилятор строчкой CC := /opt/brcm/hndtools-mipsel-uclibc/bin/mipsel-uclibc-gcc
    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
    В составе прошивки:
    Code:
    $ which udpxy
    /usr/sbin/udpxy
    $ du -h /usr/sbin/udpxy
    65.5K   /usr/sbin/udpxy
    $ cat /.version
    1.9.2.7-rtn-r3497
    ЗЫ. Единственная уважительная причина использования Optware - прошивка ветки -d при использовании заметного числа готовых зависимых библиотек.
    Last edited by ryzhov_al; 02-12-2011 at 08:01.

  2. #2
    Quote Originally Posted by ryzhov_al View Post
    Загляните в пакет rtorrent, там есть зависимая libcurl, для которой могли забыть добавить:
    а) цель curl-stage в rtorrent.mk,
    б) путь к интерфейсам (ключ -I/... для компилятора) и самой библиотеке (ключ -L/... для линковщика).
    Сам torrent собрался, только вот не понимаю как его в пакет завернуть .ipk.
    Конфиг был стандартный, оставляемый с optware
    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
    Путь к интерфейсам (ключ -I/... для компилятора) и самой библиотеке (ключ -L/... для линковщика).
    Это я полагаю ключ 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 не понимаю.

  3. #3
    Quote Originally Posted by necrom View Post
    Ещё не совсем понятно, где взять mipsel-uclibc-gcc, поискал его в toolchain нашёл только...
    Потому, что я привёл в примере сборку с помощью энтузиасткого тулчейна.

    В случае использования среды Optware...
    Quote Originally Posted by necrom View Post
    ...нужно:
    1. Написать mk файл и положить в папку make.
    ... и положить патчи к исходникам в ./optware/sources/ если это необходимо.
    Quote Originally Posted by necrom View Post
    2. Залить исходники в папку builds под тем же названием
    Нет. Вы же указываете в make-файле откуда выкачивать файл. Если такого файла в папке ./optware/downloads нет, то среда Optware сама его выкачает, распакует в ./optware/builds, наложит патчи из ./optware/sources и скомпилирует.
    Quote Originally Posted by necrom View Post
    А дальше как получить ipk не понимаю.
    Code:
    $ make rtottent-ipk
    Кстати, вы можете посмотреть значение любой переменной среды, выполнив
    Code:
    $ make query-VAR_NAME
    Для использования среды optware достаточно изучения двух этих документов.

    ЗЫ Повторюсь, оправдано ли использование Optware?

  4. #4
    Quote Originally Posted by ryzhov_al View Post
    Code:
    $ make rtottent-ipk
    Для использования среды optware достаточно изучения двух этих документов.
    Спасибо получилось!
    Quote Originally Posted by ryzhov_al View Post
    Кстати, вы можете посмотреть значение любой переменной среды, выполнив
    Code:
    $ make query-VAR_NAME
    Полезная вещь, спасибо, буду использовать.
    Quote Originally Posted by ryzhov_al View Post
    ЗЫ Повторюсь, оправдано ли использование Optware?
    Если для простых сборок, то думаю нет. Решил просто с неё начать, для ознакомления работы с toolchain. А чем лучше сборка от энтузиастов и OpenWRT Buildroot? (Полагаю, новым ядром или ещё чем?)

  5. #5
    Quote Originally Posted by necrom View Post
    А чем лучше сборка от энтузиастов и OpenWRT Buildroot? (Полагаю, новым ядром или ещё чем?)

  6. #6
    Quote Originally Posted by ryzhov_al View Post
    Перечитал пол темы до 4 страницы вроде ещё понимал, как то (не всё правда), но после 4 забуксовал как то. Я так понял, что вы пере собираете репозиторий, для прошивки от энтузиастов? А debwrt решили не трогать?
    Для сборки в пакет от энтузиастов используете ipkg-utils?
    Полагаю ещё это ман к установки смешанного toolchain OpenWrt и Oleg.
    Прочитал ещё эту тему тоже почерпнул немного нового, спасибо. Как наберусь знаний, по сборке присоединюсь к вам
    Last edited by necrom; 02-12-2011 at 18:04.

  7. #7
    Quote Originally Posted by necrom View Post
    Я так понял, что вы пере собираете репозиторий, для прошивки от энтузиастов? А debwrt решили не трогать?
    Да. Цель - сделать самый распространённый и полнокровный репозиторий сообщества OpenWRT доступным на роутерах ASUS с энтузиасткой прошивкой.
    Quote Originally Posted by necrom View Post
    Для сборки в пакет от энтузиастов используете ipkg-utils?
    Опосредованно - да. И Optware и OpenWRT Buildroot используют свой встроенный функционал для создания пакетов на основе ipkg-utils. Процесс сборки пакета после компиляции автоматизирован.
    Quote Originally Posted by necrom View Post
    Полагаю ещё это ман к установки смешанного toolchain OpenWrt и Oleg.
    Да. Там мной описаны шаги, позволяющие собирать пакеты OpenWRT энтузиастким тулчейном. Для того, чтобы облегчить другим авторам сборку необходимого им софта.

Similar Threads

  1. Entware - новый репозиторий для роутеров Asus (MIPS)
    By ryzhov_al in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 1391
    Last Post: 04-01-2021, 21:16
  2. Переход на летнее время - проблема с timezone
    By ABATAPA in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 101
    Last Post: 22-12-2014, 11:45
  3. Кросс-компиляция rTorrent
    By al37919 in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 94
    Last Post: 22-04-2012, 19:48

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •