Jump to content

    
Sign in to follow this  
VCucumber

BusyBox для чайника

Recommended Posts

Заменил оригинальные файлы на кроссовые - gcc уже работает. Не работает ld:

 

Интересно, что crti.o вообще нет никакого в cygwin, хотя поставил вроде бы весь. Нашел его в баунти-8.0.4, но он, вероятно, для i386. Нашел crti.S в uClibc, как собриать - не известно, под cygwin (уже?) не собирается.

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

Задачу проясните поподробнее. Например, 32-бит ARM9, для которого есть кросс-средства. Если просто под linux что-то писать, то логичнее под ним все и делать. Практически в любом дистрибутиве идут средства разработки для используемой платформы.

uClibc это системная библиотека, ориентированная на микроконтроллеры.

Share this post


Link to post
Share on other sites
Нашел crti.S

 

Ооо, да, большая буква S :)

 

Когда хелловорлд надоест и задумаете собрать ядро линуха для Вашего таргета под цигвином, будете весьма огорчены - изобретатели тамошнего (линухового) процесса сборки решили, что будет нифигово иметь файлы .S и .s - конечно, для винды (и цигвина) это один и тот же файл, и как следствие - ничего не собирается. Я понасиловал make-файл пару дней на предмет избавления от регистрозависимости да так и бросил.

 

Это так, информация к размышлению...

Share this post


Link to post
Share on other sites
Когда хелловорлд надоест и задумаете собрать ядро линуха для Вашего таргета под цигвином, будете весьма огорчены - изобретатели тамошнего (линухового) процесса сборки решили, что будет нифигово иметь файлы .S и .s - конечно, для винды (и цигвина) это один и тот же файл, и как следствие - ничего не собирается. Я понасиловал make-файл пару дней на предмет избавления от регистрозависимости да так и бросил.

 

Это так, информация к размышлению...

Полностью присоединяюсь к высказыванию, опыт был печальный при переносе с win на linux в названиях заголовочных файлов из стандартной библиотеки.

Share this post


Link to post
Share on other sites
Заменил оригинальные файлы на кроссовые - gcc уже работает. Не работает ld:

 

Интересно, что crti.o вообще нет никакого в cygwin, хотя поставил вроде бы весь. Нашел его в баунти-8.0.4, но он, вероятно, для i386. Нашел crti.S в uClibc, как собриать - не известно, под cygwin (уже?) не собирается.

Боюсь, Вы вообще не туда копаете.

Для компиляции программы gcc нужны ВСЕ ЕГО части + GLIBC для той-же платформы (это как минимум)

Под чем компилировать - вопрос отдельный, но не забывайте, что cygwin - это ЭМУЛЯТОР unix environment и он, естественно хуже чем unix. В том числе и Linux.

Если хотите программу под Windows/Cygwin - используйте то, что идет в самом Cygwin. Часто в Cygwin идут еще и MinGW. Иногда они конфликтуют.

Если хотите программу под, скажем, ARM9 Linux, то Вам НУЖЕН ПОЛНЫЙ кросскомпилятор GCC + GLIBC для ЭТОЙ платформы.

Он как правило имеет имя arm-linux-gcc, или arm-unknown-linux-gcc, или arm-uclibc-linux-gcc и тп.

Вместо GLIBC можно использовать uClibc или newlib.

Файл crt0.o - это часть libc (glibc, uClibc, newlib). libc должна быть скомпилирована ТЕМ ЖЕ компилятором, которым Вы компилируете программу.

 

Так что возмите КРОСС-компилятор для ARM9 ПОЛНОСТЬЮ.

Не знаю, есть ли такие под cygwin.

 

crt0.S - исходник на ассемблере требующий препроцессинга.

crt0.s - исходник на ассемблере после препроцессинга. Получают его из crt0.S. Примерно так

gcc -E crt0.S -o crt0.s

В cygwin у Вас будут с этим проблемы. Часто неразрешимие. Потому как компилятор по регистру буквы (S или s) решает что с ним делать. На мелких проектах с малым количеством таких файлов можно долго и нудно править Makefile. На большых (с большим количеством таких файлов) - все равно не удастся отследить все проблемы.

 

Раз у Вас есть Linux в VMWare, то рекомендую там все и делать. Разумеется кросскомпиляторов в Ubuntu нет. Только родные.

Обычно в Linux компиляторы, и прочие программы нужные программисту не ставятся по умолчанию. Нужно доставить пакеты. Особенно пакеты в имени которых есть -dev. Это Development пакет, то есть содержищий заголовочные файлы, библиотеки с отладочной инфой, файлы crt0.o :) и пр. нужное для компиляции.

Share this post


Link to post
Share on other sites
Правильно устанавливать кросс-компилятор, а не менять.

Задачу проясните поподробнее. Например, 32-бит ARM9, для которого есть кросс-средства.

Ну да, согласен. Только это типа "хорошо быть богатым и здоровым".

Кросстулзов уже перепробавал. В частности, под Cygwin ставил Macraigor GNU Tools Suite for ARM. Но работает пока лишь так, как я написал выше.

 

Если просто под linux что-то писать, то логичнее под ним все и делать

Если бы. Таргет - в сабже. Писать что либо под ним в принципе нельзя. Или в лучшем случае это будет еще один круг в обход непосредственной цели - писать программу.

 

Как вариант "полноценного" линуса - баунти 8.04, под виртуальной машиной. Может, конечно, есть что-то и лучше, но этот первый и единственный, который поставился и работает так, как я от него ожидал.

 

 

Ооо, да, большая буква S

Да, грабельки. Жаль, но cygwin был бы более удобен, т.к. у него файловая система доступна через win, а значит доступны все привычные тулзы.

 

 

Боюсь, Вы вообще не туда копаете.

Ага. Пока я не знаю, куда копать, поэтому копаю во все стороны.

 

gcc -E crt0.S -o crt0.s

Работает )

 

 

О, да, наверно весьма полезный линк.

Share this post


Link to post
Share on other sites
Кросскомпилятор ARM под цигвином есть: http://www.gnuarm.com/files.html

Правильный компилер - поставился и скомпилил с полпинка, с нескольких пинков связал. :yeah:

 

Сейчас вопрос с MIPSом. Если нечто подобно-рабочее для MIPSа ? С Macraigor`ом, как я понял, не все в порядке - вероятно, нужно его настраивать неподеццки.

У меня есть какой-то кросстулз, но там все файлы типа elf (внутри файла). Реально ли их запустить под тем же cygwin ?

Share this post


Link to post
Share on other sites
Если бы. Таргет - в сабже.

В саббже нет таргета. там только есть слово BusyBox. А это не платформа. Это всего лиш просто программа. Можно его скомпилить для любой (почти) платформы.

Правильный компилер - поставился и скомпилил с полпинка, с нескольких пинков связал. :yeah:

 

Сейчас вопрос с MIPSом. Если нечто подобно-рабочее для MIPSа ? С Macraigor`ом, как я понял, не все в порядке - вероятно, нужно его настраивать неподеццки.

Если у Вас таки MIPS платформа (и как я понимаю это MIPS Linux) то Вам может стоит посмотреть тут?

MIPS SDE Lite. http://www.mips.com/products/software-tools/ Пользуюсь немного. Это mips-elf таргет - для "софта без ОС".

И тут само собой. http://www.linux-mips.org/wiki/Main_Page

Для mips-linux мы используем собранный производителем процессора компилятор (текущий gcc-4.2) под Linux host.

Cygwin не пользуем.

У меня есть какой-то кросстулз, но там все файлы типа elf (внутри файла). Реально ли их запустить под тем же cygwin ?

Нет. Cygwin эмулирует ТОЛЬКО окружение. Бинарная платформа PE (exe файлы, внутри MZ :) ) Это скорее всего под Линукс host.

Share this post


Link to post
Share on other sites
В саббже нет таргета. там только есть слово BusyBox.

Это (не?)переводимая игра слов. В общем, BusyBox - ключевое слово, а платформы - пока нет. Или так: а платформы пока нет. Ищу, в общем.

 

