PDA

Bekijk de volledige versie : Нативная компиляция пакетов на роутере



shi
15-11-2006, 19:00
Можно ли откомпилировать простую программу на С средствами роутера? Какой пакет надо поставить на роутер для этого.Или может под Xp есть компилятор который может делать исполняемые файлы для роутера.
Спасибо.

TVadim
16-11-2006, 05:05
Пакет buildroot.
Как ставить: http://wl500g.info/showthread.php?t=2036&page=5
68 пост

Mam(O)n
09-02-2007, 18:23
А я из за лени разбираться с cross-compiling и ASUS toolchain на роутер установил из репозитария http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ пакет "buildroot - 4.1.1-12 - uClibc compilation toolchain" и все у меня теперь компилируется на роутере. Не быстро конечно, но приемлемо.

n0isy
09-02-2007, 19:32
все у меня теперь компилируется на роутере. Не быстро конечно, но приемлемо.

5+++++++++. Супер... Сейчас же поставлю...

:D

dfayruzov
12-02-2007, 10:45
А я из за лени разбираться с cross-compiling и ASUS toolchain на роутер установил из репозитария http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ пакет "buildroot - 4.1.1-12 - uClibc compilation toolchain" и все у меня теперь компилируется на роутере. Не быстро конечно, но приемлемо.

buildroot я тоже уже установил. но с нативной компиляцией у меня возникли проблемы (пытаюсь собрать mediatomb):


не нашел libjs для wl-500g, скомпилить скачанную не смог, потому что ей нужна gmake, которую в свою очередь не смог найти
даже при компиляции без libjs наткнулся на забавный баг: make ругается на подготовленные configure'ом файлы, что они более ранние, чем дистрибутив - запускает конфигур, и так по кругу


В итоге пошел другим путем - поднял под wmware Fedora Core 6, скомпирировал mediatomb под платформу i386. Теперь пытаюсь кросс-компилировать его под роутер.

Andromedaland
19-08-2007, 13:28
А я из за лени разбираться с cross-compiling и ASUS toolchain на роутер установил из репозитария http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/ пакет "buildroot - 4.1.1-12 - uClibc compilation toolchain" и все у меня теперь компилируется на роутере. Не быстро конечно, но приемлемо.

