реклама на сайте
подробности

 
 
4 страниц V  < 1 2 3 4 >  
Reply to this topicStart new topic
> Embedded linux bootstraping, ликбез
amw
сообщение Sep 5 2007, 10:13
Сообщение #31


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Вообще-то glib и glibc - разные вещи.
Судя по именам файлов у Вас glibc (что и ожидалось).
Используйте crosstools. Файлы конфигурации для IXP4xx во вложеном архиве - используйте для примера.

Цитата
3) незная как правильно приложить патчи ioperm.c.diff и Makeconfig.patch, тупо нашел редактируемые строки в изменяемых файлах и руками попроавил

Код
cd в_каталог_исходников_которые_нужно_патчить
patch -p1 -iпуть_к_файлу_различий

путь_к_файлу_различий - обычно имя файла заканчивается на .patch или .diff
p1 - посмотрите man patch
Прикрепленные файлы
Прикрепленный файл  crosstool_0.42.zip ( 1.1 килобайт ) Кол-во скачиваний: 32
 


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
3.14
сообщение Sep 5 2007, 12:17
Сообщение #32


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



А что в скрипте all.sh должно быть?

Попробовал собрать buildroot, а эта падлюка останавливается (может просто стоять час ничего ни делая, на большее время терения не хватило) после загрузки binutils, причем я уже три разные версии binutils попробовал sad.gif


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
amw
сообщение Sep 5 2007, 13:24
Сообщение #33


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(3.14 @ Sep 5 2007, 15:17) *
А что в скрипте all.sh должно быть?

crosstools? Этот скрипт меняеть не надо. Он собственно все и собирает.
Цитата
Попробовал собрать buildroot, а эта падлюка останавливается (может просто стоять час ничего ни делая, на большее время терения не хватило) после загрузки binutils, причем я уже три разные версии binutils попробовал sad.gif

Сборка toolchain занимает несколько часов. crosstools все сообщения выводит на экран. buiodroot - не знаю.
Если перенаправить вывод, то экран будет пустой, а все сообщения пойдут в файл. Его лучше смотреть с помощью tail -F имя_файла с другой консоли.

Сообщение отредактировал amw - Sep 5 2007, 13:27
Прикрепленные файлы
Прикрепленный файл  all.sh.zip ( 2.17 килобайт ) Кол-во скачиваний: 26
 


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
v_shamaev
сообщение Sep 5 2007, 14:11
Сообщение #34


Местный
***

Группа: Свой
Сообщений: 304
Регистрация: 5-07-04
Из: г. Москва
Пользователь №: 259



Цитата(amw @ Sep 5 2007, 17:24) *
Если перенаправить вывод, то экран будет пустой, а все сообщения пойдут в файл. Его лучше смотреть с помощью tail -F имя_файла с другой консоли.


Я вот так делаю:
make -w 2>&1 | tee make.out

Можно потом лог посмотреть. Собирается действительно долго, не один час. Но если висит - посмотреть в каком месте, может что из интернета ждет.


--------------------
Водку пьянствовать и безобразия нарушать!!!
Go to the top of the page
 
+Quote Post
3.14
сообщение Sep 6 2007, 06:40
Сообщение #35


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



В продолжение сборки buildroot, сегодня, видимо из-за фазы луны smile.gif, сборка не остановилась на старом месте, зато встала потом с ошибкой:
Цитата
CC libc/sysdeps/linux/arm/syscall.os
libc/sysdeps/linux/arm/syscall.c: In function 'syscall':
libc/sysdeps/linux/arm/syscall.c:28: error: '__NR_syscall' undeclared (first use
in this function)
libc/sysdeps/linux/arm/syscall.c:28: error: (Each undeclared identifier is reported only once
libc/sysdeps/linux/arm/syscall.c:28: error: for each function it appears in.)
make[2]: *** [libc/sysdeps/linux/arm/syscall.os] Error 1
make[1]: *** [lib/libc.so.0] Ошибка 2


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
amw
сообщение Sep 6 2007, 07:49
Сообщение #36


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(3.14 @ Sep 6 2007, 09:40) *
В продолжение сборки buildroot, сегодня, видимо из-за фазы луны smile.gif, сборка не остановилась на старом месте, зато встала потом с ошибкой:
Цитата

