Цитата(Огурцов @ Nov 12 2008, 12:18)

Заменил оригинальные файлы на кроссовые - 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

и пр. нужное для компиляции.