Установил пакет "buildroot - 4.1.1-12 - uClibc compilation toolchain".
Как собрать работающий IPK из libpcap (http://www.tcpdump.org/release/libpcap-0.9.7.tar.gz)?
У меня установлены пакеты:


adduser - 1.5.0-1 - a multi-call binary for login and user account administration
bison - 2.3-2 - a general-purpose parser generator that converts an annotated context-free grammar into an LALR(1) or GLR parser for that gramm
buildroot - 4.1.1-12 - uClibc compilation toolchain
bzip2 - 1.0.4-1 - Very high-quality data compression program
cron - 4.1-5 -
cyrus-sasl-libs - 2.1.22-2 - Provides client or server side authentication (see RFC 2222).
diffutils - 2.8.1-4 - contains gnu diff, cmp, sdiff and diff3 to display differences between and among text files
e2fsprogs - 1.40.2-1 - Ext2 Filesystem Utilities
flex - 2.5.33-4 - Generates programs that perform pattern-matching on text.
gdbm - 1.8.3-2 - GNU dbm is a set of database routines that use extensible hashing. It works similar to the standard UNIX dbm routines.
glib - 2.6.6-6 - The GLib library of C routines.
groff - 1.19.2-1 - front-end for the groff document formatting system
ipkg - 0.99.149-2 -
less - 394-3 - Less file browser
libdb - 4.2.52-3 - Berkeley DB Libraries
libstdc++ - 0.2.0-6 -
libuclibc++ - 0.1.12-4 -
libuclibc++ - 0.2.2-4 - C++ standard library designed for use in embedded systems
libxml2 - 2.6.27-2 -
libxml2 - 2.6.29-1 - Libxml2 is the XML C parser and toolkit developed for the Gnome project.
libxslt - 1.1.20-1 -
libxslt - 1.1.21-1 - An XML Stylesheet processor based on libxml2
lighttpd - 1.4.15-3 -
m4 - 1.4.8-1 - gnu macro processor and compiler front end
make - 3.81-1 - examines files and runs commands necessary for compilation
man - 1.5p-4 - unix manual page reader
man-pages - 2.33-3 - unix manual pages
mc - 4.6.1-2 -
mc - 4.1.35-3 -
memtester - 4.0.6-1 - A runtime memtest utility
microperl - 5.8.8-11 - Microperl.
nano - 2.0.6-1 - A pico like editor
ncurses - 5.6-1 - NCurses libraries
ncursesw - 5.6-1 - NCurses libraries with wide char support.
openldap-libs - 2.3.35-1 -
openssl - 0.9.7m-2 - Openssl provides the ssl implementation in libraries libcrypto and libssl, and is needed by many other applications and librari
openssl - 0.9.7m-1 -
pcre - 7.2-1 - Perl-compatible regular expression library
pcre - 6.7-5 -
php - 5.2.3-1 - The php scripting language
php - 5.2.2-1 -
php-fcgi - 5.2.3-1 - The php scripting language, built as an fcgi module
php-fcgi - 5.2.2-5 -
readline - 5.2-2 - The GNU Readline library provides a set of functions for use by applications that allow users to edit command lines as they are
screen - 4.0.3-2 - A screen manager that supports multiple logins on single terminal
sed - 4.1.5-1 - Stream editor.
slang - 2.1.1-1 - S-Lang is a multi-platform library designed to allow a developer to create robust multi-platform software.
sqlite - 3.4.1-1 - SQLite is a small C library that implements a self-contained, embeddable, zero-configuration SQL database engine.
termcap - 1.3.1-2 - Terminal emulation library
uclibc-opt - 0.9.28-12 - micro C library for embedded Linux systems
unrar - 3.6.8-2 - unrar is an application that can decompress files and archives created using the RAR compression scheme
unzip - 5.52-1 - A (de)compression library for the ZIP format
vsftpd - 2.0.5-1 - ftp daemon with an emphasis on speed and security
whois - 4.7.20-1 - Perform whois lookups to identify site owners
zlib - 1.2.3-2 - zlib is a library implementing the 'deflate' compression system.


Что-то ещё необходимо устанавливать?

Для libpcap (http://www.tcpdump.org/release/libpcap-0.9.7.tar.gz) это работает:
./configure
make
make install

А дальше, я так понимаю, для создания ipk необходимо править Makefile и ... Подскажите пожалуйста.

alxndrv
06-01-2008, 20:51
Собираю медиасервер, для него необходимо несколько пакетов, которых нет в http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/. Приходится пытаться скомпилировать на самом девайсе. Установил:
buildroot
make
optware-devel
perl
а также все пакеты с сочетанием gc и ++
Проблема в том, что в makefile создаются такие строки:
...
AR = mipsel-linux-ar
CC = mipsel-linux-gcc
...
Для второй я пишу CC = mipsel-linux-uclibc-gcc (компилятор, который устанавливается с buildroot).
А вот первому аргументу AR, что надо присваивать - неясно, поскажите, плиз, так как нет ничего похожего!! Естественно, без этого не компилируется.
P.S. Компилирую YAML-Syck http://svn.slimdevices.com/vendor/src/YAML-Syck-0.64.tar.gz?rev=8711&view=log

lly
06-01-2008, 21:51
Я думаю нужно оставить просто ar. В комплекте buildroot_4.1.1-12_mipsel.ipk он есть.

alxndrv
07-01-2008, 09:07
cпасибо, заработало, продолжу мучаться с компиляцией

alxndrv
07-01-2008, 18:56
Для медиасервера, который я уже третий день тщетно устанавливаю, помимо всего, нужен пакет YAML-Syck. Я скачал, скомпилировал (используя пакеты buildroot и perl) и установил его (make, make test (все тесты прошли ok), make install). Все без ошибок, все необходимые файлы "лежат" на своих местах. НО perl пакет не видит (несмотря на то, что тесты при установке работают). Проверяю так (просто запуск строчки кода из командной строки):


perl -MYAML::Syck -le 'print YAML::Syck::Dump({})'

в ответ:


Can't locate auto/YAML/Syck/Dump.al in @INC (@INC contains: /opt/lib/perl5/5.8.8/mipsel-linux /opt/lib/perl5/5.8.8 /opt/lib/perl5/site_perl/5.8.8/mipsel-linux /opt/lib/perl5/site_perl/5.8.8 /opt/lib/perl5/site_perl .) at -e line 1

Я не знаток perl, но происходит примерно следующее: perl не находит данный пакет и пытается сделать AUTOLOAD функции Dump - поэтому ищет файл Dump.al, которого нет и по идее не должно быть.
Что еще я не сделал при установке пакета YAML-Syck?

a0d75
30-07-2008, 12:11
Всем привет! Помогите решить проблему: во время компиляции программы на роутере выскакивает ошибка:


[admin@WL-001FC660F2CE ip-sentinel-0.12]$ make
make all-recursive
make[1]: Entering directory `/opt/tmp/ip-sentinel-0.12/ip-sentinel-0.12'
Making all in .
make[2]: Entering directory `/opt/tmp/ip-sentinel-0.12/ip-sentinel-0.12'
make[2]: Nothing to be done for `all-am'.
make[2]: Leaving directory `/opt/tmp/ip-sentinel-0.12/ip-sentinel-0.12'
Making all in src
make[2]: Entering directory `/opt/tmp/ip-sentinel-0.12/ip-sentinel-0.12/src'
depbase=`echo ip-sentinel.o | sed 's|[^/]*$|.deps/&|;s|\.o$||'`; \
if gcc -DHAVE_CONFIG_H -I. -I. -I.. -D_GNU_SOURCE -g -O2 -Wall -W -Wno-unused-function -std=c99 -Wno-unreachable-code -MT ip-sentinel.o -MD -MP -MF "$depbase.Tpo" -c -o ip-sentinel.o ip-sentinel.c; \
then mv -f "$depbase.Tpo" "$depbase.Po"; else rm -f "$depbase.Tpo"; exit 1; fi
In file included from ip-sentinel.c:24:
wrappers.h: In function 'Eioctl':
wrappers.h:102: warning: implicit declaration of function 'ioctl'
In file included from ip-sentinel.c:39:
/opt/include/sys/ioctl.h: At top level:
/opt/include/sys/ioctl.h:42: error: conflicting types for 'ioctl'
/opt/include/sys/ioctl.h:42: note: a parameter list with an ellipsis can't match an empty parameter name list declaration
wrappers.h:102: error: previous implicit declaration of 'ioctl' was here
make[2]: *** [ip-sentinel.o] Error 1
make[2]: Leaving directory `/opt/tmp/ip-sentinel-0.12/ip-sentinel-0.12/src'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/tmp/ip-sentinel-0.12/ip-sentinel-0.12'
make: *** [all] Error 2

DemonGloom
30-07-2008, 15:13
Смутное подозрение, что проблемы с исходником..

a0d75
31-07-2008, 11:57
Скомпилировал. Пришлось заинклудить stropts.h, скопировать его и еще пару файлов из glibc с linux сервера, так как uclibc не поддерживает потоки.

Vityok
10-02-2009, 21:15
Что-то не получается


[admin@WL-001D60DFFAB5 psybnc]$ make menuconfig
Initializing Menu-Configuration
Running Conversion Tool for older psyBNC Data.
make: gcc: Command not found
make: *** [menuconfig] Error 127

Что можно сделать?

theMIROn
11-02-2009, 05:10
нужен именно psyBNC или подойдет любой другой BNC?

Vityok
11-02-2009, 10:18
Ну, лучше бы psyBNC, уже привычнее как-то

Vityok
11-02-2009, 10:21
Вы мне скажите, как скомпилить? Нужен gcc, а его не видел в ipkg

AlexeyS
11-02-2009, 10:58
Вы мне скажите, как скомпилить? Нужен gcc, а его не видел в ipkg

buildroot нужен

DemonGloom
11-02-2009, 12:25
Ставьте сразу optware-devel

Vityok
11-02-2009, 13:54
Спасбо, на gcc перестало жаловаться, теперь вот так


[admin@WL-001D60DFFAB5 psybnc]$ make menuconfig
Initializing Menu-Configuration
Running Conversion Tool for older psyBNC Data.
Using existent configuration File.
Running Autoconfig.
System: Linux
Socket Libs: Internal.
Environment: Internal.
Time-Headers: in time.h and sys/time.h
Byte order: Big Endian.
IPv6-Support: Yes.
async-DNS-Support: Yes.
SSL-Support: No openssl found. Get openssl at www.openssl.org
Creating Makefile
Creating Menu, please wait.
This needs the ncurses library. If it is not available, menuconf wont work. If you are using curses, use make menuconfig-curses instead.
make: *** [menuconfig] Error 1

Где там что ковырять? Надо дальше думать.

azhur
11-02-2009, 14:14
This needs the ncurses library. If it is not available, menuconf wont work. If you are using curses, use make menuconfig-curses instead.
Нужно поставить библиотеку ncurses.

Vityok
11-02-2009, 14:37
ncurses стоит, проверил. Проблема, видимо, в этих Эндианах (порядок следования байт) , будь они неладны! Проще было бы поставить бинарник, скомпилированный для mipsel'а, в какой-то теме тут видел, но там версия старая, к тому же кое-что в Compiling options поменять хотел.
Я кое-что нашёл по этому поводу
https://dev.openwrt.org/ticket/3441
http://www.freewrt.org/trac/browser/branches/common-adk/freewrt/package/psybnc/patches/psybnc.patch?rev=1310 (относительно пути к openssl)
Буду пробовать. Всем спасибо за помощь.

Vityok
11-02-2009, 22:30
Скомпилил, правда, без menuconfig, config.h вручную, вроде, работает. Посмотрим, как оно дальше будет.

ghost_ufa
12-02-2009, 10:33
Нативная компиляция нужного пакета валится с Segmentation Fault. Своп включен.

ЧЕ ДЕЛАТЬ???

или... Как можно обновить gcc? Как я понимаю, оно требует заточки на использование uClibc и поэтому "влоб" перекомпилить сам GCC нельзя :(

Novik
12-02-2009, 10:47
ЧЕ ДЕЛАТЬ???
Ключи компиляции смотреть. Например, /O2 убрать, если есть.

ghost_ufa
12-02-2009, 11:26
Оптимизация вообще убрана :( Пытался всякие no-exeption убирать - без толку.

Еще варианты?

Novik
12-02-2009, 12:11
Еще варианты?
"-Доктор, у мене болит унутре.
-Проходите, милок, проходите, мы такое не лечим".

Вы хоть листинг покажите. Чего компилируется, с какими ключами, выдает что. Телепатов нема, какие-такие варианты?

lly
12-02-2009, 12:36
Перейти на кросс-компиляцию

Vityok
12-02-2009, 13:19
Так, небольшая проблемка осталась, в упор не видит openssl при компиляции. Не вижу решений пока.

theMIROn
12-02-2009, 13:23
Так, небольшая проблемка осталась, в упор не видит openssl при компиляции. Не вижу решений пока.
поставить openssl-devel

net_net
12-02-2009, 13:26
была такая ошибка при сборке пакетов
сборка прошла сразу после перезагрузки роутера

ghost_ufa
12-02-2009, 13:35
Вы хоть листинг покажите. Чего компилируется, с какими ключами, выдает что. Телепатов нема, какие-такие варианты?


g++ -DMYSQL_SERVER -DDEFAULT_MYSQL_HOME="\"/opt\""
-DDATADIR="\"/opt/var\"" -DSHAREDIR="\"/opt/share/mysql\""
-DHAVE_CONFIG_H -I. -I../include -I/opt/include -I../include -I../include -I../regex -I. -I/include -DDBUG_OFF -felide-constructors -fno-implicit-templates -fno-exceptions -fno-rtti -c -I/opt/include -I../include -I../include -I../regex -I. -I/opt/include -DTZINFO2SQL mysql_tzinfo_to_sql.cc
mysql_tzinfo_to_sql.cc: In function 'my_bool tz_load(const char*, TIME_ZONE_INFO*, MEM_ROOT*)':
mysql_tzinfo_to_sql.cc:277: internal compiler error: Segmentation fault
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.


mysql5
ключи - после конфигура, который доточил из optware-вского. После первого падения что только не делал - не помогает.


была такая ошибка при сборке пакетов
сборка прошла сразу после перезагрузки роутера

Обижаешь, да? И перегрузил, и все ненужные сервисы стопнул.

theMIROn
12-02-2009, 13:40
настраивайте кроскомпиляцию, собирать новые пакеты с шаблонами гораздо легче и быстрее

ghost_ufa
12-02-2009, 13:43
настраивайте кроскомпиляцию, собирать новые пакеты с шаблонами гораздо легче и быстрее

Ой не хочется... но похоже таки придется :mad: По кр мере для крупных пакетов...

Novik
12-02-2009, 14:11
После первого падения что только не делал - не помогает.

1) Поковыряться в теле mysql_tzinfo_to_sql.cc, убрать тело tz_load нафиг, оставив только return(false). Если прокатит - постараться переписать содержимое так, чтобы копмилятор его скушал.
2) Кросс-компиляция - хороший выход. Главное, работает оно гораздо быстрее ;)

Vityok
12-02-2009, 14:36
Ога, спасибо, поставил уже всё заработало. Вот только не пойму, почему menuconfig с ошибкой 1 падает, но это не критично, psybnc.conf и config.h можно и руками редактировать, больше оно ни на что не влияет.

theMIROn
12-02-2009, 17:30
Нужно поставить библиотеку ncurses. Надеюсь именно ncurses-devel?

Vityok
12-02-2009, 18:55
Чё, какой девел, нету!

[admin@WL-001D60DFFAB5 root]$ ipkg list *nc*
electric-fence - 2.1.14.1-1 - C memory debugging library
enhanced-ctorrent - dnh3.3.2-11 - Enhanced CTorrent is a revised version of CTorrent
finch - 2.5.3-1 - Finch is a console-based IM program that lets you sign on to AIM, Jabber, MSN, Yahoo!, and other IM networks. It uses ncurses.
libopensync - 0.22-1 - A synchronization engine.
librsync - 0.9.7-1 - librsync is a free software library that implements the rsync remote-delta algorithm.
libvncserver - 0.9.1-1 - LibVNCServer is a library that makes it easy to make a VNC server.
msynctool - 0.22-1 - CLI for opensync.
nbench-byte - 2.2.2-1 - BYTE's Native Mode Benchmarks
ncdu - 1.4-1 - NCurses Disk Usage.
ncftp - 3.2.2-1 - Nice command line FTP client
ncmpc - 0.13-1 - A curses client for the Music Player Daemon (MPD).
ncurses - 5.7-1 - NCurses libraries
ncursesw - 5.7-1 - NCurses libraries with wide char support.
opencdk - 0.5.13-1 - GNU cryptographic library.
perl-encode-detect - 1.00-1 - Detects the encoding of data.
perl-lexical-persistence - 0.97-1 - Persistent lexical variable values for arbitrary calls.
phoneme-advanced - 0.0.mr.2.b.34-1 - J2ME phoneme advanced, including CDC JVM.
py24-formencode - 1.2.1-1 - A form generation and validation package for python.
py24-yenc - 0.3-1 - A module that provides only raw yEnc encoding/decoding with builtin crc32 calculation (C implementation).
py25-formencode - 1.2.1-1 - A form generation and validation package for python.
py25-yenc - 0.3-1 - A module that provides only raw yEnc encoding/decoding with builtin crc32 calculation (C implementation).
py26-formencode - 1.2.1-1 - A form generation and validation package for python.
rsync - 3.0.5-1 - fast remote file copy program (like rcp)
tmsnc - 0.3.2-1 - Text-based MSN client.
vpnc - 0.5.1-1 - Client for Cisco VPN concentrator
Successfully terminated.

angel_il
12-02-2009, 19:02
если у софта есть возможность собираться со слэнгом то лучше с ним, с нкурсами оно как то косячно все...

ghost_ufa
12-02-2009, 21:03
только return(false). Если прокатит - постараться переписать содержимое так, чтобы копмилятор его скушал.


Пустое тело кушает на ура - но тае же валится на следующей функции...


mysql_tzinfo_to_sql.cc: In function 'void print_tz_leaps_as_sql(const TIME_ZONE_INFO*)':
mysql_tzinfo_to_sql.cc:2467: internal compiler error: Segmentation fault
Нда, не нравится компилятору стиль mysql-евских программеров :) А вот PHP свежий скомпилялся нормально.



