Ник:
Пароль:

Контакты

E-mail: info@starterkit.ru
тел.: +7 922 680-21-73
тел.: +7 922 680-21-74
Телеграм: t.me/starterkit_ru
Партнеры:
otladka.com.ua - г.Киев

Способы оплаты

User Info


Добро пожаловать,
Guest

Регистрация или входРегистрация или вход
Потеряли пароль?Потеряли пароль?

Ник:
Пароль:

ПользователейПользователей:1
Поисковых ботовПоисковых ботов:3
ГостейГостей:1

ОбновитьПодробнееВсегоВсего:5
Форум » starterkit.ru » Embedded Linux
sasamy (Guest)
Добавлено 27.01.2009 23:07 Редактировалось 27.01.2009 23:07 Сообщение: 21
sasamy (Guest)

Загрузчик я свой собрал - ему libc не требуются, попробовал сбрать buildroot - на busybox сразу ругань, не находит пути к инклудам uclibc. Куда его нужно распаковать чтобы он правильно заработал ? судя по этому
Цитата
DISTFILES=~/Distrib
TMP=/tmp

ARCH=arm
TARGET=armv5l-linux-uclibc
PROGPREFIX=$(TARGET)-
PREFIX=$(HOME)/$(TARGET)
CROSS_COMPILE=$(PROGPREFIX)
PATH=$(PREFIX)/bin:$(shell echo $$PATH)

HOME в префикс была включена - не думаю что у нас названия хомяков совпадают :) Чего делать то ? :)

Непонятно - не находит инклуды даже если скопировать в /home/repman
ИМХО что-то намудрено с префиксами при сборке тулчайна - ничего не может найти от uclibc - ни хидеров, ни библиотек...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 27.01.2009 г. в 23:49:32
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 28.01.2009 12:59 Редактировалось 28.01.2009 12:59 Сообщение: 22
repairman (Guest)

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

Я сделал копию тулчейна в buildroot (она же $(BASE_DIR)), директорию sys-root тулчейна назначил как BR2_STAGING_DIR - все само находится и работает, из списка BR2_TOOLCHAIN_EXTERNAL_LIBS по умолчанию нужно 1 библиотеку убрать (кончается на _s), ее в моем toochain не пердусмотрено....

Код

BR2_STAGING_DIR="$(BASE_DIR)/armv5l-linux-uclibc/armv5l-linux-uclibc/sys-root"
BR2_TOOLCHAIN_EXTERNAL_PATH="$(BASE_DIR)/armv5l-linux-uclibc"
BR2_TOOLCHAIN_EXTERNAL_PREFIX="armv5l-linux-uclibc"

BR2_TOOLCHAIN_EXTERNAL_LIB_C="libc.so.0"
BR2_TOOLCHAIN_EXTERNAL_LIBS="ld-uClibc.so.0 libcrypt.so.0 libdl.so.0 libm.so.0 libnsl.so.0 libpthread.so.0 libresolv.so.0 librt.so.0 libutil.so.0"


Код

[repman@repairman buildroot]$ ls -la
итого 180
drwxrwxr-x 15 repman repman 4096 Янв 27 17:59 .
drwxr-xr-x 15 repman repman 4096 Янв 23 11:26 ..
drwxrwxr-x 10 repman repman 4096 Янв 23 14:58 armv5l-linux-uclibc
-rw-rw-r-- 1 repman repman 602 Янв 27 15:24 .auto.deps
drwxrwxr-x 3 repman repman 4096 Янв 27 17:49 binaries
drwxrwxr-x 22 repman repman 4096 Янв 27 17:56 build_arm
-rw-rw-r-- 1 repman repman 18722 Янв 27 17:48 .config
-rw-rw-r-- 1 repman repman 25270 Янв 27 15:24 .config.cmd
-rw-rw-r-- 1 repman repman 10766 Янв 20 23:38 Config.in
-rw-rw-r-- 1 repman repman 18170 Янв 27 13:02 .config.old
-rw-rw-r-- 1 repman repman 1269 Янв 20 23:38 .defconfig
drwxrwxr-x 2 repman repman 4096 Янв 27 15:24 dl
drwxrwxr-x 4 repman repman 4096 Янв 20 23:37 docs
-rw-rw-r-- 1 repman repman 15497 Янв 20 23:38 Makefile
drwxrwxr-x 293 repman repman 12288 Янв 20 23:38 package
drwxrwxr-x 3 repman repman 4096 Янв 20 23:37 project
drwxrwxr-x 3 repman repman 4096 Янв 27 17:49 project_build_arm
drwxrwxr-x 3 repman repman 4096 Янв 20 23:37 scripts
drwxrwxr-x 6 repman repman 4096 Янв 20 23:38 .svn
drwxrwxr-x 22 repman repman 4096 Янв 20 23:37 target
-rw-rw-r-- 1 repman repman 432 Янв 20 23:38 TODO
drwxrwxr-x 14 repman repman 4096 Янв 20 23:37 toolchain
drwxrwxr-x 10 repman repman 4096 Янв 27 17:56 toolchain_build_arm


