Это кросс-компиляция на той же машине, где я собрал полностью прошивку для Асуса.
Printable View
значит между кросс-компиляцией и нормальной компиляцией имеются различия. прямо в роутере все отлично компиляется.
может, чтоб не мучить расскажите, как компилировать в роуторе
Очень просто.
ipkg install optware-devel
подождать, пока все 70 МБайт (или около того) девелоперского набора скачаются и установятся.
Затем распаковать содержимое архива с исходниками на винт.
Перейти в каталог с исходниками:
cd /tmp/harddisk/dbhub-0.441 (ну или где там у тебя каталог будет лежать)
затем сконфигурировать
./configure --prefix=/opt
затем скомпилировать:
make
или же
make install (чтобы скомпилированные бинарники и-что-там-еще сразу скопировались в нужные каталоги)
Все.
Кстати, а есть ли средство делать внутри роутера ipkg-шки? Имеется в виду уже что-то готовое, без опиливания рашпилем;)
Да вроде рашпиля не требуется. Сам я пока не пробовал, вот здесь вроде бы все понятно описано.
Т.е. один раз для контретного пакета все настроить, а потом только обновленные файлы по мере выхода новых версий подкидывать.
[admin@(none) root]$ ipkg install optware-devel
Installing optware-devel (6.8-6) to root...
Downloading http://ipkg.nslu2-linux.org/feeds/un...re-devel_6.8-6
_mipsel.ipk
Installing buildroot (4.1.1-12) to root...
Nothing to be done
An error ocurred, return value: -1.
Collected errors:
ERROR: Package buildroot (parent buildroot) is not available from any configured
src.
Failed to download buildroot. Perhaps you need to run 'ipkg update'?
[admin@(none) root]$
ХЗ. Странно. Попробуй скачать пакет "руками", закинуть его на винт и установить отдельно:
ipkg install /tmp/harddisk/buildroot_4.1.1-12_mipsel.ipk
ну или куда ты там его положишь. А потом опять
ipkg install optware-devel
пробовал все тоже самое
[admin@(none) root]$ ipkg install /opt/tmp/buildroot_4.1.1-12_mipsel.ipk
Installing buildroot (4.1.1-12) to root...
An error ocurred, return value: 1.
Collected errors:
Package buildroot wants to install file /opt/include/iconv.h
But that file is already provided by package libiconv
[admin@(none) root]$
[admin@(none) root]$
Переустановил libiconv
[admin@(none) root]$ ipkg install -force-reinstall libiconv
Reinstalling libiconv (1.11-2) on root...
Downloading http://ipkg.nslu2-linux.org/feeds/un...onv_1.11-2_mip
sel.ipk
Configuring libiconv
Successfully terminated.
А потом buildroot ответ тот же
Кажется я понял. Ты не перешел на альтернативный репозитарий. Если нет желания иметь очень больших проблем с установкой и работой пакетов, то на альтернативный репозитарий нужно переходить обязательно.
Вот здесь имеется скриптик, который позволит это дело осуществить "одним нажатием кнопки". Имей в виду - все пакеты будут переустановлены из нового репозитария.
И кстати, пакет libiconv придется удалить. Ибо его в альтернативном репозитарии нет. Отдельные библиотеки iconv будут после установки девелоперского пакта, и их будет вполне хватать для нормальной работы (и компиляции). Но если уж очень захочется иметь полноценный libiconv, то его вполне можно будет скомпилить и установить самому. Что я, в-общем-то, и сделал.
Все переустановил при компиляции ошибка
[admin@(none) root]$ cd /opt/hub/dbhub-0.441./configure --prefix=/opt
-sh: cd: can't cd to /opt/hub/dbhub-0.441./configure
[admin@(none) root]$ make
make: *** No targets specified and no makefile found. Stop.
[admin@(none) root]$ cd /opt/hub/dbhub-0.441
[admin@(none) dbhub-0.441]$ ./configure --prefix=/opt
-sh: ./configure: Permission denied
[admin@(none) dbhub-0.441]$ cd /opt/hub/dbhub-0.441./configure --prefix=/opt
-sh: cd: can't cd to /opt/hub/dbhub-0.441./configure
[admin@(none) dbhub-0.441]$ make
/bin/sh ./config.status --recheck
running /bin/sh ./configure --no-create --no-recursion
checking for a BSD-compatible install... /opt/bin/install -c
checking whether build environment is sane... yes
checking for gawk... gawk
checking whether make sets ${MAKE}... yes
checking whether build environment is sane... yes
checking for gcc... no
checking for cc... no
checking for cc... no
checking for cl... no
configure: error: no acceptable C compiler found in $PATH
make: *** [config.status] Error 1
[admin@(none) dbhub-0.441]$
:eek:
Разве же я так писАл! Зачем же две абсолютно разных команды объединять в одну (не поставив между ними даже пробела? :D )
Если уж так прямо распирает все выполнить одной командой, то можно сделать так:
А компиляция естественно ошибки выдает, потому что ты мало того, что конфигурирование не выполнил, но даже в каталог исходников не вошел :DCode:cd /opt/hub/dbhub-0.441 && ./configure --prefix=/opt && make install
раз уж похвастались libiconv скомпилированным под новый репозитарий, поделитесь, а то самба 3 на кодировки ругается в лог, а они как раз в iconv кажется сидят
Не беспокойтесь. Со скомпилированным iconv самба ругается точно так же. и точно так же при этом нормально работает. :)
Честно говоря даже не знаю, что там именно нужно выкладывать. Там ведь библиотеки всякие и т.п. Оно у меня само установилось куда нужно по make install. Никаких особых дивидендов полный пакет не дает, за исключением того, что можно ручками конвертировать файлы из одной кодировки в другую.
Кто-нибудь aircrack-ng скомпилирует?
Пытаюсь собрать MTR:
Как ему помочь?Quote:
checking for socket... yes
checking for gethostbyname... yes
checking for seteuid... yes
checking for res_mkquery... no
checking for res_mkquery in -lbind... no
checking for res_mkquery in -lresolv... no
checking for __res_mkquery in -lresolv... no
configure: error: No resolver library found
решил скомпилировать на роутере нативно samba 3.0.32 , так как 3.2.1 что-то с виндовыми машинами плохо работает.
В общем скачал исходники с самба.орг распаковал, зашел в папку сорцев запустил ./configure - отработало.
запустил make
в процессе компиляции один раз споткнулся, доустановил пакел cups-dev
и продолжил компиляцию.
но в логах всплыло такое вот:
насколько это скажется на работе скомпилированной самбы? (хотя вроде бы все скомпилировалось)Code:Compiling lib/system.c
lib/system.c: In function `sys_memalign':
lib/system.c:53: warning: return makes pointer from integer without a cast
.....
Compiling nsswitch/winbindd.c
nsswitch/winbindd.c: In function ‘winbind_check_sighup’:
nsswitch/winbindd.c:740: warning: passing argument 5 of ‘msg_reload_services’ discards qualifiers from pointer target type
сам отвечу:)
в общем в итоге при запуске хоть smbd, хоть nmbd получаю segmentation fault.
ДД,
мы сами не местные, в репозитории савсэм старая версия, не скомпилит ли
кто под наш роутер?
http://www.heyu.org/download/heyu-2.3.2.tgz
Заранее спасибо,
eugenem
Помогите скомпилить:
http://download.savannah.gnu.org/rel...e-2.1.1.tar.gz
с патчем:
http://download.devbase.at/voip/linphone-2.1.1.patch
и ещё вот это:
http://download.devbase.at/voip/yeaphone-0.1.5.tar.gz
для WL-500GP
ipk-пакет в аттаче
раз уж имеется тема такая-скомпильте для роутера этот файлик мне, люди добрые=)
http://sourceforge.net/project/showf...group_id=12924
для kernel 2.4.20 разумеется
и киньте на файлообменник пожалуйста что выйдет)
просто не разбираюсь особо в линухах и не вышло у меня скомпилить=(
A_Dick
Похоже придется всё-таки тебе поразбираться в Linux'ах ;)
При компиляции идет предупреждение:А по ссылке патча нет... 404 Not foundCode:Kernels 2.4.19 and 2.4.20 are buggy! Be sure to install patch from:
http://www.ee.oulu.fi/~tuukkat/quickcam/linux-2.4.20-videodevfix.patch
Модуль скомпилировал, но проверить негде. В архив вложил измененный под кросс-компиляцию Makefile, достаточно поменять LINUX_DIR на нужный путь и должно компилить.
Всем привет!
Установил весь toolchain, собрал работающую прошивку, т.е. кросс-компиляция 100% работает.
Попробовал откомпилировать простенькую программку:
Вот так:Code:#include <stdio.h>
int main(int argc, char **argv)
{
printf("Hello world!");
return 0;
}
Получился ELF размером 15962 байта.Code:mipsel-linux-gcc -o hello hello.c
На x86 машине на которой компилировал ессно выдаёт:
Но и на раутере WL500gPV2 (поместил на флэшке, примонтированной в /opt прям в корень) выдаёт:Code:bash: ./hello: cannot execute binary file
Что я делаю не так?Code:-sh: ./hello: not found
Если я в своих Makefile'ах (другая программа - чуть посложнее hello world ;)) поставлю вместо "CC = g++" -> "CC = mipsel-linux-g++" - этого достаточно?
(компиляция проходит успешно, ELF получается, но на раутере почему-то не работает так же как и hello world)
И с этим разобрался!!! :D
Добавил при линковке ключ:
Но хотелось бы чтоб ELFники были поменьше...Code:-static
Что надо сделать, чтобы библиотеки использовать динамически и чтоб ELF их находил - кто знает?
Можно ещё компилировать без отладочной информации и с оптимизацией по размеру (в ущерб производительности видимо). Ключ компилятора -Os. У готового бинарника убрать отладочную информацию можно командой strip.
А бинарники вроде и так динамически собираются (сам же говоришь что без -static динамически собирались). Если тулчейн тот же, которым корневая фс собиралась, то делать ничего вроде бы и не надо, ну может быть прописать LD_LIBRARY_PATH=/lib:<путь к твоим библиотекам>.
А вообще при компиляции указываешь -L<путь к библиотеке> и -l<сама библиотека>. Например, если у тебя на компе в /opt/mips-lib/ лежит математическая библиотека libm.so, то указываешь mipsel-linux-gcc -L/opt/mips-lib -lm -o hello hello.c. Эту libm.so потом нужно ещё на роутер скопировать, если её там нету.
Есть Logitech Quickcam Messenger (0x046D, 0x08F0).
Здесь есть драйвер для нее. Задача - скомпилировать под ядро 2.4.37. Прошу помощи.
Насколько я понял, писать собственные программы для роутера можно только на С, ибо библиотека С++ для архитектуры mipsel находится в стадии альфа и не пригодна для использования. Не будет ли кто-нибудь так добр чтобы объяснить как скомпилировать собственную программу типа "Hello World" на С нативно на самом роутеру и с помощью тулчейна =)
P.S. Заранее спасибо за любую ценную информацию по теме...
P.S.2. Отвечая на свой вопрос:
Чтобы скомпилировать программу на "большом" компьютере для роутера надо установить тулчейн (не раз обсуждалось на форуме), потом найти в папочке /optware/toolchain/mipsel-linux-uclibc/gcc-4.1.1-uclibc-0.9.28/bin компилятор mipsel-linux-g++ и с помощью него компилировать бинарные файлы, которые не хотят исполняться на PC, зато замечательно отрабатывают на роутере )
с такой темой сталкнулся
помогло
устанавливается долго! занимает около 200 метровCode:ipkg install optware-devel
ipkg install buildroot
после установки ... заметил много что ls стал другим ...
лесится просто...
создал файлик main.cppCode:ipkg remove coreutils
компилилCode:#include <stdio.h>
int main(int argc, char** argv)
{
printf("Hi! My name is Router :)\n");
return 0;
}
Code:g++ main.cpp -o myname && ./myname
вот только coreutils удалять не стоит, большого смысла давать C файлу расширение .cpp тоже нет и компилять C файлы с помощью g++ тоже ни к чему, когда есть gcc. А в остальном все так.
KAMEHb, большое спасибо ;) Начальный толчок дали... смог написать небольшую программку на С++ с использованием ООП, скомпилировать и запустить... дальше уже своим ходом (с)... Остаётся вопрос как тоже самое сделать с помощью тулчейна... Скачал его, скомпилировал rtorrent, набрав make rtorrent... Куда ложить свои исходники и как компилировать под архитектуру роутера разобраться не могу... И ещё такой вопрос, зачем удалять coreutils. Вроде и с ним всё работает нормально ?
В будующем хотел написать подобие FChat-а... Но писать на чистом С, без поддержки ООП мне кажется немного неправильно, поэтому интересно какие подводные камни меня могут ожидать)Quote:
Нет не только, всё зависит от того что конкретно Вы хотите написать.