2) Кросс-компиляция - хороший выход. Главное, работает оно гораздо быстрее ;)

Тока вот - с бубном прыгать гораздо дольше приходится :( Так что для нерегулярных опытов таки нативная - много быстрее получается. Озадачил роутер - и можно другими делами заняться, когда-нибудь созреет :rolleyes:

Novik
13-02-2009, 08:43
Пустое тело кушает на ура - но тае же валится на следующей функции...
Выцепляйте, что конкретно ему не нравится.


Тока вот - с бубном прыгать гораздо дольше приходится :( Так что для нерегулярных опытов таки нативная - много быстрее получается.
По собственному опыту - прыгать приходится ровно один раз. При настройке. Потом имеем работающую схему. Опять же, ряд программ (тот же rtorrent, например) нативно Вы просто не соберете. Т.е. он скомпилируется, но работать будет ровно до первого throw в коде libtorrent.
Впрочем, дело Ваше.

ghost_ufa
13-02-2009, 09:17
Опять же, ряд программ (тот же rtorrent, например) нативно Вы просто не соберете. Т.е. он скомпилируется, но работать будет ровно до первого throw в коде libtorrent.

А вот про это можно поподробнее? Что не так с исключениями в нативном компиляторе?

Novik
13-02-2009, 10:14
Что не так с исключениями в нативном компиляторе?
При нативной компиляции c++ программ на роутере верно следующее:
если c++ exception выбрасывается из динамической библиотеки, то в программе, эту библиотеку использующую, Вы это исключение не отловите. Никак. Оно пролетит мимо catch и приложение будет aborted. Чтобы исключения работали нормально, все нужно линковать статически.
Кросскомпиляция данную проблему решает.

ghost_ufa
13-02-2009, 11:15
Хм. Хмхмхм. Если это реализуемо исполняемым кодом после кросскомпиляции, то значит дело не в принципиальной невозможности отловить подобное исключение, а в недоработке (или сознательном упрощении) нативного компилятора. А следовательно - бага, а не фича. Кою возможно исправить.

Поправьте если я ошибаюсь.

Novik
13-02-2009, 14:40
Кою возможно исправить. Поправьте если я ошибаюсь.
Понятия не имею. Мне ехать а не шашечки ;)
Впрочем - исправляйте, лично я не против :)

SunCho
01-04-2009, 11:05
посоветуйте dns сервер, который может держать(обслуживать) зону и отдавать (оповещать) slave + запросы пользователей сети
я рылся пару дней, пришел к выводу - maradns
однако готового пакета нету

интересует еще процесс сборки пакета из скомпиленного на рутере софта

SunCho
02-04-2009, 10:55
maradns с конфигами в /opt/etc/maradns
готов
мучительно и долго, но таки собран на самой железяки

nETPOBu4
16-04-2009, 08:59
Добрый день!
Есть пару вопросов по сборке ПО на роутере:
1) Какой --prefix разумнее использовать при вызове configure: /opt или /opt/my (например, т.е. отличный от /opt, что бы не мешать с ПО из пакетов)?
2) Если использовать отличный от /opt, то что еще надо сконфигурировать, что бы при поиске исполняемых файлов и библиотек, в первую очередь находились те, к-ые собрал я, а не из пакетов?

al37919
16-04-2009, 10:30
все правильно. С одной стороны, чтобы упростить понимание откуда что взялось и при необходимости повторение конфигурации имеет смысл ставить самостоятельно скомпиленные пакеты отдельно. Например, я ставлю в /opt/local. Туда же кладу всякие самописные скрипты. При этом, естественно, пути до /opt/local/bin и при необходимости /opt/local/sbin должны быть добавлены к переменной PATH, скажем в ~/.profile

С другой стороны, если собирать используя в качестве префикса /opt , то ничего дополнительно прописывать не нужно.

Тут уж кому чего проще...

