Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > Linux для начинающих

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.02.2013, 20:09   #21
Константин
Junior Member
 
Регистрация: 02.02.2013
Адрес: Смоленск
Сообщений: 27
Вес репутации: 0
Константин is an unknown quantity at this point
По умолчанию

Цитата:
-I/home/konstantin/openwrt3020/trunk/staging_dir/target-mips_r2_uClibc-0.9.33.2/usr/lib/libintl-stub/include -MT xmalloc.o -MD -MP -MF .deps/xmalloc.Tpo -c -o xmalloc.o xmalloc.c
xmalloc.c:34:21: fatal error: libintl.h: No such file or directory
compilation terminated.
make[6]: *** [xmalloc.o] Error 1
Что это за файл такой libintl.h? Его действительно нет в папке openwrt3020. Кроме того вот эта часть пути тоже отсутствует libintl-stub/include.
Поискал в инете, народ тоже сталкивается с подобной проблемой в разных прошивках. Но как они решают её не понял.
Константин вне форума   Ответить с цитированием
Старый 07.02.2013, 21:05   #22
andr128
Senior Member
 
Аватар для andr128
 
Регистрация: 16.09.2012
Адрес: Irkutsk
Сообщений: 555
Вес репутации: 1605
andr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond reputeandr128 has a reputation beyond repute
По умолчанию

Я не знаю что вам ответить. У меня таких ошибок не возникало.
andr128 вне форума   Ответить с цитированием
Старый 10.02.2013, 01:13   #23
Rusink
Junior Member
 
Регистрация: 10.02.2013
Сообщений: 8
Вес репутации: 0
Rusink is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Константин Посмотреть сообщение
Что это за файл такой libintl.h? Его действительно нет в папке openwrt3020.
Проверь, все ли необходимые библиотеки стоят. Походу это часть GNU C library (glibc)

Установи пакет libc6-dev и попробуй все скопилить заново

Код:
sudo apt-get install libc6-dev
2 andr128 - отличный краткий HOWTO. Скопировал себе на заметку. Спасибо
Rusink вне форума   Ответить с цитированием
Старый 10.02.2013, 21:43   #24
Константин
Junior Member
 
Регистрация: 02.02.2013
Адрес: Смоленск
Сообщений: 27
Вес репутации: 0
Константин is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Rusink Посмотреть сообщение
Установи пакет libc6-dev и попробуй все скопилить заново

Код:
sudo apt-get install libc6-dev
При инсталяции пишет, что пакет уже есть.

Провозился неделю пытаясь собрать прошивку с флешкой, http-сервером и видео-ядром с mjpg-streamer на базе как trunk так attitude-adjustment. Сборка вылетает с ошибками и образ не создаётся.
Хотя если собирать прошивку просто с поддержкой флешки и mpeg-streamer, то всё генерится нормально как для TL-MR3020 так и для TL-MR3040.
Backfire к сожалению вообще не поддерживает MR3040.
Константин вне форума   Ответить с цитированием
Старый 10.02.2013, 23:24   #25
Rusink
Junior Member
 
Регистрация: 10.02.2013
Сообщений: 8
Вес репутации: 0
Rusink is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Константин Посмотреть сообщение
При инсталяции пишет, что пакет уже есть.

Провозился неделю пытаясь собрать прошивку с флешкой, http-сервером и видео-ядром с mjpg-streamer на базе как trunk так attitude-adjustment. Сборка вылетает с ошибками и образ не создаётся.
Хотя если собирать прошивку просто с поддержкой флешки и mpeg-streamer, то всё генерится нормально как для TL-MR3020 так и для TL-MR3040.
Backfire к сожалению вообще не поддерживает MR3040.
1.Тогда еще раз смотрите лог с ошибками и ищите зависимости.
2. Если есть желание (!) на Backfire можете портировать поддержку mr3040 ручками - вот ссылка на патч, добавляющий его поддержку: http://patchwork.openwrt.org/patch/2190/
Rusink вне форума   Ответить с цитированием
Старый 22.02.2013, 23:16   #26
OSBoy
Junior Member
 
Регистрация: 17.02.2013
Сообщений: 28
Вес репутации: 0
OSBoy is an unknown quantity at this point
По умолчанию

