Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: программирование at91sam9xeek
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Отладочные платы
sangre
есть плата at91sam9xeek, на ней установлен линукс, взятый с linux4sam, своя операционка - ubuntu 10.10 i386, задача для начала простая - написать hello world для платы. собственно привет мир написан, на убунте установлен arm-linux-gnueabi, еще собарил кросс компиляторы по известным схемам из нета. дальше, привет мир компилируется командой arm-linux-gnueabi-gcc, переписываю его на плату, запускаю из под рута, и тут он говорит что illegal instruction, это в одном случае, если при gcc указать ключ static, если без ключа, то segmentation fault. ежели компилировать кросс компилятором который собирал сам по известным схемам, то и компилить не хочет, сначала ему не хватало файла crti.o, потом crtbegin.o, после засовывания этих файлов в директорию с сишником он стал писать что cant find -lgcc, что это такое гугл не помог. я не работал с at91sam9, но я не верю что нельзя написать программу и не запустить на плате под линуксом, поэтому буду рад любым замечаниям что делаю не так, и рекомендациям по нахождению правильного пути.
Leen
Цитата(sangre @ Nov 9 2010, 00:44) *
на убунте установлен arm-linux-gnueabi

А этот arm-linux-gnueabi - тот же, которым собраны ядро и рутфс на плате? Когда осваивал linux from scratch, нагугливал, что если glibc у кросскомпилятора и у системы-цели разной сборки (даже если версия одна и та же), то как раз чаще всего и будет незапускаемый код. Поэтому я бы посоветовал найти набор кросстулз на linux4sam. А если Вы хотите делать свою сборку кросстулз, то и рутфс и ядро придется пересобирать. Это, правда, не относится к пересборке gcc и binutils, только к пересборке glibc.
sangre
arm-linux-gnueabi это пакет установленный в убунте, уже после того как линукс был загружен в плату. на плате ангстром, который демонстративный на linux4sam. а перекомпилировывать ядро и фс наверно долгий процесс.... не хотелось так глубоко заседать, надеялся что лихим кавалерийским наскоком все поедет
Leen
У меня получилось запустить плату, собрав из исходников и glibc, и gcc, и ядро, и мир. Долго это было и сложно. Сейчас гляжу в сторону emdebian, у них вроде есть и тулчейны, и собранные пакеты под армы. Но еще не пробовал - придет плата, запущу - отпишусь.
sangre
а можно чуток поподробнее? как собиральсо ядро, как мир, как с загрузчиками, ссылки там, может свои комментарии? я сейчас штудирую LFS, долго уже мучаюсь но не получается. компилировал ядро, но оно не находит фс, при компиляции вроде вписывал ей, но не хочет его находить. листал OE, тоже вроде не все просто, но еще нужно не просто что бы все заработало, а что бы на большой машине писать и компилить, а на плате все это запускалось именно в линуксе.
Leen
Ссылка с описанием была весьмя старой и уже мертва, прикладываю хтмл-файл, ориентируясь на который, я собирал LFS.
Нажмите для просмотра прикрепленного файла
К слову, собирать glibc (не uclibc, а полновесный glibc) лучше с поддержкой потоков nptl, а не linuxthreads, т.к. последние были на заре линукса и сейчас активно выпиливаются.
ИМХО, LFS хорош для ознакомления с системой, узнать, что и откуда у нее растет. Но параллельно посоветовал бы подготовить инструментарий, позволяющий работать. В этом смысле хорош Emdebian. Вроде были и еще проекты, предоставляющие не просто тулчейн с компиленным ядром и небольшим рутом, но полноценные дистры. Пока не интересовался этим.
sangre
благодарю, буду разбирать
sangre
в принципе ядро я собираю, но теперь проблема создать фс, с софтом на ней, и что бы ядро находило эту фс. ну и на машине собирать прогу а на плате что бы работала. собрал стандартное ядро и фс в ОЕ, получилось тоже что и на linux4sam, но что то это радости не принесло, не понятно как сделано и что сделано, как это использовать и как этим управлять
Leen
У меня рабочей является такая конфигурация (подсмотрено в слакваре):
ядро с вкомипленной в него инит рам фс - так ядро занимает больше места, зато не надо по отдельности прогружать ядро и инитрд и указывать ядру на инитрд. Главное, чтобы в инитрамфс был файл инит. у меня это скрипт, делающий все необходимые манипуляции. Также в инитрамфс запихан статически собранный бизибокс с минимумом необходимого для монтирования микросд карточки, на которой создан основной рут.
После загрузки ядро запускает процесс инит с инитрамфс. Инит, отработав, меняет рут на примонтированную микросд карту, запуская инит там. Инит на микросд запускает всех демонов и стартует шелл, привязанный к DBGU порту (/dev/ttyS0). Ну а из демонов - syslogd, sshd, mdev (вместо неповоротливого и прожорливого udev, входит в комплект бизибокса).
Инит от инитрамфс.
Код
#!/bin/sh
echo in initramfs
echo

# mount system fs
mount /proc
mount /sys
mount /tmp
mount /dev/pts
mount /dev
# get new devices
echo /bin/mdev > /proc/sys/kernel/hotplug
usleep 100000
mdev -s
# find SD/MMC card
# support work wuth mmcblk and mmcblk0p1 only
if [ -r /dev/mmcblk0p1 ]; then # huge devices with partitions
    mount /dev/mmcblk0p1 /mmc
elif [ -r /dev/mmcblk0 ]; then # little devices (my first 256 MB microSD)
    mount /dev/mmcblk0 /mmc
else
    echo "no SD/MMC card found!"
    /bin/sh --login #start shell
fi
echo outting initramfs
exec switch_root /mmc /linuxrc