P.S. в /opt/etc/man.conf добавляется
MANPATH /opt/local/man
MANPATH /opt/local/share/man

при необходимости использования библиотек, возможно, нужно будет дописать строку /opt/local/lib в /etc/ld.so.conf

nETPOBu4
16-04-2009, 11:30
при необходимости использования библиотек, возможно, нужно будет дописать строку /opt/local/lib в /etc/ld.so.conf
Этот пункт наиболее интересен. Я пробовал править /etc/ld.so.conf, вызывал затем ldconfig, но независимо от этого то, что лежит в /opt/lib просматривается в первую очередь при поиске библиотек.

al37919
16-04-2009, 12:19
надо добавлять в /opt/etc/ld.so.conf а вот что касается порядка просмотра --- похоже, что пути /opt/lib и /opt/usr/lib вкомпилены внутрь и просматриваются всегда первыми.

Break Action
16-07-2009, 18:08
Заранее прошу меня простить, если подобная тема поднималась, но поиск по форуму (как местным поиском, так и при помощи Гугла), положительных результатов не дал.
Поэтому прошу специалистов, помочь в некоторых данных, чтобы лучше понять процесс нативной компиляции для WL500gP.
Не давно возника потребность в компиляции пакета lcd4linux, но с поддержкой драйвера для моего LCD (picoLCDGraphic), поддержка которго отсутствует в lcd4linux, находящимся в нашем репозитории.
Пытаюсь сам откомпилировать, но есть несколько вопросов, по ./configure --help

Installation directories:
--prefix=PREFIX install architecture-independent files in PREFIX
[/usr/local]
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
[PREFIX]

By default, `make install' will install all the files in
`/usr/local/bin', `/usr/local/lib' etc. You can specify
an installation prefix other than `/usr/local' using `--prefix',
for instance `--prefix=$HOME'.
Подскажите плз, какие пути тут необходимо указать?!
Насколько я понял
--prefix=/opt
--exec-prefix=???


Fine tuning of the installation directories:
--bindir=DIR user executables [EPREFIX/bin]
--sbindir=DIR system admin executables [EPREFIX/sbin]
--libexecdir=DIR program executables [EPREFIX/libexec]
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
--datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
--datadir=DIR read-only architecture-independent data [DATAROOTDIR]
--infodir=DIR info documentation [DATAROOTDIR/info]
--localedir=DIR locale-dependent data [DATAROOTDIR/locale]
--mandir=DIR man documentation [DATAROOTDIR/man]
--docdir=DIR documentation root [DATAROOTDIR/doc/lcd4linux]
--htmldir=DIR html documentation [DOCDIR]
--dvidir=DIR dvi documentation [DOCDIR]
--pdfdir=DIR pdf documentation [DOCDIR]
--psdir=DIR ps documentation [DOCDIR]
В данном разделе одни вопросы, какие тут необходимо указать директории?!


Program names:
--program-prefix=PREFIX prepend PREFIX to installed program names
--program-suffix=SUFFIX append SUFFIX to installed program names
--program-transform-name=PROGRAM run sed PROGRAM on installed program names

Тут я насколько понял, можно указать собственное название проект (програмы)


X features:
--x-includes=DIR X include files are in DIR
--x-libraries=DIR X library files are in DIR

Данные пункты для нашей системы не нужны, так как мне кажется это необходимо для X-Window, а данная поддержака нам не нужна.


System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]

Тут тоже неочень понятно, что правильно указать


Optional Features:
--disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
--enable-FEATURE[=ARG] include FEATURE [ARG=yes]
--disable-dependency-tracking speeds up one-time build
--enable-dependency-tracking do not reject slow dependency extractors
--disable-rpath do not hardcode runtime library paths
Судя повсему тут необходимо указывать какие-то зависимости, вероятнее всего они не нужны.


Optional Packages:
--with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
--without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
--with-dmalloc use dmalloc, as in
http://www.dmalloc.com/dmalloc.tar.gz
--with-sco Use this to turn on SCO-specific code
--with-sunos-curses Used to force SunOS 4.x curses
--with-osf1-curses Used to force OSF/1 curses
--with-vcurses=incdir Used to force SysV curses
--with-ncurses=dir Compile with ncurses/locate base dir
--with-x use the X Window System
--with-python enable python support [default=no]
--with-drivers=<list> compile driver for displays in <list>,
drivers may be separated with commas,
'all' (default) compiles all available drivers,
drivers may be excluded with 'all,!<driver>',
(try 'all,\!<driver>' if your shell complains...)
possible drivers are:
BeckmannEgle, BWCT, CrystalFontz, Curses, Cwlinux, D4D,
G15, HD44780, IRLCD, LCD2USB LCDLinux, LCDTerm, LPH7508,
LUIse, M50530, MatrixOrbital, MilfordInstruments, Noritake,
NULL, PNG, PPM, Pertelian, PHAnderson, picoLCD, picoLCDGraphic,
RouterBoard, Sample, serdisplib, SimpleLCD, st2205, T6963, Trefon,
ULA200, USBLCD, USBHUB, WincorNixdorf, X11
--with-plugins=<list> choose which plugins to compile.
type --with-plugins=list for a list
of avaible plugins
plugins may be excluded with 'all,!<plugin>',
(try 'all,\!<plugin>' if your shell complains...)
--with-gnu-ld assume the C compiler uses GNU ld default=no
--with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
--without-libiconv-prefix don't search for libiconv in includedir and libdir
Из данного раздела нам могут понадобиться только
--with-python
--with-drivers=BeckmannEgle, BWCT, CrystalFontz, Curses, Cwlinux, D4D, HD44780, IRLCD, LCD2USB LCDLinux, LCDTerm, LPH7508, LUIse, M50530, MatrixOrbital, MilfordInstruments, Noritake, NULL, PNG, PPM, Pertelian, PHAnderson, picoLCD, picoLCDGraphic, RouterBoard, Sample, serdisplib, SimpleLCD, st2205, T6963, Trefon, ULA200, USBLCD, USBHUB, WincorNixdorf (исключил G15 и X11)
--with-plugins=(Не разобрался как посмотреть список плагинов)
--with-libiconv-prefix=(Не нашел самой библиотеки, ни в файловой системе, ни в репозитории. Вероятно она не пригодится, так как нам не надо конвертировать сиволы, все будет на английском)


Уважаемые Гуру, просветите плз, по пунктам, которые вызвали вопросы, я думаю, что на таком показательном примере и остальным будет проще понять как использовать нитывную компиляцию.

Заранее благодарен, за вашу помощь.

SpiderX
17-07-2009, 06:04
Подскажите плз, какие пути тут необходимо указать?!
Насколько я понял
--prefix=/opt
--exec-prefix=???
Пока гуру спят :)
--prefix=/opt
--exec-prefix=/opt


В данном разделе одни вопросы, какие тут необходимо указать директории?!
Префикс для этих каталагов будет взят из ”--exec-prefix”, если нужна более тонкая настройка, тогда узывайте свой префикс для нужных вам директорий.

Вы конфигурировать начните, вам и скажут, что вам нужно, а что нет :)

Break Action
17-07-2009, 10:59
Меня больше интересует, что необходимо тут указать

System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]

Так как я понимаю именно этот блок отвечает за совместиность с системой и железом роутера.

Опытным путем определил наилучшую конфигураци для запуска конфигурирования
./configure --prefix=/opt --with-python --with-drivers=all,!G15,!X11,!Curses,!ULA200,!HD44780,!LU Ise,!RouterBoard,!serdisplib,!st2205 --with-plugins=all,!dvb,!gps,!mpd,!mpris_dbus,!mysql
Исключил некоторые модули, так как они просто отсутствуют в роутере и вообще не нужны. Также удалил поддержку некоторых LCD, так как их драйвера почему-то не были найдены.

Пока пробывал компилировать вот получаю ошибку и никак ее побороть не могу. Пробывал уже и обращение к директории asm/, менять на asm-mips/, но никакого положительного сдвига, одна и таже ошибка. Как только доходит до компиляции drv_generic_parport.o, полкчаю ошибку и все останавливается.

gcc -DHAVE_CONFIG_H -I. -I/opt/include/python2.5 -D_GNU_SOURCE -Wall -W -fno-strict-aliasing -g -O2 -MT drv_generic_parport.o -MD -MP -MF .deps/drv_generic_parport.Tpo -c -o drv_generic_parport.o drv_generic_parport.c
In file included from /opt/include/linux/sched.h:18,
from /opt/include/linux/mm.h:4,
from /opt/include/linux/pagemap.h:10,
from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/asm/semaphore.h:31: error: expected specifier-qualifier-list before 'wait_queue_head_t'
/opt/include/asm/semaphore.h: In function 'sema_init':
/opt/include/asm/semaphore.h:67: error: 'struct semaphore' has no member named 'wait'
In file included from /opt/include/linux/signal.h:4,
from /opt/include/linux/sched.h:26,
from /opt/include/linux/mm.h:4,
from /opt/include/linux/pagemap.h:10,
from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/asm/signal.h: At top level:
/opt/include/asm/signal.h:20: error: conflicting types for 'sigset_t'
/opt/include/sys/select.h:38: error: previous declaration of 'sigset_t' was here
/opt/include/asm/signal.h:129: error: redefinition of 'struct sigaction'
/opt/include/asm/signal.h:131: error: expected ':', ',', ';', '}' or '__attribute__' before '.' token
/opt/include/asm/signal.h:142: error: redefinition of 'struct sigaltstack'
In file included from /opt/include/linux/signal.h:5,
from /opt/include/linux/sched.h:26,
from /opt/include/linux/mm.h:4,
from /opt/include/linux/pagemap.h:10,
from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/asm/siginfo.h:15: error: redefinition of 'union sigval'
/opt/include/asm/siginfo.h:26: error: redefinition of 'struct siginfo'
/opt/include/asm/siginfo.h:220: error: redefinition of 'struct sigevent'
In file included from /opt/include/linux/sched.h:80,
from /opt/include/linux/mm.h:4,
from /opt/include/linux/pagemap.h:10,
from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/linux/time.h:9: error: redefinition of 'struct timespec'
/opt/include/linux/time.h:88: error: redefinition of 'struct timeval'
/opt/include/linux/time.h:119: error: redefinition of 'struct itimerspec'
In file included from /opt/include/linux/sched.h:87,
from /opt/include/linux/mm.h:4,
from /opt/include/linux/pagemap.h:10,
from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/asm/processor.h:102: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'fpureg_t'
/opt/include/asm/processor.h:104: error: expected specifier-qualifier-list before 'fpureg_t'
In file included from /opt/include/asm/pgtable.h:18,
from /opt/include/linux/pagemap.h:15,
from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/asm/fixmap.h:58: error: expected declaration specifiers or '...' before 'pgprot_t'
In file included from /opt/include/linux/pagemap.h:15,
from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/asm/pgtable.h:192: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'invalid_pte_table'
/opt/include/asm/pgtable.h:198: error: expected ')' before 'pmd'
/opt/include/asm/pgtable.h:203: error: expected ')' before '*' token
/opt/include/asm/pgtable.h:208: error: expected ')' before 'pte'
/opt/include/asm/pgtable.h:209: error: expected ')' before 'pte'
/opt/include/asm/pgtable.h:215: error: expected ')' before '*' token
/opt/include/asm/pgtable.h:231: error: expected ')' before '*' token
/opt/include/asm/pgtable.h:252: error: expected ')' before 'pmd'
/opt/include/asm/pgtable.h:257: error: expected ')' before 'pmd'
/opt/include/asm/pgtable.h:263: error: expected ')' before 'pmd'
/opt/include/asm/pgtable.h:268: error: expected ')' before '*' token
/opt/include/asm/pgtable.h:278: error: expected ')' before 'pgd'
/opt/include/asm/pgtable.h:279: error: expected ')' before 'pgd'
/opt/include/asm/pgtable.h:280: error: expected ')' before 'pgd'
/opt/include/asm/pgtable.h:281: error: expected ')' before '*' token
/opt/include/asm/pgtable.h:297: error: expected ')' before 'pte'
/opt/include/asm/pgtable.h:298: error: expected ')' before 'pte'
/opt/include/asm/pgtable.h:299: error: expected ')' before 'pte'
/opt/include/asm/pgtable.h:300: error: expected ')' before 'pte'
/opt/include/asm/pgtable.h:302: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pte_wrprotect'
/opt/include/asm/pgtable.h:308: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pte_rdprotect'
/opt/include/asm/pgtable.h:314: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pte_mkclean'
/opt/include/asm/pgtable.h:320: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pte_mkold'
/opt/include/asm/pgtable.h:326: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pte_mkwrite'
/opt/include/asm/pgtable.h:334: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pte_mkread'
/opt/include/asm/pgtable.h:342: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pte_mkdirty'
/opt/include/asm/pgtable.h:358: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pgprot_noncached'
/opt/include/asm/pgtable.h:367: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pte_mkyoung'
/opt/include/asm/pgtable.h:402: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'mk_pte_phys'
/opt/include/asm/pgtable.h:411: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'pte_modify'
/opt/include/asm/pgtable.h:428: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/opt/include/asm/pgtable.h:434: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/opt/include/asm/pgtable.h:440: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/opt/include/asm/pgtable.h:448: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'swapper_pg_dir'
/opt/include/asm/pgtable.h:452: error: expected declaration specifiers or '...'

Break Action
17-07-2009, 11:05
before 'pte_t'
In file included from /opt/include/asm/pgtable.h:475,
from /opt/include/linux/pagemap.h:15,
from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/asm-generic/pgtable.h:4: error: expected ')' before '*' token
/opt/include/asm-generic/pgtable.h:13: error: expected ')' before '*' token
/opt/include/asm-generic/pgtable.h:22: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'ptep_get_and_clear'
/opt/include/asm-generic/pgtable.h:29: error: expected ')' before '*' token
/opt/include/asm-generic/pgtable.h:35: error: expected ')' before '*' token
In file included from /opt/include/linux/highmem.h:5,
from /opt/include/linux/pagemap.h:16,
from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/asm/pgalloc.h:70: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/opt/include/asm/pgalloc.h:83: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/opt/include/asm/pgalloc.h:96: error: expected ')' before '*' token
/opt/include/asm/pgalloc.h:103: error: expected ')' before '*' token
/opt/include/asm/pgalloc.h:108: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/opt/include/asm/pgalloc.h:120: error: expected ')' before '*' token
/opt/include/asm/pgalloc.h:127: error: expected ')' before '*' token
/opt/include/asm/pgalloc.h:133: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/opt/include/asm/pgalloc.h:138: error: expected ')' before '*' token
/opt/include/asm/pgalloc.h:142: error: expected ')' before '*' token
/opt/include/asm/pgalloc.h:146: error: expected ')' before '*' token
/opt/include/asm/pgalloc.h:148: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/opt/include/asm/pgalloc.h:158: error: expected '=', ',', ';', 'asm' or '__attribute__' before '*' token
/opt/include/asm/pgalloc.h:170: error: expected ')' before '*' token
/opt/include/asm/pgalloc.h:177: error: expected ')' before '*' token
In file included from /opt/include/asm-mips/io.h:15,
from drv_generic_parport.c:47:
/opt/include/linux/pagemap.h: In function 'page_cache_alloc':
/opt/include/linux/pagemap.h:36: error: dereferencing pointer to incomplete type
/opt/include/linux/pagemap.h: In function '_page_hashfn':
/opt/include/linux/pagemap.h:66: error: invalid application of 'sizeof' to incomplete type 'struct inode'
/opt/include/linux/pagemap.h:66: error: invalid application of 'sizeof' to incomplete type 'struct inode'
/opt/include/linux/pagemap.h:66: error: invalid application of 'sizeof' to incomplete type 'struct inode'
/opt/include/linux/pagemap.h:66: error: invalid application of 'sizeof' to incomplete type 'struct inode'
/opt/include/linux/pagemap.h: At top level:
/opt/include/linux/pagemap.h:82: error: expected ')' before '(' token
/opt/include/linux/pagemap.h:83: error: expected ')' before '(' token
/opt/include/linux/pagemap.h: In function 'grab_cache_page':
/opt/include/linux/pagemap.h:105: error: dereferencing pointer to incomplete type
In file included from drv_generic_parport.c:47:
/opt/include/asm-mips/io.h: At top level:
/opt/include/asm-mips/io.h:71: error: expected ')' before 'offset'
/opt/include/asm-mips/io.h: In function 'virt_to_phys':
/opt/include/asm-mips/io.h:240: error: 'PAGE_OFFSET' undeclared (first use in this function)
/opt/include/asm-mips/io.h:240: error: (Each undeclared identifier is reported only once
/opt/include/asm-mips/io.h:240: error: for each function it appears in.)
/opt/include/asm-mips/io.h: In function 'phys_to_virt':
/opt/include/asm-mips/io.h:258: error: 'PAGE_OFFSET' undeclared (first use in this function)
/opt/include/asm-mips/io.h: In function 'virt_to_bus':
/opt/include/asm-mips/io.h:266: error: 'PAGE_OFFSET' undeclared (first use in this function)
/opt/include/asm-mips/io.h: In function 'bus_to_virt':
/opt/include/asm-mips/io.h:271: error: 'PAGE_OFFSET' undeclared (first use in this function)
/opt/include/asm-mips/io.h: At top level:
/opt/include/asm-mips/io.h:305: error: expected ')' before 'val'
/opt/include/asm-mips/io.h:310: error: expected ')' before 'val'
/opt/include/asm-mips/io.h:316: error: expected ')' before 'val'
/opt/include/asm-mips/io.h:321: error: expected ')' before 'val'
/opt/include/asm-mips/io.h:327: error: expected ')' before 'val'
/opt/include/asm-mips/io.h:334: error: expected ')' before 'val'
/opt/include/asm-mips/io.h: In function 'inb':
/opt/include/asm-mips/io.h:342: error: expected ')' before 'u8'
/opt/include/asm-mips/io.h:342: error: invalid type argument of 'unary *'
/opt/include/asm-mips/io.h: In function 'inw':
/opt/include/asm-mips/io.h:349: error: expected ')' before 'u16'
/opt/include/asm-mips/io.h:349: error: invalid type argument of 'unary *'
/opt/include/asm-mips/io.h: In function 'inl':
/opt/include/asm-mips/io.h:354: error: expected ')' before 'u32'
/opt/include/asm-mips/io.h:354: error: invalid type argument of 'unary *'
/opt/include/asm-mips/io.h: In function 'inb_p':
/opt/include/asm-mips/io.h:359: error: 'u8' undeclared (first use in this function)
/opt/include/asm-mips/io.h:359: error: expected ';' before '__val'
/opt/include/asm-mips/io.h:361: error: '__val' undeclared (first use in this function)
/opt/include/asm-mips/io.h:361: error: expected ')' before 'u8'
/opt/include/asm-mips/io.h:361: error: invalid type argument of 'unary *'
/opt/include/asm-mips/io.h: In function 'inw_p':
/opt/include/asm-mips/io.h:369: error: 'u16' undeclared (first use in this function)
/opt/include/asm-mips/io.h:369: error: expected ';' before '__val'
/opt/include/asm-mips/io.h:372: error: '__val' undeclared (first use in this function)
/opt/include/asm-mips/io.h:372: error: expected ')' before 'u16'
/opt/include/asm-mips/io.h:372: error: invalid type argument of 'unary *'
/opt/include/asm-mips/io.h: In function 'inl_p':
/opt/include/asm-mips/io.h:380: error: 'u32' undeclared (first use in this function)
/opt/include/asm-mips/io.h:380: error: expected ';' before '__val'
/opt/include/asm-mips/io.h:382: error: '__val' undeclared (first use in this function)
/opt/include/asm-mips/io.h:382: error: expected ')' before 'u32'
/opt/include/asm-mips/io.h:382: error: invalid type argument of 'unary *'
/opt/include/asm-mips/io.h: At top level:
/opt/include/asm-mips/io.h:387: error: expected ';', ',' or ')' before '*' token
/opt/include/asm-mips/io.h:395: error: expected declaration specifiers or '...' before 'u8'
/opt/include/asm-mips/io.h: In function '__insb':
/opt/include/asm-mips/io.h:398: error: 'addr' undeclared (first use in this function)
/opt/include/asm-mips/io.h: At top level:
/opt/include/asm-mips/io.h:403: error: expected ';', ',' or ')' before '*' token
/opt/include/asm-mips/io.h:411: error: expected declaration specifiers or '...' before 'u16'
/opt/include/asm-mips/io.h: In function '__insw':
/opt/include/asm-mips/io.h:414: error: 'addr' undeclared (first use in this function)
/opt/include/asm-mips/io.h: At top level:
/opt/include/asm-mips/io.h:419: error: expected ';', ',' or ')' before '*' token
/opt/include/asm-mips/io.h:427: error: expected declaration specifiers or '...' before 'u32'
/opt/include/asm-mips/io.h: In function '__insl':
/opt/include/asm-mips/io.h:430: error: 'addr' undeclared (first use in this function)
drv_generic_parport.c: In function 'drv_generic_parport_open':
drv_generic_parport.c:162: warning: implicit declaration of function 'ioperm'
drv_generic_parport.c:167: warning: implicit declaration of function 'iopl'
drv_generic_parport.c: In function 'drv_generic_parport_direction':
drv_generic_parport.c:382: warning: implicit declaration of function 'outb'
drv_generic_parport.c: In function 'inb':
/opt/include/asm-mips/io.h:343: warning: control reaches end of non-void function
make[1]: *** [drv_generic_parport.o] Error 1
make[1]: Leaving directory `/opt/tmp/compiling/lcd4linux'
make: *** [all] Error 2

SpiderX
17-07-2009, 18:17
Меня больше интересует, что необходимо тут указать
PHP код:

System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
Так как я понимаю именно этот блок отвечает за совместиность с системой и железом роутера.
При кросс-компиляции, вы же нативно собираете.

По логам, проблем там вагон с прицепами, причем прицепы разные.
Ковырять сорцы придется скорее всего.

Break Action
17-07-2009, 18:54
Понятно, сейчас пробую обновить установленные пакеты и буду снова пытаться скомпилировать пакет.

Break Action
18-07-2009, 03:48
Кажется что вся проблема нативной компиляции описана в данной статье
http://www.linux.org.ru/books/Distro/lfsbook/chapter06/kernel.html

Break Action
18-07-2009, 23:26
Более детальное колупание в проблеме показало, что при компиляции проекта, требуется поддержка параллельного порта системе, которого конечно же у нас нет.
Прочитал про это здесь http://ssl.bulix.org/projects/lcd4linux/wiki/FAQ
И тут же указано, что parport как раз за этот порт и отвечает. Описано и возможное решение, но думаю вообще исключить все драйвера дисплеев для теста и попытаться скопилировать проект нативно.

Позже отпишуть от результатах.

PS: Данный топик уже превращается в блог сАмашедшего, юного, компилера.
:D

Break Action
19-07-2009, 00:53
ХА! Собрал!
Но! Опять, как только я запускаю lcd4linux, роутер уходит в ребут.

Теперь стоит только один вопрос:
Почему при запуске lcd4linux роутер перегружается?!
У меня есть только одна мысль - нехватка питания!

PS: Для тестов поставил Fedora 10, в VirtualBox'е, откомпилировал и настроил, lcd4linux - прекрасно запустился и заработал.

lly
19-07-2009, 08:42
Почему при запуске lcd4linux роутер перегружается?!
Kernel panic, выводи консоль и смотри.

Siddha
19-07-2009, 10:26
Может найдется добрый человек чтобы скомпилировать xmlrpc утилиту. Вторую неделю бьюсь, не получается нативно. Курил маны, форумы и рекомендации с http://xmlrpc-c.sourceforge.net/ - не идет каменный цветок...

theMIROn
19-07-2009, 20:28
Более детальное колупание в проблеме показало, что при компиляции проекта, требуется поддержка параллельного порта системе, которого конечно же у нас нет.Я тебе собирал используя optware, там для этого уже есть патч.
lly прав, подключай консоль, гляди в лог где падает.
без девайса - не помочь, я просто не смогу воспроизвести ситуацию. Всухую ковырять исходники - нужно немало времени.
ну или присылай мне дисплей в екатеринбург