Подскажите пожалуйста, как включить поддержку freetype в php на роутере под openwrt? Прошивка у меня полностью рабочая и собирать новую полностью нет желания. Хотелось бы просто пересобрать php5 с флагом --with-freetype-dir="......" вместо --without-freetype-dir, который включен по умолчанию, и добавить freetype в зависимости.
Роутер: TP-Link WR1043ND, прошивка: Attitude Adjustment 12.09-rc1, корень вынесен на внешний USB-диск.

Я скачал исходники, обновил фиды, а что делать дальше, я не очень то представляю...
Я сделал:
Код:
./scripts/feeds update -a
./scripts/feeds install php5
./scripts/feeds install zoneinfo (без него make menuconfig ругался)
./scripts/feeds install freetype
Затем нашёл в feeds/packages/lang/php5/Makefile строки, касаемые GD:
Код:
.....
ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-gd),)
  CONFIGURE_ARGS+= \
        --with-gd=shared \
        --without-freetype-dir \
        --with-jpeg-dir="$(STAGING_DIR)/usr" \
        --with-png-dir="$(STAGING_DIR)/usr" \
        --without-xpm-dir \
        --without-t1lib \
        --enable-gd-native-ttf \
        --disable-gd-jis-conv
else
  CONFIGURE_ARGS+= --without-gd
endif
.....
$(eval $(call BuildModule,gd,GD graphics,+PACKAGE_php5-mod-gd:libjpeg +PACKAGE_php5-mod-gd:libpng))
.....
Их я привёл к следующему виду:
Код:
.....
ifneq ($(SDK)$(CONFIG_PACKAGE_php5-mod-gd),)
  CONFIGURE_ARGS+= \
        --with-gd=shared \
#      --without-freetype-dir \
        --with-freetype-dir="$(STAGING_DIR)/usr/lib" \
        --with-jpeg-dir="$(STAGING_DIR)/usr" \
        --with-png-dir="$(STAGING_DIR)/usr" \
        --without-xpm-dir \
        --without-t1lib \
        --enable-gd-native-ttf \
        --disable-gd-jis-conv
else
  CONFIGURE_ARGS+= --without-gd
endif
.....
$(eval $(call BuildModule,gd,GD graphics,+PACKAGE_php5-mod-gd:libjpeg +PACKAGE_php5-mod-gd:libpng +PACKAGE_php5-mod-gd:libfreetype))
.....
Затем я, выполнил make menuconfig, выбрал целевой профиль, затем make, всё прошло без ошибок. А вот сборка php5 вываливается с ошибкой на следующих строках:
make package/feeds/packages/php5/compile V=99
Код:
Configuring SAPI modules
checking for AOLserver support... no
checking for Apache 1.x module support via DSO through APXS... no
checking for Apache 1.x module support... no
checking whether to enable Apache charset compatibility option... no
checking for Apache 2.0 filter-module support via DSO through APXS... no
checking for Apache 2.0 handler-module support via DSO through APXS... no
checking for Apache 1.x (hooks) module support via DSO through APXS... no
checking for Apache 1.x (hooks) module support... no
checking whether to enable Apache charset compatibility option... no
checking for Caudium support... no
checking for CLI build... no
checking for Continuity support... no
checking for embedded SAPI library support... no
checking for FPM build... no
checking for Zeus ISAPI support... no
checking for LiteSpeed support... no
checking for Milter support... no
checking for NSAPI support... no
checking for PHTTPD support... no
checking for Pi3Web support... no
checking whether Roxen module is build using ZTS... no
checking for Roxen/Pike support...
checking for thttpd... no
checking for TUX... no
checking for webjames... no
checking for CGI build... yes
checking for chosen SAPI module... none
checking for executable SAPI binaries... none
configure: error: Nothing to build.
make[2]: *** [/home/osboy/openwrt/attitude_adjustment/build_dir/target-mips_r2_uClibc-0.9.33.2/php-5.4.5/.configured_nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn] Error 1
make[2]: Leaving directory `/home/osboy/openwrt/attitude_adjustment/feeds/packages/lang/php5'
make[1]: *** [package/feeds/packages/php5/compile] Error 2
make[1]: Leaving directory `/home/osboy/openwrt/attitude_adjustment'
make: *** [package/feeds/packages/php5/compile] Ошибка 2
Что я не так делаю, или куда копать?