Может, профессионалы и фыркнут, но у меня работает - мне хватает.
P.S. еще мне показалось удобным поднять ftp-сервер на плате, чтобы сливать туда-оттуда разные файлы.
sangre
petrovs@petrovs:~/arm/src/linux$ make include/linux/version.h
make: arm-linux-gcc: Команда не найдена
CHK include/linux/version.h
UPD include/linux/version.h
почемуто это все что он делает на этом шаге, нормально так? или мало? хз
использую дистрибутив linux-2.6.33, с linux4sam, оттудаже и патч для этого ядра.
и еще, в /linux/include нет каталога asm-arm, нормально или нет?

при попытке скомпилировать gcc в первый раз выдает
.
.
.
checking for --enable-version-specific-runtime-libs... no
checking whether to enable maintainer-specific portions of Makefiles... no
checking for arm-linux-gcc... /home/petrovs/arm/src/build/gcc-4.5.1-stage1/./gcc/xgcc -B/home/petrovs/arm/src/build/gcc-4.5.1-stage1/./gcc/ -B/home/petrovs/arm/arm-linux/bin/ -B/home/petrovs/arm/arm-linux/lib/ -isystem /home/petrovs/arm/arm-linux/include -isystem /home/petrovs/arm/arm-linux/sys-include
checking for C compiler default output file name...
configure: error: in `/home/petrovs/arm/src/build/gcc-4.5.1-stage1/arm-linux/libmudflap':
configure: error: C compiler cannot create executables
See `config.log' for more details.
make[1]: *** [configure-target-libmudflap] Ошибка 1
make[1]: Выход из каталога `/home/petrovs/arm/src/build/gcc-4.5.1-stage1'
make: *** [all] Ошибка 2
не очень понятная ошибка, побовал версии gcc 4.3.5 и 4.5.1, в обоих случаях примерно тоже самое.
что хочет и почему не едет?
Leen
Цитата(sangre @ Nov 16 2010, 21:01) *
petrovs@petrovs:~/arm/src/linux$ make include/linux/version.h
make: arm-linux-gcc: Команда не найдена
CHK include/linux/version.h
UPD include/linux/version.h
почемуто это все что он делает на этом шаге, нормально так? или мало? хз
Да, нормально.

Цитата
использую дистрибутив linux-2.6.33, с linux4sam, оттудаже и патч для этого ядра.
и еще, в /linux/include нет каталога asm-arm, нормально или нет?
заглянул в ванильное 2.6.33.6 - там тоже нет, когда появляется - не помню. В используемом 2.6.29.6 - есть, похоже эти папки появляются уже после сборки самого ядра.
Цитата
при попытке скомпилировать gcc в первый раз выдает
checking for --enable-version-specific-runtime-libs... no
хз что это, надо гуглить
Цитата
configure: error: in `/home/petrovs/arm/src/build/gcc-4.5.1-stage1/arm-linux/libmudflap':
configure: error: C compiler cannot create executables
See `config.log' for more details.
make[1]: *** [configure-target-libmudflap] Ошибка 1
Мдя. Мой грех. Забыл, как сам накувыркался с этим маном. В общем, там такое дело - сначала выкуривается gcc cross compiling c gcc.gnu.org, затем собирается и устанавливается цель all-gcc:
Код
make all-gcc
make install-gcc

Цитата
что хочет
glibc собранного, которого еще нет.
Цитата
и почему не едет?
пЫва мало было beer.gif
И еще раз - gcc собирается для кросс компиляции, т.е. соборанный им эльф на собирающей машине не запустится, а мэйк пробует сделать именно это, если мой телепатический модуль не сбойнулsmile.gif
sangre
думал что возможно надо попробовать
make all-gcc
make install-gcc
но почему то так и не попробовал, пытался баловаться параметрами ./config нашел оригинал представленной здесь статьи на аглицком, и там как раз перед промежуточной установкой gcc капиталистический товарищ устанавливал заголовки glibc, я следуя этому попытался провернуть этот фокус, но что то тоже не поехало

что хочет
glibc собранного, которого еще нет.

о, так поехало, вот подумал про это, а руками не запустил, бывает =)
sangre
petrovs@petrovs:~/arm/src/build/glibc-2.11.2$ BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ../../glibc-2.11.2/./configure --prefix=/usr --build=i686-unknown-linux --host=arm-linux --target=arm-linux --without-fp --without-__thread --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out
checking build system type... i686-unknown-linux-gnu
checking host system type... arm-unknown-linux-gnu
checking for arm-linux-gcc... arm-linux-gcc
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether arm-linux-gcc accepts -g... yes
checking for arm-linux-gcc option to accept ISO C89... unsupported
checking for gcc... gcc
checking how to run the C preprocessor... arm-linux-gcc -E
checking for arm-linux-g++... no
checking for arm-linux-c++... no
checking for arm-linux-gpp... no
checking for arm-linux-aCC... no
checking for arm-linux-CC... no
checking for arm-linux-cxx... no
checking for arm-linux-cc++... no
checking for arm-linux-cl.exe... no
checking for arm-linux-FCC... no
checking for arm-linux-KCC... no
checking for arm-linux-RCC... no
checking for arm-linux-xlC_r... no
checking for arm-linux-xlC... no
checking for g++... g++
configure: WARNING: using cross tools not prefixed with host triplet
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
configure: running configure fragment for add-on linuxthreads
checking sysdep dirs... configure: error: The arm is not supported.
неожиданное сообщение, что делать?

BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ../../glibc-2.11.2/./configure --prefix=${SYSROOT}/usr --build=i686-unknown-linux --target=arm-linux --without-fp --without-__thread --enable-add-ons=linuxthreads --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out
здесь убрал параметр --host=arm-linux, не знаю верно ли это решение, если верить http://www.gnu.org/software/hello/manual/a...cifying%20Names и моему к сожалению скудному познанию аглицкого, то вроде как так и должно быть


причем пробежал без варнингов

но и ничего не сделал, а предложил поставить флаг --disable-sanity-checks, а с этим флагом вываливается ошибка
.
.
.
configure: error: gcc must provide the <cpuid.h> header
Leen
Цитата(sangre @ Nov 17 2010, 00:58) *
configure: running configure fragment for add-on linuxthreads
checking sysdep dirs... configure: error: The arm is not supported.
неожиданное сообщение, что делать?
А что я выше говорил про линукстредс? Пост 6.
Кроме того, если брал сырцы у гну, наверно видел файлы glibc-ports-xxx? Так вот сама глибц - под x86, а под арм ее ориентирует (добавляет платформозависимые куски) именно порт. И не факт, что самую свежую версию уже портировали.
Цитата
а предложил поставить флаг --disable-sanity-checks, а с этим флагом вываливается ошибка
с ошибкой придется разбираться, но чуть позже, а флаг нужен, иначе при сборке мейк будет по-всякому тестировать собираемое, а как, если оно не запускается? есс-но будет тьма ошибок.
sangre
нда, невнимательно читал 6 пост, да еще надо вообще внимательнее смотреть в директории и ридми файлы. как прикрутить этот порт? просто распаковать?
в инструкции пишет товарищ накатить патчи, это конечно хорошо, но для новичка затруднительно, как их накатывать? и еще, там есть три патча, порт, линукстридс и либидн. про линукстридс пишет надо просто распаковать, ну ладно, распаковал, как накатить патчи? гугл не помог, либо пользоваться не умею =(

про файлы типа тра-та-та.path вроде понятно, а вот про эти патчи не понятно
sangre
configure: error: add-on directory "nplt" does not exist
в директории с распакованным дистрибутивом эта папка есть
Leen
накатывание патчей patch -p1 -i имя_файла_с_патчем
а вообще - man patch. Там довольно подробно объясняется. на opennet.ru есть русские переводы многих манов.
Ты команды хоть приводи, непонятно ж ничерта - куда и что ты пишешь.
Вот давай начнем с установленного gcc без библиотек, ага?
export ARCH=arm CROSS_COMPILE=arm-linux- (ну или как ты там гцц переименовал). Так?
Какие патчи накатываешь, какие версии софта используешь?
Я не против тебе помочь, но ты уж меня телепатом не считай, ладно?
sangre
=)) хорошо, и вообще спасибо за помощ, я то я умаялся копаться

установил gcc версии 4.3.5
дальше по схеме распаковал glibc 2.11.2 распаковывал в експлорере(как его еще назвать) через меню распаковать сюда
дальше шаг:
/--------------------------------------------------------------------------------------------------------
заходим в каталог glibc-2.3.6 и распаковываем linux-threads:bunzip2 -c
../glibc-linuxthreads-2.3.6.tar.bz2 | tar xv
/--------------------------------------------------------------------------------------------------------
вот я думаю, имеет это смысл или нет? версия моя 2.11.2 я думаю что нет, ну да ладно, для кучи распаковываю glibc-linuxthreads-2.5.tar.bz2, жалко чтоли?

дальше по схеме:
/---------------------------------------------------
накатываем патчи из patches/glibc.
/---------------------------------------------------
из какой директории подразумеваются эти патчи?

т.к. я все сырцы брал с гну.орг, то там еще по твоему же совету выдрал glibc-ports-2.11.tar.gz и glibc-libidn-2.9.tar.gz, я по своему скромному разумению предполагаю что это и наверно должны быть патчи, команда patch -p1 -i имя_файла_с_патчем на это дело ругается, ежели просто распаковать в директорию с glibc, то там добавляет папки из этих архивов и все, пробовал вытаскивать из этих папок в директорию с glibc что то совмещал, что то заменял, но думаю это не верный вариант
вот покамест здесь и топчусь

export ARCH=arm CROSS_COMPILE=arm-linux-
это оставил как в схеме

на gcc никаких патчей не накладывал

binutils-2.20.1
ядро с linux4sam - linux-2.6.33, с патчем для этого ядра и дефконфигом для моей платы (at91sam9xeek)

BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ../../glibc-2.11.2/./configure --prefix=/usr --build=i686-unknown-linux --host=arm-linux --target=arm-linux --without-fp --without-__thread --enable-add-ons=nplt --disable-sanity-checks --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out
этой строкой пытаюсь конфигурировать glibc
Leen
Ладно, начнем по порядку.
1 вся работа идет в шелле. Так удобнее. (Шелл это командная строка).
Распаковка файла - tar xf имя_файла. Для автодополнения можно жать на таб, если файлов с введенной частью больше одного - шелл покажет варианты после второго нажатия таба, не обессудь, если их будет много.
итак, папка с архивами glibc-2.11.2.tar.bz2, glibc-ports-2.11.tar.bz2.
Код
tar xf glibc-2.11.2.tar.bz2
tar xf glibc-ports-2.11.tar.bz2
Если хочешь понаблюдать за процессом - вместо xf пиши xvf. x - распаковка, f - в качестве аргументов будут файлы, v - подробно.
Копируем содержимое glibc-ports-2.11 в glibc-2.11.2
Код
cp -R glibc-ports-2.11/* glibc-2.11.2

Ну а дальше твоя строка конфигурации. И, кстати, опция --without-__thread у меня не проканала, а вот --with-__thread - прошла на ура.
Все, я спать, вечером приду с работы - попробую пересобрать свежаки между делом.
sangre
так то я все и делаю в шелле, у меня на баш направлено, я в експлорере я для удобства
портс нужно просто распаковать и все? а как же понятие патчить?
--without-__thread, где то читал что надо как раз с потоками и делать, там вроде еще какую то опцию добавлять можно, тоже для потоков, я так думаю раз ты подключаешь nplt, а это как раз потоки и есть, то соответственно наверно эту опцию и выставлять

зы, если сбудется моя мечта и я окажусь во владике, то с меня пиво и бабы

все как доктор прописал:
pwd:
/home/petrovs/arm/src

petrovs@petrovs:~/arm/src$ tar xf glibc-2.11.2.tar.gz
petrovs@petrovs:~/arm/src$ tar xf glibc-ports-2.11.tar.gz
petrovs@petrovs:~/arm/src$ cp -R glibc-ports-2.11/* glibc-2.11.2

petrovs@petrovs:~/arm/src$ mkdir build/glibc-2.11.2
petrovs@petrovs:~/arm/src$ cd build/glibc-2.11.2/

барабанная дробь!

petrovs@petrovs:~/arm/src/build/glibc-2.11.2$ BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ../../glibc-2.11.2/./configure --prefix=/usr --build=i686-unknown-linux --host=arm-linux --target=arm-linux --without-fp --with-__thread --enable-add-ons=nplt --disable-sanity-checks --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out

напряженная барабанная дробь! публика затаила дыхание!

enter

checking build system type... i686-unknown-linux-gnu
checking host system type... arm-unknown-linux-gnu
checking for arm-linux-gcc... arm-linux-gcc
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether arm-linux-gcc accepts -g... yes
checking for arm-linux-gcc option to accept ISO C89... unsupported
checking for gcc... gcc
checking how to run the C preprocessor... arm-linux-gcc -E
checking for arm-linux-g++... no
checking for arm-linux-c++... no
checking for arm-linux-gpp... no
checking for arm-linux-aCC... no
checking for arm-linux-CC... no
checking for arm-linux-cxx... no
checking for arm-linux-cc++... no
checking for arm-linux-cl.exe... no
checking for arm-linux-FCC... no
checking for arm-linux-KCC... no
checking for arm-linux-RCC... no
checking for arm-linux-xlC_r... no
checking for arm-linux-xlC... no
checking for g++... g++
configure: WARNING: using cross tools not prefixed with host triplet
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
configure: error: add-on directory "nplt" does not exist

бинго! з*****а на воротнике!
что бы шею не терло

на http://frank.harvard.edu/~coldwell/toolchain/ взял скрипт, который делает тоже самое, что то делает, но доходит до компиляции ядра, почти конечного этапа, и там тоже вылетает =( хоть плач, ну что ему надо? там он выкачивает утилиты который в схеме, версии все совпадают не хочет...

какие ты используешь версии binutils, glibc, gcc, linux?
Leen
Код
configure: WARNING: using cross tools not prefixed with host triplet
Мне не нравится этот варнинг. Поищи его в config.log и посмотри (а можешь и мне показать), что рядом с ним, строк +/- 50 где-то.
Касательно скрипта - сильно уж он старый. Ядро сильно изменилось после 2.6.18. Да и либси на месте не стоит. Можно еще помучаться с crosstools-ng. Я щас попробую его запустить, вечером приду домой - посмотрю, что получилось.
версии:
binutils 2.19.1
gcc 4.3.1
glibc 2.9
linux-2.6.29.6 с наложенными патчами PREEMT_RT - вытесняющая многозадачность и атмеловский патч, взятый с максим.орг.за.
Насчет пива и девок - давай сначала соберемsmile.gif
Leen
В перерывах на производственный процесс тестирую crosstools-ng.
Приятная вещь, жаль, в прошлый раз не смог ее освоить.
Скачал отсюда.
Выложил в /home/leen
Код
tar xf crosstool-ng-1.9.0.tar.bz2
cd crosstool-ng-1.9.0
./configure --prefix=~/usr
make && make install
До этого попытался, как белый человек, поставить тулзу в /usr - не завелась, видать, ей надо w доступ на свои файлы.
Создаю папку для сборки, конфигурю из нее (перед этим надо не забыть добавить саму тулзу в путь)
Код
mkdir ~/toolchain-build
cd ~/toolchain-build
export PATH=$PATH:~/usr/bin
ct-ng menuconfig
На всякий случай, вот мой конфиг Нажмите для просмотра прикрепленного файла Его только надо переименовать в .config, а то форумный движок запрещает мне заливать файлы такого типа. Хе-хе.
Тут можно поступить двояко - или дать тулзе все необходимое загрузить, или сделать это самому. Я собираю все в виртуалке, путь до шлюза у меня не прописан, поэтому выкачал ручками и слил в ~/src. Если дать скрипту выкачивать все и отметить в конфиге, что сырцы надо сохранить, то сохранит он все как раз в ~/src, если такая папка есть. Если нет - не сохранит.
Пакеты архивов:
binutils-2.20.tar.bz2
gcc-4.4.5.tar.bz2
gdb-6.8.tar.bz2
glibc-2.9.tar.bz2
glibc-ports-2.9.tar.bz2
gmp-4.3.2.tar.bz2
linux-2.6.36.tar.bz2
mpfr-2.4.2.tar.bz2
ppl-0.10.2.tar.bz2
cloog-ppl-0.15.10.tar.gz
expat-2.0.1.tar.gz
ncurses-5.7.tar.gz
Заметил баг в crosstools - Re: CLOOG/ppl failure in ct-ng 1.9.0. Ничего страшного, фиксим файл ~/usr/lib/ct-ng-1.9.0/scripts/build/companion_libs/cloog.sh, добавив строку, помеченную +++. Исправь до сборки, а то при ошибке сборка начинается с начала, блин. А дотуда - полчаса легко.
Пока все.
sangre
вот конфиг:
не хочет грузить файл почему то, даже после переименования
CODE

This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake.

It was created by GNU C Library configure (see version.h), which was
generated by GNU Autoconf 2.63. Invocation command line was

$ ../../glibc-2.11.2/./configure --prefix=/usr --build=i686-unknown-linux --host=arm-linux --target=arm-linux --without-fp --with-__thread --enable-add-ons=nplt --with-headers=/usr/include

## --------- ##
## Platform. ##
## --------- ##

hostname = petrovs
uname -m = i686
uname -r = 2.6.36
uname -s = Linux
uname -v = #1 SMP Sat Nov 13 10:03:50 MSK 2010

/usr/bin/uname -p = unknown
/bin/uname -X = unknown

/bin/arch = unknown
/usr/bin/arch -k = unknown
/usr/convex/getsysinfo = unknown
/usr/bin/hostinfo = unknown
/bin/machine = unknown
/usr/bin/oslevel = unknown
/bin/universe = unknown

PATH: /usr/local/sbin
PATH: /usr/local/bin
PATH: /usr/sbin
PATH: /usr/bin
PATH: /sbin
PATH: /bin
PATH: /usr/games


## ----------- ##
## Core tests. ##
## ----------- ##

configure:2028: checking build system type
configure:2046: result: i686-unknown-linux-gnu
configure:2068: checking host system type
configure:2083: result: arm-unknown-linux-gnu
configure:2114: checking for arm-linux-gcc
configure:2141: result: gcc
configure:2413: checking for C compiler version
configure:2421: gcc --version >&5
gcc (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
Copyright © 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:2425: $? = 0
configure:2432: gcc -v >&5
Using built-in specs.
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
configure:2436: $? = 0
configure:2443: gcc -V >&5
gcc: '-V' option must have argument
configure:2447: $? = 1
configure:2451: checking for suffix of object files
configure:2477: gcc -c conftest.c >&5
configure:2481: $? = 0
configure:2506: result: o
configure:2510: checking whether we are using the GNU C compiler
configure:2539: gcc -c conftest.c >&5
configure:2546: $? = 0
configure:2563: result: yes
configure:2572: checking whether gcc accepts -g
configure:2602: gcc -c -g conftest.c >&5
configure:2609: $? = 0
configure:2710: result: yes
configure:2727: checking for gcc option to accept ISO C89
configure:2801: gcc -c -g -O2 conftest.c >&5
configure:2808: $? = 0
configure:2831: result: none needed
configure:2854: checking for gcc
configure:2881: result: gcc
configure:2899: checking how to run the C preprocessor
configure:2939: gcc -E conftest.c
configure:2946: $? = 0
configure:2977: gcc -E conftest.c
conftest.c:8: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:2984: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GNU C Library"
| #define PACKAGE_TARNAME "c-library"
| #define PACKAGE_VERSION "(see version.h)"
| #define PACKAGE_STRING "GNU C Library (see version.h)"
| #define PACKAGE_BUGREPORT "glibc"
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:3017: result: gcc -E
configure:3046: gcc -E conftest.c
configure:3053: $? = 0
configure:3084: gcc -E conftest.c
conftest.c:8: fatal error: ac_nonexistent.h: No such file or directory
compilation terminated.
configure:3091: $? = 1
configure: failed program was:
| /* confdefs.h. */
| #define PACKAGE_NAME "GNU C Library"
| #define PACKAGE_TARNAME "c-library"
| #define PACKAGE_VERSION "(see version.h)"
| #define PACKAGE_STRING "GNU C Library (see version.h)"
| #define PACKAGE_BUGREPORT "glibc"
| /* end confdefs.h. */
| #include <ac_nonexistent.h>
configure:3145: checking for arm-linux-g++
configure:3175: result: no
configure:3145: checking for arm-linux-c++
configure:3175: result: no
configure:3145: checking for arm-linux-gpp
configure:3175: result: no
configure:3145: checking for arm-linux-aCC
configure:3175: result: no
configure:3145: checking for arm-linux-CC
configure:3175: result: no
configure:3145: checking for arm-linux-cxx
configure:3175: result: no
configure:3145: checking for arm-linux-cc++
configure:3175: result: no
configure:3145: checking for arm-linux-cl.exe
configure:3175: result: no
configure:3145: checking for arm-linux-FCC
configure:3175: result: no
configure:3145: checking for arm-linux-KCC
configure:3175: result: no
configure:3145: checking for arm-linux-RCC
configure:3175: result: no
configure:3145: checking for arm-linux-xlC_r
configure:3175: result: no
configure:3145: checking for arm-linux-xlC
configure:3175: result: no
configure:3189: checking for g++
configure:3205: found /usr/bin/g++
configure:3216: result: g++
configure:3232: WARNING: using cross tools not prefixed with host triplet
configure:3243: checking for C++ compiler version
configure:3251: g++ --version >&5
g++ (Ubuntu/Linaro 4.4.4-14ubuntu5) 4.4.5
Copyright © 2010 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

configure:3255: $? = 0
configure:3262: g++ -v >&5
Using built-in specs.
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.4.4-14ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.4/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.4 --enable-shared --enable-multiarch --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.4 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu
Thread model: posix
gcc version 4.4.5 (Ubuntu/Linaro 4.4.4-14ubuntu5)
configure:3266: $? = 0
configure:3273: g++ -V >&5
g++: '-V' option must have argument
configure:3277: $? = 1
configure:3280: checking whether we are using the GNU C++ compiler
configure:3309: g++ -c conftest.cpp >&5
configure:3316: $? = 0
configure:3333: result: yes
configure:3342: checking whether g++ accepts -g
configure:3372: g++ -c -g conftest.cpp >&5
configure:3379: $? = 0
configure:3480: result: yes
configure:4084: error: add-on directory "nplt" does not exist

## ---------------- ##
## Cache variables. ##
## ---------------- ##

ac_cv_build=i686-unknown-linux-gnu
ac_cv_c_compiler_gnu=yes
ac_cv_cxx_compiler_gnu=yes
ac_cv_env_CCC_set=
ac_cv_env_CCC_value=
ac_cv_env_CC_set=set
ac_cv_env_CC_value=gcc
ac_cv_env_CFLAGS_set=
ac_cv_env_CFLAGS_value=
ac_cv_env_CPPFLAGS_set=
ac_cv_env_CPPFLAGS_value=
ac_cv_env_CPP_set=
ac_cv_env_CPP_value=
ac_cv_env_CXXFLAGS_set=
ac_cv_env_CXXFLAGS_value=
ac_cv_env_CXX_set=
ac_cv_env_CXX_value=
ac_cv_env_LDFLAGS_set=
ac_cv_env_LDFLAGS_value=
ac_cv_env_LIBS_set=
ac_cv_env_LIBS_value=
ac_cv_env_build_alias_set=set
ac_cv_env_build_alias_value=i686-unknown-linux
ac_cv_env_host_alias_set=set
ac_cv_env_host_alias_value=arm-linux
ac_cv_env_target_alias_set=set
ac_cv_env_target_alias_value=arm-linux
ac_cv_host=arm-unknown-linux-gnu
ac_cv_objext=o
ac_cv_prog_BUILD_CC=gcc
ac_cv_prog_CC=gcc
ac_cv_prog_CPP='gcc -E'
ac_cv_prog_ac_ct_CXX=g++
ac_cv_prog_cc_c89=
ac_cv_prog_cc_g=yes
ac_cv_prog_cxx_g=yes
libc_cv_nss_crypt=no

## ----------------- ##
## Output variables. ##
## ----------------- ##

AR='ar'
AS='as'
ASFLAGS_config=''
AUTOCONF=''
AWK=''
BASH_SHELL=''
BISON=''
BUILD_CC='gcc'
CC='gcc'
CFLAGS='-g -O2'
CPP='gcc -E'
CPPFLAGS=''
CXX='g++'
CXXFLAGS='-g -O2'
CXX_SYSINCLUDES=''
DEFINES=''
DEFS=''
ECHO_C=''
ECHO_N='-n'
ECHO_T=''
EGREP=''
GREP=''
INSTALL_DATA=''
INSTALL_INFO=''
INSTALL_PROGRAM=''
INSTALL_SCRIPT=''
KSH=''
LD='ld'
LDFLAGS=''
LIBGD=''
LIBOBJS=''
LIBS=''
LN_S=''
LTLIBOBJS=''
MAKE=''
MAKEINFO=''
MIG=''
MSGFMT=''
OBJDUMP=''
OBJEXT='o'
PACKAGE_BUGREPORT='glibc'
PACKAGE_NAME='GNU C Library'
PACKAGE_STRING='GNU C Library (see version.h)'
PACKAGE_TARNAME='c-library'
PACKAGE_VERSION='(see version.h)'
PATH_SEPARATOR=':'
PERL=''
PWD_P=''
RANLIB='ranlib'
RELEASE=''
SED=''
SHELL='/bin/sh'
SYSINCLUDES=''
VERSION=''
VERSIONING=''
ac_ct_CC=''
ac_ct_CXX='g++'
add_on_subdirs=''
add_ons='nplt'
all_warnings=''
base_machine=''
bindir='${exec_prefix}/bin'
bindnow='no'
bounded='no'
build='i686-unknown-linux-gnu'
build_alias='i686-unknown-linux'
build_cpu='i686'
build_os='linux-gnu'
build_vendor='unknown'
cross_compiling='yes'
datadir='${datarootdir}'
datarootdir='${prefix}/share'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
dvidir='${docdir}'
elf='yes'
enable_check_abi='no'
exceptions=''
exec_prefix='NONE'
experimental_malloc=''
fno_unit_at_a_time=''
force_install='yes'
have_libaudit=''
have_libcap=''
have_selinux=''
host='arm-unknown-linux-gnu'
host_alias='arm-linux'
host_cpu='arm'
host_os='linux-gnu'
host_vendor='unknown'
htmldir='${docdir}'
includedir='${prefix}/include'
infodir='${datarootdir}/info'
ldd_rewrite_script=''
libc_cv_Bgroup=''
libc_cv_as_needed=''
libc_cv_cc_avx=''
libc_cv_cc_sse4=''
libc_cv_cc_submachine=''
libc_cv_cc_with_libunwind=''
libc_cv_cpp_asm_debuginfo=''
libc_cv_forced_unwind=''
libc_cv_fpie=''
libc_cv_gcc_static_libgcc=''
libc_cv_gcc_unwind_find_fde=''
libc_cv_gnu89_inline=''
libc_cv_hashstyle=''
libc_cv_have_bash2=''
libc_cv_have_initfini=''
libc_cv_have_ksh=''
libc_cv_libgcc_s_suffix=''
libc_cv_localedir=''
libc_cv_nss_crypt='no'
libc_cv_pic_default=''
libc_cv_rootsbindir=''
libc_cv_slibdir=''
libc_cv_ssp=''
libc_cv_sysconfdir=''
libc_cv_z_combreloc=''
libc_cv_z_execstack=''
libdir='${exec_prefix}/lib'
libexecdir='${exec_prefix}/libexec'
localedir='${datarootdir}/locale'
localstatedir='${prefix}/var'
mach_interface_list=''
mandir='${datarootdir}/man'
multi_arch='no'
no_whole_archive=''
nopic_initfini=''
old_glibc_headers=''
oldest_abi='default'
oldincludedir='/usr/include'
omitfp='no'
pdfdir='${docdir}'
prefix='/usr'
profile='no'
program_transform_name='s,x,x,'
psdir='${docdir}'
sbindir='${exec_prefix}/sbin'
shared='default'
sharedstatedir='${prefix}/com'
sizeof_long_double=''
static='yes'
static_nss='no'
subdirs=' '
submachine=''
sysconfdir='${prefix}/etc'
sysdeps_add_ons=''
sysnames=''
target_alias='arm-linux'
uname_release=''
uname_sysname=''
uname_version=''
use_ldconfig=''
with_cvs='yes'
with_fp='no'
xcoff='no'

## ----------- ##
## confdefs.h. ##
## ----------- ##

#define PACKAGE_NAME "GNU C Library"
#define PACKAGE_TARNAME "c-library"
#define PACKAGE_VERSION "(see version.h)"
#define PACKAGE_STRING "GNU C Library (see version.h)"
#define PACKAGE_BUGREPORT "glibc"

configure: exit 1

вот он весь целиком

http://mdf-i.blogspot.com/2008/04/arm-iwmm...-toolchain.html
здесь нашел пару патчей, накладывал их, но тоже не поехало.
на скрипт я так особо не надеялся, просто уже интересно стало, хоть так поедет или нет, но видимо совсем уж старый

crosstool-ng вроде как интересная вещица, смотрел emdebian, мне кажецца что это не для новичков в линуксе.
Leen
Цитата(sangre @ Nov 18 2010, 15:52) *
$ ../../glibc-2.11.2/./configure --prefix=/usr --build=i686-unknown-linux --host=arm-linux --target=arm-linux --without-fp --with-__thread --enable-add-ons=nplt --with-headers=/usr/include
Тащемто правильно nptl.
Эт раз.
По кросстулзам.
На сборке глибцов все сломалось. В конфиг добавил ключ --with-tls, в использовании аддонов записал nptl.
Для того, чтобы не пересобирать все сначала, включил отладку и запоминание промежуточных шагов. Перезапустил, через час посмотрю.
sangre
BUILD_CC=gcc CC=${CROSS_COMPILE}gcc AR=${CROSS_COMPILE}ar RANLIB=${CROSS_COMPILE}ranlib AS=${CROSS_COMPILE}as LD=${CROSS_COMPILE}ld ../../glibc-2.11.2/./configure --prefix=/usr --build=i686-unknown-linux --host=arm-linux --target=arm-linux --without-fp --with-__thread --enable-add-ons --with-tls --enable-kernel=2.6.33 --disable-sanity-checks --with-headers=${SYSROOT}/usr/include 2>&1 | tee configure.out

с этой строкой конфигурации он корфигурирует, здесь
--with-__thread \ -видимо что то для потоков
--enable-add-ons\ - если ничего явно не указано, то добавляет все add-on"ы который найдет, с этим не ругается на configure: error: add-on directory "nplt" does not exist, и варнинга того тоже вроде не проскакивает
--with-tls\ это что то вроде как к потокам относиться, что то где то читал но теперь не могу найти
--enable-kernel=2.6.33 ну и мое ядро, взятое с linux4sam и пропатченное патчем оттудаже

=)) блин nplt, точно
вообще про glibc везде пишут что капризная вещ

--enable-add-ons=nptl
с этим флагом получаю
checking sysdep dirs... configure: error: The arm is not supported.
хотя порт распаковал....
заколдованный круг какой то блин

какая у тебя операционка? у меня ubuntu 10.10 i386
Leen
Mops-7.0 beta - слегка причесанная слакварь. Голая консоль, сугубо для сборки проектов.
У меня че-то начало получаться с кросстулзами, домой приду - продолжу. Как чего получится, допишу.
sangre
хорошо. вот я подумал, утомила glibc, может попробовать другую либу? например newlib? или еще ченить к примеру заточенное под embedded?

../../gcc-4.4.5/./configure --prefix=${PREFIX} --target=${TARGET} --enable-languages=c --with-sysroot=${SYSROOT} --without-fp --with-softfloat-support=internal --with-newlib --disable-threads --disable-shared --enable-static --with-inhibit-libc --with-float=soft 2>&1 | tee configure.out
промежуточная компиляция gcc для сборки glibc:
--with-newlib \ вот это правильно? вроде использовать то собираемся glibc, и на компе тоже glibc стоит
--disable-threads \ это правильно?
sangre
configure: error: forced unwind support is required
теперь просит эту опцию, где и как ее включить? никак не могу найти описание опций для
конфигурации gcc и glibc
Leen
Ты подожди денек, я сам разберусь с кросстулзами, отпишу че да как.
Я первый раз тулзы с месяц собирал - то нормально, то такая злость разбирает, что не собирается нихрена, что к компе не подходил - боялся взять и уе..ть.
первая ссылка в гугле по приведенной тобой ошибке, нижний пост
libc_cv_forced_unwind=yes ....... ./configure .......
sangre
http://www.rsdn.ru/forum/unix/3631177.flat.aspx
нижний пост рекомендует переустановить ос
как то даже не знаю...
переставить конечно недолго, но это как то не путь джедая

open embedded кстати собрал мне и ядро и рутфс, и работает на плате, получилось как в примере на linux4sam,
но мне это не нравится тем, что непонятно как все сработало, почему работает, и как это использовать
sangre
в общем для кучи, посмотрел ct-ng, собирал по инструкции, вроде собралось, вот что получилось, меня смущает что так быстро:
CODE
petrovs@petrovs:~/crosstool-ng-1.9.0$ ./configure --prefix=$HOME/ctng --with-libtool=$HOME/ctng/libtool
Checking for 'grep'... /bin/grep
Checking whether '/bin/grep' supports -E... yes
Checking for 'sed'... /bin/sed
Checking whether '/bin/sed' supports -i and -e... yes
Checking for 'bash'... /bin/bash
Checking for 'cut'... /usr/bin/cut
Checking for 'install'... /usr/bin/install
Checking for 'make'... /usr/bin/make
Checking for 'gcc'... /usr/bin/gcc
Checking for 'awk'... /usr/bin/awk
Checking for 'bison'... /usr/bin/bison
Checking for 'flex'... /usr/bin/flex
Checking for 'makeinfo'... /usr/bin/makeinfo
Checking for 'automake'... /usr/bin/automake
Checking for 'libtool'... /home/petrovs/ctng/libtool (cached)
Checking for 'stat'... /usr/bin/stat
Checking for 'aria2c'... no
Checking for 'curl'... no
Checking for 'wget'... /usr/bin/wget
Checking for 'cvs'... /usr/bin/cvs
Checking for 'patch'... /usr/bin/patch
Checking for 'tar'... /bin/tar
Checking for 'gzip'... /bin/gzip
Checking for 'bzip2'... /bin/bzip2
Checking for 'lzma'... /usr/bin/lzma
Checking for 'readlink'... /bin/readlink
Checking for 'objcopy'... /usr/bin/objcopy
Checking for 'objdump'... /usr/bin/objdump
Checking for 'readelf'... /usr/bin/readelf
Checking for 'patch'... /usr/bin/patch
Checking for 'ncurses/ncurses.h'... no
Checking for 'ncurses/curses.h'... no
Checking for 'ncurses.h'... yes
Checking for 'libncursesw.so'... no
Checking for 'libncursesw.a'... no
Checking for 'libncursesw.dylib'... no
Checking for 'libncurses.so'... yes
Computing version string... 1.9.0
Building up Makefile... done

crosstool-NG configured as follows:
PREFIX='/home/petrovs/ctng'
BINDIR='/home/petrovs/ctng/bin'
LIBDIR='/home/petrovs/ctng/lib/ct-ng-1.9.0'
DOCDIR='/home/petrovs/ctng/share/doc/ct-ng-1.9.0'
MANDIR='/home/petrovs/ctng/share/man'

Now run:
make
make install
petrovs@petrovs:~/crosstool-ng-1.9.0$ make
SED 'ct-ng'
SED 'scripts/crosstool-NG.sh'
SED 'scripts/saveSample.sh'
SED 'scripts/showTuple.sh'
GEN 'paths.mk'
SED 'docs/ct-ng.1'
GZIP 'docs/ct-ng.1.gz'
petrovs@petrovs:~/crosstool-ng-1.9.0$ make install
MKDIR '/home/petrovs/ctng/bin/'
INST 'ct-ng'
RMDIR '/home/petrovs/ctng/lib/ct-ng-1.9.0/'
MKDIR '/home/petrovs/ctng/lib/ct-ng-1.9.0/'
INSTDIR 'config/'
INSTDIR 'contrib/'
INSTDIR 'kconfig/'
INSTDIR 'patches/'
INSTDIR 'scripts/'
INST 'steps.mk'
INST 'paths.mk'
INSTDIR 'samples/'
MKDIR '/home/petrovs/ctng/share/doc/ct-ng-1.9.0/'
INST 'docs/*.txt'
MKDIR '/home/petrovs/ctng/share/man/man1/'
INST 'ct-ng.1.gz'

For auto-completion, do not forget to install 'ct-ng.comp' into
your bash completion directory (usually /etc/bash_completion.d)


чуток смущает вывод:
For auto-completion, do not forget to install 'ct-ng.comp' into
your bash completion directory (usually /etc/bash_completion.d)
переводил словариком, че надо не понял (забил)

дальше по инструкции выбрал себе конфиг типа arm-unknown-linux-gnueabi
отредактировал путь
и получил:
petrovs@petrovs:~/ctngbuild$ ct-ng build.4
[INFO ] Performing some trivial sanity checks
[INFO ] Build started 20101118.165702
[INFO ] Building environment variables
[WARN ] Directory '/home/petrovs/src' does not exist.
[WARN ] Will not save downloaded tarballs to local storage.
[EXTRA] Preparing working directories
[ERROR] Missing: 'i686-pc-linux-gnu-gcj' or 'i686-pc-linux-gnu-gcj' or 'gcj' : either needed!
[00:01] / make[1]: *** [build] Ошибка 1
make: *** [build.4] Ошибка 2

прямо какой то злой рок, блин
Leen
Скажи, а тебе так нуже java-компилер под АРМ? Или таки нет? Если нужен - ну, наверно, надо поставить gcj под i686.
Лучше сконфигури кросстулзы сам - меньше мусора будет. И читай мануалы в процессе.
Только в конфиге libc укажи addon nptl, компиляторы - по вкусу, я выставил gcc, g++. Джава мне не нужна, ада с фортраном - тоже.
Свою реплику про "--with-tls" дезавуирую. Пока собралось не все (за ночь - не так уж быстро), но глицы и компилеры собрались, сейчас собирается нативный gdb. Да, и поотмечай в опциях binutils и gcc сборку библиотек.
А будет у тебя нормальный тулчейн - займемся ручным изготовлением инитрамфс, а на его основе уже можно создать и свой постоянный рутовый раздел.
Вчера попробовал поставить emdebian - пока собирались тулзы. И надо ж такому случиться - сервер недоступен. Аж обидно.

UPD: тулчейн собрался за ночь. Проверил на ядре - собрал с рабочим конфигом новыми тулзами. Ядро нормально запустилось и нормально же запаниковало, не найдя инитрамфс. Вечером продолжу - соберу инитрамфс, вкручу в ядро. Кросстулз мне понравились тем, что правильно настроил, сырцы дал - и ушел. А оно работаетsmile.gif Ну и аккуратнее получилось, чем у меня пару лет назад, когда я ручками все это собирал.
sangre
да, так поехало, надо было внимательнее почитать конфиг, да я еще повелся на точ что там сказали смотреть можно, а руками не трогать =(
а руками я считаю собрать хоть раз но надо, что бы иметь представление что к чему. ты копался собирал - и шаришь
Leen
Цитата(sangre @ Nov 19 2010, 15:51) *
а руками я считаю собрать хоть раз но надо, что бы иметь представление что к чему. ты копался собирал - и шаришь
Шарю? Хм, спорный вопрос, опустим для ясностиsmile.gif. По-крайней мере, из вариантов - собирать ручками, или собирать скриптами я уже выбрал второй. А первый - и в первый раз через пень-колоду получился, и сейчас не очень-то пошел.
sangre
щас тоже попробую ченить собрать
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.