Break Action
19-07-2009, 23:03
Нашел, как распаять консоль, на неделе буду пробывать.

Break Action
24-07-2009, 17:44
System types:
--build=BUILD configure for building on BUILD [guessed]
--host=HOST cross-compile to build programs to run on HOST [BUILD]
Подскажите плз, что необходимо указать для кросскомпиляции пакета, для дальнейшего использования на роутере?!

lly
24-07-2009, 18:24
Подскажите плз, что необходимо указать для кросскомпиляции пакета, для дальнейшего использования на роутере?!
Мог бы и сам подсмотреть в исходниках прошивки

--host=mipsel-linux

Break Action
24-07-2009, 20:29
Подскажите плз еще, я когда начинаю конфигурацию, то получаю вот такое в логею Нормально ли это или я что-то упустил?!

[root@fedora istat]# ./configure --host=mipsel-linux --prefix=/opt --exec-prefix=/opt
configure: WARNING: If you wanted to set the --build type, don't use --host.
If a cross compiler is detected then cross compile mode will be used.
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for mipsel-linux-strip... no
checking for strip... strip
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether to enable maintainer-specific portions of Makefiles... no
checking build system type... i686-pc-linux-gnu
checking host system type... mipsel-unknown-linux-gnu
checking for mipsel-linux-ranlib... no
checking for ranlib... ranlib
checking for mipsel-linux-g++... no
checking for mipsel-linux-c++... no
checking for mipsel-linux-gpp... no
checking for mipsel-linux-aCC... no
checking for mipsel-linux-CC... no
checking for mipsel-linux-cxx... no
checking for mipsel-linux-cc++... no
checking for mipsel-linux-cl.exe... no
checking for mipsel-linux-FCC... no
checking for mipsel-linux-KCC... no
checking for mipsel-linux-RCC... no
checking for mipsel-linux-xlC_r... no
checking for mipsel-linux-xlC... no
checking for g++... g++

lly
24-07-2009, 20:35
Подскажите плз еще, я когда начинаю конфигурацию, то получаю вот такое в логе. Нормально ли это или я что-то упустил?!
абсолютно нормально. Всегда можно проверить формат получившегося бинарника командой file.

Break Action
24-07-2009, 20:58
Только что скомпилировал и сразу решил запустить на роутере, результат получил ошибку

./istatd: line 1: syntax error: "(" unexpected