Последний раз редактировалось OSBoy; 23.02.2013 в 22:00.
OSBoy вне форума   Ответить с цитированием
Старый 23.03.2013, 16:55   #27
Dioptimizer
Senior Member
 
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 689
Dioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond repute
По умолчанию

В процессе компилирования прошивки OpenWRT, может потребоваться, достаточно часто компилировать прошивку несколько раз, с теми или иными настройками ядра.
Мною проверенный способ компилирования, позволяет избежать траты времени на повторное компилирование тех же самых пакетов.


Правка/компилирование ядра, с возможностью избежать полного компилирования с нуля (make V=99).

Основное, что необходимо знать во время полной компиляции (make V=99):
  • Компилятор проверит совместимость всех уже установленных дистрибутивов, в случае если что-то устарело (например вы обновили trunk путем "git pull" или "svn up") скачает какой-то пакет и/или дистрибутив. Следующие шаги компилятора установка, компилирование базовых пакетов/модулей указанных в ".config" = "make menuconfig".
  • Далее опять загружается ".config" и в соответствии с профилем, собирается ядро и файловая система (rootfs + user-space) с базовыми модулями (уже собранными выше).
Очень важным фактором успешного компилирования с пропуском пакетов - наличие уже собранных пакетов. Если мы не трогали пакеты (после make V=99), а изменили только ядро (т.е. необходимые пакеты находятся у нас в папке trunk/bin/ar71xx/packages/*.ipk, а изменили мы, например, что-то в trunk/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3020.c) - в этом случае достаточно двух команд:
Код:
make target/linux/{clean,prepare} V=s QUILT=1
(удаляет и заново подготавливает папку trunk/build_dir/target-mips_r2_uClibc-0.9.33.2/linux-ar71xx_generic, после чего, заново синхронизирует с trunk/target/)
Код:
make target/install V=99
(компилирует только target нашу цель - бинарик)

Если вы добавили/интегрировали пакет в ".config" = "make menuconfig", то придется его отдельно собирать или компилировать все заново (make V=99). В противном случае, "make target/install V=99" - при отсутствии готового пакета выдаст ошибку.


Для разработчиков
Хотя бы один раз, рабочий вариант прошивки должен быть полностью собран.
В случае использования этого метода правки ядра, ничего очищать не нужно!
Изменение ядра и практически моментальное компилирование прошивки можно выполнить следующим способом:
trunk\build_dir\target-mips_r2_uClibc-0.9.33.2\linux-ar71xx_generic\linux-3.8.3\ - любой исходник ядра Linux находится в этой папке
trunk\build_dir\target-mips_r2_uClibc-0.9.33.2\linux-ar71xx_generic\linux-3.8.3\arch\mips\ath79\ - если платформа Atheros
После правки *.с исходника, необходимо удалить уже скомпилированный *.o файл с тем же именем, после чего можно скомпилировать бинарик с помощью команды:
Код:
make target/install V=99
Компилятор во время работы, очень быстро пропускает все собранные *.o файлы и будет компилировать только тот *.с исходник, для которого отсутствует *.o файл.


Работа с патчами
Стандартный используемый формат патчей - так называемый унифицированный (unified) формат.
Отличительной особенностью этого типа патча(чтобы можно было понять, что используем правильный формат), является "+" и "-" что соответствует добавлению и удалению строки, например:
Код:
<заголовок может быть любым>
---<путь к старому или исходному файлу>
+++<путь к новому или исходному файлу>
...
-<старая строка>
+<новая строка>
...
Отобразить глобальные изменения на экране:
Код:
git diff .
или
Код:
svn diff .
В глобальные изменения входят все базовые папки (ядро, исходники инструментов и модулей, прочее...) как в trunk/trunk/*

Вывести изменения папки в файл:
Код:
git diff target/linux/ > file.patch
или
Код:
svn diff target/linux/ > file.patch
Аналогично вместо пути target/linux/, можно указывать отдельно файл явным образом или глобальный путь в виде точки.

Возвращение старых версий (возвращает оригиналы из резервной папки trunk/trunk/*):
Код:
git checkout target/linux/
или
Код:
svn revert -R target/linux/
Аналогично можно указывать отдельно файл явным образом или глобальный путь в виде точки.

Применение патча (git или patch для svn):

Проверяем на ошибки (без применения):
Код:
user@bt:~/trunk/openwrt$ git apply --stat my.patch 
 .../ar71xx/base-files/etc/uci-defaults/01_leds     |    6 ++
 target/linux/ar71xx/config-3.10                    |    4 +
 .../ar71xx/files/arch/mips/ath79/dev-m25p80.c      |    2 -
 .../ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c  |   65 ++++++++++++++++++++
 .../files/arch/mips/ath79/mach-tl-wr841n-v8.c      |   10 ++-
 5 files changed, 84 insertions(+), 3 deletions(-)
user@bt:~/trunk/openwrt$ git apply --check my.patch
user@bt:~/trunk/openwrt$
Применяем:
Код:
user@bt:~/trunk/openwrt$ git apply my.patch
my.patch:101: trailing whitespace.
}; 
warning: 1 line adds whitespace errors.
user@bt:~/trunk/openwrt$
Просто ругается на лишний пробел после скобки(в результате который оно удалило).

Код:
patch -u -p0 < file.patch
Где параметр –p# отвечает за кол-во пропускаемых папок в пути к файлу/цели относительно местонахождения самого патча, т.е. патч у нас находится в папке trunk/ а цель в патче "Index: target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3020.c" Если бы патч находился в папке trunk/target/ тогда параметр был бы –p1 соответственно.

Пример использования(svn):
Код:
user@bt:/home/root/trunk$ svn diff . > diff.patch
user@bt:/home/root/trunk$
user@bt:/home/root/trunk$ svn revert -R .
Reverted 'target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c'
Reverted 'target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c'
Reverted 'target/linux/ar71xx/base-files/etc/uci-defaults/01_leds'
Reverted 'target/linux/ar71xx/config-3.8'
user@bt:/home/root/trunk$ 
user@bt:/home/root/trunk$ patch -u -p0 < diff.patch
patching file target/linux/ar71xx/files/arch/mips/ath79/dev-m25p80.c
patching file target/linux/ar71xx/files/arch/mips/ath79/mach-tl-mr3x20.c
patching file target/linux/ar71xx/base-files/etc/uci-defaults/01_leds
patching file target/linux/ar71xx/config-3.8
user@bt:/home/root/trunk$

Последний раз редактировалось Dioptimizer; 02.09.2013 в 12:25. Причина: добавлена особенность использования git
Dioptimizer вне форума   Ответить с цитированием
Старый 05.04.2013, 17:57   #28
mahma
Junior Member
 
Регистрация: 03.04.2013
Сообщений: 1
Вес репутации: 0
mahma is an unknown quantity at this point
По умолчанию

Пытаюсь скомпилировать исходники bmcontrol для подключения датчика MP707 к роутеру MR3020.
Выдает ошибку:
Цитата:
mips-openwrt-linux-uclibc-g++ -O2 -Wall -c bmtemp.cpp
bmtemp.cpp:13:17: fatal error: usb.h: No such file or directory
compilation terminated.

make[3]: *** [bmtemp.o] Error 1
make[3]: Leaving directory `/home/dima/openwrt/trunk/build_dir/target-mips_r2_uClibc-0.9.33.2/bmtemp'
make[2]: *** [/home/dima/openwrt/trunk/build_dir/target-mips_r2_uClibc-0.9.33.2/bmtemp/.built] Error 2
Подскажите пожалуйста , как правильно установить libusb?
mahma вне форума   Ответить с цитированием
Старый 05.04.2013, 23:55   #29
Admin
Administrator
 
Аватар для Admin
 
Регистрация: 12.04.2010
Адрес: Москва
Сообщений: 9,618
Вес репутации: 9823
Admin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant futureAdmin has a brilliant future
По умолчанию

Компилятор говорит что нет такого файла bmtemp.cpp
Admin вне форума   Ответить с цитированием
Старый 08.04.2013, 13:56   #30
Serega7411
Junior Member
 
Регистрация: 08.04.2013
Сообщений: 9
Вес репутации: 0
Serega7411 is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от OSBoy Посмотреть сообщение
Что я не так делаю, или куда копать?

configure: error: Nothing to build.
Может уже есть скомпилированный пакет и нужно компилировать с ключом очистки? Я делал так: make package/php5/{clean,compile} V=s

P.S. Выложил скомпилированные пакеты php5 и mod_gd с поддержкой freetype в профильной теме.
http://cyber-place.ru/showthread.php?p=4884#post4884
Serega7411 вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 31 (пользователей: 0 , гостей: 31)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 02:31. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика