Перейти к содержанию
    

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

 

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

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нашел crti.S

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Заменил оригинальные файлы на кроссовые - 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 :) и пр. нужное для компиляции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

А тут описывается как его собирать: http://www.gnuarm.com/support.html

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Кросскомпилятор ARM под цигвином есть

 

Да гцц собирается. Ядро - хрен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

 

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

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

 

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

 

 

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

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

 

 

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

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

 

gcc -E crt0.S -o crt0.s

Работает )

 

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если бы. Таргет - в сабже.

В саббже нет таргета. там только есть слово 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В саббже нет таргета. там только есть слово BusyBox.

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

cat email.txt | sendmail -w 20 -S smtp.mail.ru -f [email protected] -aulogin -appass [email protected]

 

или

<email.txt sendmail -w 20 -S smtp.mail.ru -f [email protected] -aulogin -appass [email protected]

 

в файле 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:<[email protected]>\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

Изменено пользователем VDV

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

#!/bin/sh

 

cat << EOF | sendmail -w 20 -S smtp.server.adr:port -f [email protected] -auLOGIN -apPASS [email protected]

 

my message

EOF

 

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

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Попробуйте Tiny Core Linux под x86 с

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

 

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...