Если у Вас таки MIPS платформа (и как я понимаю это MIPS Linux) то Вам может стоит посмотреть тут?

Да, и я что-то даже качал. Но спасибо, что напомнили, в ворохе ссылок - попробую по второму кругу.

Share this post


Link to post
Share on other sites

кто-нибудь пробовал отправить сообщение через sendmail в busybox-е?

 

пишу строку (отправить с одного ящика на mail.ru на другой там же)

cat email.txt | sendmail -w 20 -S smtp.mail.ru -f from@mail.ru -aulogin -appass to@mail.ru

 

или

<email.txt sendmail -w 20 -S smtp.mail.ru -f from@mail.ru -aulogin -appass to@mail.ru

 

в файле email.txt написано

test email

 

ни в какую не хочет слать.

сниффером вижу, коннект есть, логин проходит, а дальше не шлются данные.

залез в исходник посмотреть, все равно не понимаю, чего ему не хватает....

 

версия: busybox 14.3

судя по коду должен передать поля To, затем послать DATA, затем поток stdin, пока не кончится

 

> 2009/11/17 11:12:54.714149 length=6 from=0 to=5

NOOP\r

< 2009/11/17 11:12:54.733175 length=51 from=0 to=50

220 mail.ru ESMTP Tue, 17 Nov 2009 21:12:54 +0300\r

< 2009/11/17 11:12:54.737410 length=8 from=51 to=58

250 OK\r

> 2009/11/17 11:12:54.741252 length=11 from=6 to=16

EHLO none\r

< 2009/11/17 11:12:54.765051 length=118 from=59 to=176

250-mx75.mail.ru Hello none [195.131.192.186]\r

250-SIZE 31457280\r

250-8BITMIME\r

250-AUTH PLAIN LOGIN\r

250 PIPELINING\r

> 2009/11/17 11:12:54.773122 length=12 from=17 to=28

AUTH LOGIN\r

< 2009/11/17 11:12:54.796860 length=18 from=177 to=194

334 ...\r

> 2009/11/17 11:12:54.800690 length=10 from=29 to=38

....\r

< 2009/11/17 11:12:54.824892 length=18 from=195 to=212

334 ....\r

> 2009/11/17 11:12:54.828494 length=14 from=39 to=52

....\r

< 2009/11/17 11:12:54.861185 length=30 from=213 to=242

235 Authentication succeeded\r

> 2009/11/17 11:12:54.865406 length=26 from=53 to=78

MAIL FROM:<from@mail.ru>\r

< 2009/11/17 11:12:54.888926 length=8 from=243 to=250

250 OK\r

> 2009/11/17 11:12:54.900589 length=3 from=79 to=81

.\r

< 2009/11/17 11:12:54.924854 length=26 from=251 to=276

500 unrecognized command\r

sendmail: . failed

alpha:/ # < 2009/11/17 11:12:54.953403 length=40 from=277 to=316

421 mx75.mail.ru lost input connection\r

Edited by VDV

Share this post


Link to post
Share on other sites

разобрался все-таки!

 

#!/bin/sh

 

cat << EOF | sendmail -w 20 -S smtp.server.adr:port -f from@mail.addr -auLOGIN -apPASS to@mail.addr

 

my message

EOF

 

Логин и пароль вводятся после -au и -ap без пробела.

Перед сообщением обязательна пустая строка!

После EOF обязателен перевод строки!

Share this post


Link to post
Share on other sites

Попробуйте Tiny Core Linux под x86 с блекджеком и шлюхами BusyBox и "менеджером пакетов". Полученный опыт должен портироваться под любую архитектуру.

Share this post


Link to post
Share on other sites
Попробуйте Tiny Core Linux под x86 с

Блин... как-то раньше мимо него проходил. Дистрибутив - супер! Ничего лишнего, как говорится... Вот только ядро они не правильное выбрали... Хотя сколько там его пересобирать... За напоминание о том что есть такой дистр - спасибо!!!

 

блекджеком и шлюхами

Бендер? :biggrin:(не Остап)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this