CC libc/sysdeps/linux/arm/syscall.os
libc/sysdeps/linux/arm/syscall.c: In function 'syscall':
libc/sysdeps/linux/arm/syscall.c:28: error: '__NR_syscall' undeclared (first use
in this function)
libc/sysdeps/linux/arm/syscall.c:28: error: (Each undeclared identifier is reported only once
libc/sysdeps/linux/arm/syscall.c:28: error: for each function it appears in.)
make[2]: *** [libc/sysdeps/linux/arm/syscall.os] Error 1
make[1]: *** [lib/libc.so.0] Ошибка 2


Ну, из собственного опыта, toolchain либо собирается сразу и работает как надо, либо приходится долго изращатся с устранением вот таких ошибок.

Точно сказать что делать не могу.
Примерно следующая комбинация действий может помочь.
1. Что используется на ХОСТЕ для сборки (дистрибутив, версия хост компиллятора).
2. Как я понял, у Вас есть какой-то кросскомпилятор, может из состава BSP?
Что он говорит по команде
arm-linux-as -v
3. Что говорит по команде
arm-linux-gcc -v
4. Как я понял, у Вас есть корневая ФС (рамдиск)? Вы можете ее примонтировать на хосте?
Что говорят команды
ls -l lib/ld-linux*
ls -l lib/ld-*
Пути относительно точки монтирования этой ФС!!!
5. Какое ядро используется в оригинале?

Попробовать собрать buildroot или crosstools из компонентов тех-же версий и с той-же конфигурацией. Желательно, тем-же хост-компилятором, но это уже из разряда сказочных совпадений maniac.gif .

Искать причину ошибки компиляции и править исходники gcc/glibc занятие муторное.

Ну и на всякий случай, google иногда помогает найти нужный патч. Хотя, и не особо надейтесь на это.

Еще можно посмотреть архив списка рассылки на http://www.arm.linux.org.uk/mailinglists/ по toolchain. Сначала почитать Etiquette, потом появится список.

Сообщение отредактировал amw - Sep 6 2007, 07:53


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
3.14
сообщение Sep 6 2007, 08:11
Сообщение #37


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Чего то я не пойму ... buildroot сам качает ядро, toolchain, uClibc и т.п. потом по замыслу он и должен все это сам собрать и подготовить корневуху. Разве мое текущее ядро (из BSP) и тулчейн имеет к buildroot отношение?
Цитата
[root@linuxServer buildroot]# arm-linux-as -v
GNU assembler version 2.14.90.0.7 (arm-linux) using BFD version 2.14.0.0.7 20031029

[root@linuxServer buildroot]# arm-linux-gcc -v
Reading specs from /usr/local/arm-linux/lib/gcc-lib/arm-linux/3.3.2/specs
Configured with: ../gcc-3.3.2/configure --target=arm-linux --prefix=/usr/local/arm-linux --enable-languages=c,c++ --with-local-prefix=/usr/local/arm-linux/arm-linux --with-cpu=xscale --with-headers=/usr/local/arm-linux/arm-linux/include --host=i686-host_pc-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-shared --enable-c99 --enable-long-long --without-fp
Thread model: posix
gcc version 3.3.2
[root@linuxServer buildroot]#



Цитата
-rwxr-xr-x 1 root root 93888 Май 4 2006 lib/ld-2.3.6.so
lrwxrwxrwx 1 root root 11 Май 5 2006 lib/ld-linux.so.2 -> ld-2.3.6.so

lrwxrwxrwx 1 root root 11 Май 5 2006 lib/ld-linux.so.2 -> ld-2.3.6.so


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
v_shamaev
сообщение Sep 6 2007, 08:22
Сообщение #38


Местный
***

Группа: Свой
Сообщений: 304
Регистрация: 5-07-04
Из: г. Москва
Пользователь №: 259



Цитата(3.14 @ Sep 6 2007, 12:11) *
Чего то я не пойму ... buildroot сам качает ядро, toolchain, uClibc и т.п. потом по замыслу он и должен все это сам собрать и подготовить корневуху. Разве мое текущее ядро (из BSP) и тулчейн имеет к buildroot отношение?