При сборке buildroot - BR2_STAGING_DIR передается для gcc как sysroot, а в нем есть все необходимое (headers, libs и т.д.) для сборки...
Имейте ввиду, что sys-root должен быть WRITABLE, т.к. buildroot будет туда по ходу сборки еще добавлять библиотеки, бинарники и т.п.... поэтому же лучше работать с копией тулчейна...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 28.01.2009 г. в 13:29:24
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 28.01.2009 13:28 Редактировалось 28.01.2009 13:28 Сообщение: 23
sasamy (Guest)

Неее - так не интересно, нормальному тулчайну ничего не нужно прописывать. Кстати есть неплохой проект по автоматизированной сборке совего нормального тулчайна crosstool
Кстати в продолжении темы о тулчайнах и busybox - почему-то у меня с uclibc не работает mdev и не могу залогиниться. Собираю прямо тут же с тулчайном 2007q - все работает как часы... Все перепробовал - oabi/eabi.
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 28.01.2009 13:35 Редактировалось 28.01.2009 13:35 Сообщение: 24
repairman (Guest)

Цитата
Неее - так не интересно, нормальному тулчайну ничего не нужно прописывать.


Путь и префикс ты прописать любому внешнему toolchain'у должен, по любому... для моего только sysroot добавлен....
Кстати, наверное, можно не переназначать STAGING_DIR, а просто скопировать туда содержимое sys-root тулчейна... должно работать также.... (???)

Цитата

Кстати в продолжении темы о тулчайнах и busybox - почему-то у меня с uclibc не работает mdev и не могу залогиниться. Собираю прямо тут же с тулчайном 2007q - все работает как часы... Все перепробовал - oabi/eabi.


Такое у меня происходит только если uClibc собраны с eabi, если везде oabi - все ок....
eabi тулчейн у меня пока собрать не получается... либо он uclibc теряет, либо на eabi не переходит.... Никак не могу въехать какой ему правильный триплет задать для таргета... arm-uclibc-linux-gnueabi - теряется uclibc, arm-linux-uclibcgnueabi - теряется eabi... Может кто знает ???

p.s. crosstool видел, пользовал... там все очень старое...

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 28.01.2009 г. в 13:39:17
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 28.01.2009 13:41 Редактировалось 28.01.2009 13:41 Сообщение: 25
repairman (Guest)

Опа... а это совсем другой crosstool... Поизучаем....
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 28.01.2009 13:45 Редактировалось 28.01.2009 13:45 Сообщение: 26
sasamy (Guest)

Цитата
Путь и префикс ты прописать любому внешнему toolchain'у должен, по любому...

Это понятно - но sysroot тулчайну указывать не надо - он это должен сам знать.
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 28.01.2009 13:57 Редактировалось 28.01.2009 13:57 Сообщение: 27
sasamy (Guest)

На сайте crosstool нашел ссылку на проект
http://www.pengutronix.de/software/ptxdist/
говорят что это аналог buildroot - никто не пробовал его ? какие впечатления ?
Спуститься к концу Подняться к началу
repairman (Guest)
Добавлено 28.01.2009 14:39 Редактировалось 28.01.2009 14:39 Сообщение: 28
repairman (Guest)

Цитата

Это понятно - но sysroot тулчайну указывать не надо - он это должен сам знать.

Ты его НЕ тулчайну, а бьюлдруту указываешь... тулчайн хорошо знает где его sysroot, если не приказано в командной строке искать его в другом месте...

Если сможешь приказать buildroot НЕ использовать sysroot вообще - тогда можешь не указывать... я не знаю как ему запретить это делать, если не укажешь правильный, то buildroot свой подставит, где нет никаких библиотек и хеадеров...

Посмотри на процесс сборки, что передается gcc с параметром --sysroot... происходит принудительное переопредление sysroot, что приказано, то он и делает....

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно repairman 28.01.2009 г. в 15:13:20
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 28.01.2009 16:10 Редактировалось 28.01.2009 16:10 Сообщение: 29
sasamy (Guest)

Цитата
Посмотри на процесс сборки, что передается gcc с параметром --sysroot... происходит принудительное переопредление sysroot, что приказано, то он и делает....


Вот в этом и дело - нормальный тулчайн работает как бы ему не мешали внешние утилиты :) И для нормального тулчайна кроме указания пути и префикса ничего не нужно указывать в буилдруте.
Спуститься к концу Подняться к началу
sasamy (Guest)
Добавлено 28.01.2009 16:33 Редактировалось 28.01.2009 16:33 Сообщение: 30
sasamy (Guest)

Собственно к чему я это все :)
Вот я уже давал ссылку на crosstools
Собрал замечательный тулчайн с uclibc, правда все же oabi - все работает, достаточно указывать путь и префикс в buildroot.
Ядро с initramfs содержащей весь набор busybox + madplay+uclibc всего 2,2 Мбайт. Загрузчик поучился еще меньше чем раньше - спокойно влазит в 4 кбайт :)

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Отредактированно sasamy 28.01.2009 г. в 16:43:47
Спуститься к концу Подняться к началу
Форум » starterkit.ru » Embedded Linux