SpiderX
24-07-2009, 21:08
Бинарник левый.
"Среда" создавалась? (http://wl500g.info/showthread.php?t=9381)

lly
25-07-2009, 09:22
Только что скомпилировал и сразу решил запустить на роутере, результат получил ошибку

./istatd: line 1: syntax error: "(" unexpected
SpiderX скорее всего прав. Какой формат бинарника? должен быть:
dnsmasq: ELF 32-bit LSB executable, MIPS, MIPS32 version 1 (SYSV), dynamically linked (uses shared libs), not stripped

tlamer
03-12-2009, 22:35
написал прогу, пытаюсь откомпилить под раутер 500gp, скачал hndtools-mipsel-uclibc запустил компиляцию получил

tmp/ccJVwGLd.s: Assembler messages:
/tmp/ccJVwGLd.s:2336: Error: opcode not supported on this processor: mips1 (mips1) `ll $3,0($4)'
/tmp/ccJVwGLd.s:2338: Error: opcode not supported on this processor: mips1 (mips1) `sc $5,0($4)'


тогда написал hello world получил
opt/brcm/hndtools-mipsel-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.1.2/../../../../mipsel-linux-uclibc/bin/ld: warning: ld-uClibc.so.0, needed by /opt/brcm/hndtools-mipsel-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.1.2/../../../../mipsel-linux-uclibc/lib/libc.so, not found (try using -rpath or -rpath-link)
/opt/brcm/hndtools-mipsel-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.1.2/../../../../mipsel-linux-uclibc/lib/libc.so: undefined reference to `_dl_app_init_array'
/opt/brcm/hndtools-mipsel-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.1.2/../../../../mipsel-linux-uclibc/lib/libc.so: undefined reference to `_dl_app_fini_array'
/opt/brcm/hndtools-mipsel-uclibc/bin/../lib/gcc/mipsel-linux-uclibc/4.1.2/../../../../mipsel-linux-uclibc/lib/libc.so: undefined reference to `_dl_loaded_modules'
collect2: ld returned 1 exit status


что-то он ругается на то что не нашел libc хотя вроде там лежит-что похожее на линк.

Вообще у меня опыт работы под линукс почти нет, и под gcc тоже.

со 2 проблемой разобрался сам напутал пути (:
с первой можно сказать тоже, когда отключил boost, но честно говоря отказваться от бустра не хочется, из уста юзаются только header only билиотеки...

толи я опять что-то напутал... толи не все так просто..

с помощи cp -l создал в папке /opt/../..mipsel.../include копию на буст лежащий в инклудах

проблема в boost::format в чем именно дело разбиратся не стал, т.к. используется всего пару раз, заменил на stringstream

link0ln
20-02-2010, 10:38
Наверняка боянистая тема, но все, же!! уже 3и сутки парюсь...

Хочу свою софтину на С накатать, чтобы запускалась на роутере.

Сделал все как здесь http://kegel.com/crosstool/crosstool-0.43/doc/crosstool-howto.html

в итоге в /opt/crosstool/gcc-3.4.5-glibc-2.3.6/mips-unknown-linux-gnu/bin
появляется mips-unknown-linux-gnu-gcc

далее ./mips-unknown-linux-gnu-gcc test.c

заливаю откомпиленый a.out на роутер

запускаю ./a.out

выводит ./a.out: 1: Syntax error: "(" unexpected

:mad::mad::mad::mad::mad::mad::mad::mad:

al37919
20-02-2010, 11:15
если надо запускать софтину при наличии установленного optware, то надо ставить buildroot и optware-devel Для запуска без optware, то придется кросс-компилировать тем же тулчейном, что и прошивку.

Левые тьюториалы бездумно применять смысла нет

link0ln
20-02-2010, 11:23
если надо запускать софтину при наличии установленного optware, то надо ставить buildroot и optware-devel Для запуска без optware, то придется кросс-компилировать тем же тулчейном, что и прошивку.

Левые тьюториалы бездумно применять смысла нет

Как я понимаю buildroot и optware-devel придется ставить на флешку.
Ставить пробовал ipkg install buildroot, но выдает ошибку...

Есть ли готовые паки софта для флешки с buildroot и optware-devel?
буду рад ссылкам )

LnrMn
20-02-2010, 12:57
Если у тебя не сильно тяжелый софт, который ты собираешься писАть, рекомендую нативную компиляцию, прям на роутере...
Было описано, поищи...

link0ln
20-02-2010, 21:46
Все успешно решилось путем форматирования флехи в ext3fs.
Пришлось купить новую и отформатить ее. имхо прошлая моя флеха после этой операции умерла ))))

wget -O /tmp/prep_optware http://wd.mirmana.com/prep_optware

sh /tmp/prep_optware

ipkg-opt update

ipkg-opt install buildroot

export LD_LIBRARY_PATH=/opt/libf:$LD_LIBRARY_PATH

теперь gcc <file.c> работает )))))

ktulhu666
26-02-2010, 22:53
Подскажите, пожалуйста, как поставить gcc или cc. В пакетах http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/Packages не нашел

al37919
26-02-2010, 23:07
Подскажите, пожалуйста, как поставить gcc или cc. В пакетах http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable/Packages не нашел

ipkg install buildroot
ipkg install optware-devel

ktulhu666
26-02-2010, 23:49
ipkg install buildroot
ipkg install optware-devel

Спасибо большое.

lucky:)
02-05-2010, 00:51
Привет всем форумчанам!
Вот задался я такой назойливой идеей собрать прямо на роутере маленькое сишное приложение, которое выдавало бы в стандартный поток вывода "Hello world" и ... застрял.

Поставил optware-devel (насколько я понимаю этим жирным чудом можно горы свернуть):


ipkg update
ipkg install libidn
ipkg install optware-devel

libldn ставил отдельно потому что при простом ipkg update && ipkg install optware-devel установка затыкалась на этапе подмены симлинков и wget выходил из строя.

Кто-нибудь знает какие надо инклуды, ставится ли тулчейн вместе с этим огромным пакетом. Помогите утолить любопытство, если не жалко времени :)

Arthur_X
02-05-2010, 01:34
ipkg install buildroot
ipkg install optware-devel

optware-devel говоришь жирный?
buildroot жирней в 5 раз.

lucky:)
02-05-2010, 20:44
Спасибо, ребят!
Все получилось! :D

cfox
11-04-2011, 14:36
Люди добрые, помогите, такой вопрос, написал небольшую софтинку по работе на сях под asus 500, вроде скомпилилась и работает, но как только отмотируешь флешку, софтинка не запускается, как нужно сделать так, чтобы скомпилиный файл можно было запускать без флешки на асусе, всем зарание огромное спасибо :)

reiten
11-04-2011, 16:58
На флешке находится /opt? Какие сообщения об ошибках выдает программа?
Самым вероятным мне кажется вариант, что программа скомпонована с динамическими библиотеками, которые лежат на флешке. Если это так, то решение - пересобрать программу со -static.

LnrMn
11-04-2011, 17:03
Люди добрые, помогите, такой вопрос, написал небольшую софтинку по работе на сях под asus 500, вроде скомпилилась и работает, но как только отмотируешь флешку, софтинка не запускается, как нужно сделать так, чтобы скомпилиный файл можно было запускать без флешки на асусе, всем зарание огромное спасибо :)

Читайте про нативную компиляцию и http://wl500g.info/showthread.php?t=19022&highlight=%F3%F1%F2%E0%ED%EE%E2%EA%E0+%E2%ED%F3%F2 %F0%E5%ED%ED%FE%FE+%EF%E0%EC%FF%F2%FC

andr128
11-04-2011, 18:13
На флешке находится /opt? Какие сообщения об ошибках выдает программа?
Самым вероятным мне кажется вариант, что программа скомпонована с динамическими библиотеками, которые лежат на флешке. Если это так, то решение - пересобрать программу со -static.

Со статик файлы огромные будут, а места в роутере (во флэшь) не так много. Лучше наверно сделать кросскомпиляцию на ПК например как здесь (http://code.google.com/p/wl500g/wiki/CompilingCustomFirmware) описано. Установить на ПК необходимые пакеты и прошивку можно сделать и программы под роутер компилировать. Библиотеки при этом будут использоваться те которые в роутере.

al37919
12-04-2011, 06:12
топикпастер не может найти свой вопрос ;)
Как в случае нативной компиляции, так и при кросскомпиляции по стандартной инструкции в результате будут получены зависимости от библиотек optware. Т.е. либо придется положить все эти библиотеки на роутер. Другой вариант, как собственно пишет andr128 --- кросс компилировать пакет тем же тулчейном, что используется для компиляции прошивки. Но тут придется проявить некоторое творчество, т.к. пошаговой инструкции по этому варианту насколько я знаю еще не написано.

pretoreani
21-06-2011, 09:45
Подскажите, как скомпилить простенькую прогрмамку под устройство в сабже - под седьмой виндой либо прямо на роутере?
Под линукс писал на C++ - вопрос только в специфике - чем именно компилить и с какими параметрами.

ryzhov_al
21-06-2011, 10:06
Подскажите, как скомпилить простенькую прогрмамку под устройство в сабже - под седьмой виндой либо прямо на роутере?
Необходимо ознакомиться с первыми тремя-четырьмя темами, которые выдаются в поиске по слову "компиляция" на форуме.

aldore
04-07-2011, 14:27
Всем привет. У меня возник вопрос, по форуму лазил но ответа не нашел.

Имеется роутер D-link dir 320 с прошивкой от vimpic.
Последовательность действий была примерно такая:


ipkg.sh update
ipkg.sh install ipkg
ipkg update
ipkg install optware-devel
ipkg install buildroot


Вроде бы все поставилось.
ipkg list_installed выдает следущее



apr - 1.3.12-1 -
apr-util - 1.3.9-1 -
autoconf - 2.68-1 -
automake - 1.11.1-2 -
bash - 3.2.49-1 -
bison - 2.4.1-1 -
buildroot - 4.1.1-13 -
bzip2 - 1.0.6-1 -
coreutils - 8.4-1 -
cyrus-sasl-libs - 2.1.23-2 -
diffutils - 3.0-1 -
e2fslibs - 1.41.12-1 -
expat - 2.0.1-1 -
file - 5.07-1 -
findutils - 4.2.32-1 -
flex - 2.5.35-1 -
gawk - 4.0.0-1 -
gdbm - 1.8.3-2 -
glib - 2.20.4-1 -
groff - 1.19.2-2 -
gzip - 1.2.4a-4 -
ipkg - 0.99.163-2 -
libdb - 4.2.52-3 -
libidn - 1.21-1 -
libtool - 1.5.26-1 -
libuclibc++ - 0.2.2-9 -
libxml2 - 2.7.8-1 -
m4 - 1.4.13-1 -
make - 3.82-1 -
mc - 4.7.5.1-1 -
ncurses - 5.7-1 -
ncursesw - 5.7-1 -
neon - 0.29.3-1 -
openldap-libs - 2.3.43-2 -
openssl - 0.9.7m-5 -
optware-devel - 6.8-10 -
patch - 2.6.1-1 -
perl - 5.8.8-23 -
pkgconfig - 0.15.0-2 -
psmisc - 22.13-1 -
python25 - 2.5.6-1 -
readline - 6.1-2 -
rsync - 3.0.8-1 -
sed - 4.2.1-1 -
slang - 2.1.4-1 -
sqlite - 3.7.3-1 -
svn - 1.6.15-1 -
tar - 1.25-1 -
tcl - 8.4.19-2 -
uclibc-opt - 0.9.28-13 -
wget-ssl - 1.12-2 -
zlib - 1.2.5-1 -


Ну и имеется примерно такой файл hellow.c



#include <stdlib.h>
#include <stdio.h>

int main() {
printf("Hello world!\n");
return 0;
}


Вопрос: как скомпилить файл чтобы он запустился на роутере?

Я пробовал еще кросс-компиляцию, но что то с ней тоже не сложилось(

В общем кто знает как скомпилить такой файлик - помогите.

ryzhov_al
04-07-2011, 16:32
$ gcc ./hellow.c -o ./hello
./hellow.c:7:11: warning: no newline at end of file
$ ./hello
Hello world!

aldore
05-07-2011, 07:02
Спасибо, работает. Меня что то смутило то что я не нашел gcc в ipkg list_installed и подумал что он не поставился.

LnrMn
05-07-2011, 08:24
Имеется роутер D-link dir 320 с прошивкой от vimpic.
Последовательность действий была примерно такая:


ipkg.sh update
ipkg.sh install ipkg
ipkg update
ipkg install optware-devel
ipkg install buildroot






Должно быть ipkg.sh install ipkg-opt

jahmb
04-11-2011, 13:14
всем доброго времени суток :)
прошу помощи, понадобилось мне поставить пакет buildroot.
Команда ipkg install buildroot может висеть бесконечно долго, попытки выкачать пакет отдельно wget-ом к успеху не приводят, файл начинает качаться заново после того как скачает 21мб из 41 )
Скачать на комп также не получается, загрузка постоянно начинается снова.
Не мог бы кто-нибудь выложить этот пакет куда нибудь?
заранее спасибо.

Capitan
04-11-2011, 13:53
всем доброго времени суток :)
прошу помощи, понадобилось мне поставить пакет buildroot.
Команда ipkg install buildroot может висеть бесконечно долго, попытки выкачать пакет отдельно wget-ом к успеху не приводят, файл начинает качаться заново после того как скачает 21мб из 41 )
Скачать на комп также не получается, загрузка постоянно начинается снова.
Не мог бы кто-нибудь выложить этот пакет куда нибудь?
заранее спасибо.

Ни с одного из репозиториев не грузится?
http://ipkg.nslu2-linux.org/feeds/optware/oleg/cross/stable
http://ipkg3.nslu2-linux.org/feeds/optware/oleg/cross/stable
http://ftp.osuosl.org/pub/nslu2/feeds/optware/oleg/cross/stable

Попробуйте отсюда:
http://www.archive-rt.tk/feeds/optware/oleg/cross/stable/