Он может правильно собрать тулчейн, который потом можно использовать. Одно но - при сборке намертво привязывается к некоторым путям, переместить можно, но много возни. Лучше собрать где удобно, а потом сделать ссылку откуда удобно на корень тулчейна - и пользоваться.


--------------------
Водку пьянствовать и безобразия нарушать!!!
Go to the top of the page
 
+Quote Post
amw
сообщение Sep 6 2007, 09:33
Сообщение #39


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(3.14 @ Sep 6 2007, 11:11) *
Чего то я не пойму ... buildroot сам качает ядро, toolchain, uClibc и т.п. потом по замыслу он и должен все это сам собрать и подготовить корневуху. Разве мое текущее ядро (из BSP) и тулчейн имеет к buildroot отношение?

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

А в BSP есть glibc (ну или uClibc)? Почему-бы не использовать то, что есть.

Цитата
Он может правильно собрать тулчейн, который потом можно использовать. Одно но - при сборке намертво привязывается к некоторым путям, переместить можно, но много возни. Лучше собрать где удобно, а потом сделать ссылку откуда удобно на корень тулчейна - и пользоваться.

Главное разместить все правильно.
См. результат вывода arm-linux-gcc -v на предмет --prefix.
В этот префикс и нужно все положить.
Прописать в PATH (см. пост #25) и использовать.

По идее линкер должен сам все найти (в смысле библиотеки), если они расположены в тех местах, где он ищет.
Если не находит, указать -Lпуть_к_библиотекам. Например
Код
LDFLAGS=-L/usr/local/arm-linux/arm-linux/lib configure
make

Для busybox это не проходит. Найдите в .config файле или Makefile LDFLAGS и пропишите пути.

Я почему-то решил, что в BSP нет glibc - потому и нужно компилировать.
Если есть, используйте их!


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
3.14
сообщение Sep 6 2007, 10:27
Сообщение #40


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



В /usr/local/arm-linux/arm-linux/lib лежит одна либа libiberty.a и директория gcc-lib, наверное это все-таки не те либы которые нужны для сборки бузибокса.

В /home/pi/src/linux-2.6.12.4-col2/lib/ лежит lib.a и небольшая кучка исходников (типа vsprintf.c ...) с объектниками, это оно (glibc) ?

Насколько я понимаю, мне нужно еще и пути к хидерам указывать (-I /home/pi/src/linux-2.6.12.4-col2/include ...), только там куча поддиректорий (в /linux-2.6.12.4-col2/include) типа asm, asm-arm ...

Еще, в makefile бузибокса LDFLAFS := ${LDFLAGS}, т.е. насколько понимаю, где то в меню должно быть поле для ввода? Пока ничего подобного не нашел.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
amw
сообщение Sep 6 2007, 11:18
Сообщение #41


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(3.14 @ Sep 6 2007, 13:27) *
В /usr/local/arm-linux/arm-linux/lib лежит одна либа libiberty.a и директория gcc-lib, наверное это все-таки не те либы которые нужны для сборки бузибокса.

Посмотрите в /usr/local/arm-linux/lib
Цитата
В /home/pi/src/linux-2.6.12.4-col2/lib/ лежит lib.a и небольшая кучка исходников (типа vsprintf.c ...) с объектниками, это оно (glibc) ?

Это только для ядра!!! Не используйте в программах!!!
Цитата
Насколько я понимаю, мне нужно еще и пути к хидерам указывать (-I /home/pi/src/linux-2.6.12.4-col2/include ...), только там куча поддиректорий (в /linux-2.6.12.4-col2/include) типа asm, asm-arm ...

Ссылки в исходниках на хедеры ядра идут с указанием подкаталога
#include <linux/fs.h>
#include <asm/types.h>
и тп.
Достаточно указать -I/home/pi/src/linux-2.6.12.4-col2/include
Программы довольно редко используют хедеры ядра.
Цитата
Еще, в makefile бузибокса LDFLAFS := ${LDFLAGS}, т.е. насколько понимаю, где то в меню должно быть поле для ввода? Пока ничего подобного не нашел.

Это значит, что используется переменная окружения. Используется так:
Код
make LDFLAGS=-L/usr/local/arm-linux/lib

или так
Код
export LDFLAGS=-L/usr/local/arm-linux/lib
make

ну или так
Код
make LDFLAGS="-L/usr/local/arm-linux/lib -L/usr/local/arm-linux/arm-linux/lib -L/usr/local/arm-linux/lib/gcc/3.3.2/lib"

Просто посмотрите где у Вас в toolchain есть файлы lib*.a и lib*.so* и укажите эти каталоги.
Если toolchain установлен ... ну скажем так ... не совсем правильно - то есть чего-то не хватает или не там лежит, то нужно прописывать пути к библиотекам и хедерам в ручную.
С другой стороны, busybox, не совсем правильная программа smile.gif.

Пропишите в Makefile путь прямо открытым текстом.


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
3.14
сообщение Sep 7 2007, 08:08
Сообщение #42


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



Спасибо, уже лучше, по крайней мере собраный бузибокс наконец заработал (в1.7).
Странно, я думал, если бузибокс собран не статически, то он должен и памяти меньше потреблять (после запуска), на данный момент каждая "реинкорнация" бузибокса берет !!!2М БАЙТА!!!, хотя старая (в1.2) отнмала по 0.5М.
Не статически, новый бузибокс, с ходу не собирается.

Далее, у меня есть исходники утилит Z-modem-а, как теперь должен выглядеть процесс их сборки под кросс-компилятором (просто в makefile подменить компилятор и LDFLAGS)?


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
amw
сообщение Sep 7 2007, 08:52
Сообщение #43


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(3.14 @ Sep 7 2007, 11:08) *
Спасибо, уже лучше, по крайней мере собраный бузибокс наконец заработал (в1.7).
Странно, я думал, если бузибокс собран не статически, то он должен и памяти меньше потреблять (после запуска), на данный момент каждая "реинкорнация" бузибокса берет !!!2М БАЙТА!!!, хотя старая (в1.2) отнмала по 0.5М.
Не статически, новый бузибокс, с ходу не собирается.

Далее, у меня есть исходники утилит Z-modem-а, как теперь должен выглядеть процесс их сборки под кросс-компилятором (просто в makefile подменить компилятор и LDFLAGS)?

Дальнейший процесс сборки софта кросс-компилятором выполняется путем
Код
cd в_каталог_исходников
configure --target=arm-linux --host=arm-linux

Не забудте прописать пути правильно!!!
Еще вариант.
Код
export CFLAGS="-Iпуть1 -Iпуть2"
export CXXFLAGS="-Iпуть1 -Iпуть2"
export LDFLAGS="-Lпуть1 -Lпуть2"
export CC=arm-linux-gcc
export CXX=arm-linux-g++
export LD=arm-linux-ld
configure --target=arm-linux --host=arm-linux

Здесь следует обратить внимание на то, что часто в качестве линкера после configure будет не ld, а gcc или g++. Тогда надо LD=arm-linux-gcc или LD=arm-linux-g++

Если нет configure, то тогда править Makefile.
Заменить переменные CC, CXX, LD, STRIP и им подобные. Указать кросс-компилятор.
Поправить CFLAGS, CXXFLAGS, LDFLAGS.
Ну и соответственно, некоторые программы вообще не используют переменных в Makefile, тогда заменить имя компилятора, линкера, флаги...


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
3.14
сообщение Oct 3 2007, 11:31
Сообщение #44


Их либе дих ...
******

Группа: СуперМодераторы
Сообщений: 2 010
Регистрация: 6-09-04
Из: Russia, Izhevsk
Пользователь №: 609



собрал новое ядро, дык оно упорно не хочет распаковывать ramdisk с корневухой, пишет:
Код
RAMDISK: Compressed image found at block 0
bad gzip magic numbers
Меняю ядро на старое, грузится без вопосов.
Если новому ядру подсунуть не gzip-нутый образ корневухи, тогда грузится нормально.


--------------------
Усы, борода и кеды - вот мои документы :)
Go to the top of the page
 
+Quote Post
amw
сообщение Oct 5 2007, 13:28
Сообщение #45


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=4
CONFIG_BLK_DEV_RAM_SIZE=4096
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
CONFIG_BLK_DEV_INITRD=y

А какое ядро? Может оно initramfs хочет?


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post

4 страниц V  < 1 2 3 4 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 17:02
Рейтинг@Mail.ru


Страница сгенерированна за 0.01501 секунд с 7
ELECTRONIX ©2004-2016