Ник:
Пароль:

Контакты

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

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

Ник:
Пароль:

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

ОбновитьПодробнееВсегоВсего:7
Форум » starterkit.ru » Embedded Linux
Помогите с кросс компиляцией!
GLONIUM
Добавлено 11.01.2012 08:21
0
Сообщение: 1
GLONIUM
0

Пункты: 567
Регистрация: 19.05.2011
Доброго времени суток уважаемые форумчане!
Недолго побаловался с платой на at91sam9260 покомпилировал программы типа hello World и захотелось поставить что нибудь более серьёзное на плату (Appache, PostgresSQL). но проблема в кросс компиляции! Скачав исходники сподкнулся на вопросе а как компилировать для платы! Погуглив нашёл 2 способа
1) кросс компиляция на машине
2) компиляция на целевой платформе
а как это сделать подробно не нашёл нигде!
Вот в этом и вопрос! Ткнте носом на что нибудь почитать как это делается?
Заранее спасибо за помощь!
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 11.01.2012 09:40 Сообщение: 2
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
1) кросс компиляция на машине

так делал

Цитата
2) компиляция на целевой платформе

и так делал

Цитата
а как это сделать подробно не нашёл нигде!
Вот в этом и вопрос! Ткнте носом на что нибудь почитать как это делается?

а тут на форуме ничего нет? (я просто не помню, но треды такие регулярно поднимались)

для кросс-компиляции вполне сгодится компилятор, которым собирается ядро для вашей платы. ключевые слова "CC" или "CROSS_COMPILE"

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
GLONIUM
Добавлено 11.01.2012 13:08 Сообщение: 3
GLONIUM
0

Пункты: 567
Регистрация: 19.05.2011
Цитата
ключевые слова "CC" или "CROSS_COMPILE"

А можно подробнее пожалуйста!
Для обычной машины компилил как ./configure ./make install
А как быть с отладочной платой?
Спуститься к концу Подняться к началу
Персональная информация
Jury093
Добавлено 11.01.2012 14:39 Сообщение: 4
Jury093
4.5

Пункты: 54233
Регистрация: 25.05.2009
Пол: Мужчина
Из: Санкт-Петербург
Цитата
Цитата
ключевые слова "CC" или "CROSS_COMPILE"

А можно подробнее пожалуйста!
Для обычной машины компилил как ./configure ./make install
А как быть с отладочной платой?

в разных пакетах по разному.. попробуйте
Код
./configure --help

обычно там мелькают нужные ключи, типа ARCH, CROSS_COMPILE etc
ближе к выходным может приведу какой-нить пример..

На любой вопрос есть любой ответ.
Спуститься к концу Подняться к началу
Персональная информация
sasamy
Добавлено 11.01.2012 16:01 Сообщение: 5
sasamy
4.70

Пункты: 76994
Регистрация: 14.08.2009
Цитата
захотелось поставить что нибудь более серьёзное на плату (Appache, PostgresSQL). но проблема в кросс компиляции!


Ставить монструозные Apache и PostgresSQL помоему нет никакого смысла, если только вы не хотите перенести готовый проект с "большого" Linux на плату и ему требуются именно эти пакеты. Кросскомпиляция - buildroot, там есть lighttpd и sqlite, встроенный http сервер есть и в самом busybox.
Спуститься к концу Подняться к началу
Персональная информация
GLONIUM
Добавлено 12.01.2012 01:24 Сообщение: 6
GLONIUM
0

Пункты: 567
Регистрация: 19.05.2011
Понял как правильно использовать переменные окружения CC CROSS_COMPILE попробывал потренироваться на Appache ничего не вышло говорит что мол компилятор создаёт не запускаемые файлы! Попробывал скомпилить интерпритатор Python вроде скомпилился но на плате не запускается!!!
Вот такие плачевные результаты!
Спуститься к концу Подняться к началу
Персональная информация
Lampus
Добавлено 12.01.2012 08:40 Редактировалось 12.01.2012 08:47 Сообщение: 7
Lampus
5

Пункты: 3552
Регистрация: 26.04.2011
А какой-нибудь динамически полинкованный hello_world запускает нормально? Я себе благополучно скросскомпил linux-gpib вместе с драйверами, библиотекой и тестовой программой. Как правило CC ручками не указывается, если пакет использует autotools, то более корректно использовать --target и --host
И для правильной кросс-сборки некоторых пакетов нужно будет настроить запуск arm-овых бинарников с помощью qemu-arm и binfmt_misc (то бишь чтобы было можно в x86 окружении запускать ARM-овые ELF-бинарники).
Спуститься к концу Подняться к началу
Персональная информация
GLONIUM
Добавлено 12.01.2012 22:08 Редактировалось 12.01.2012 22:08 Сообщение: 8
GLONIUM
0

Пункты: 567
Регистрация: 19.05.2011
К сожалению пока научился только соборать с ключём -static. Я этот ключ засунул в переменную окружения наподобие export CC="arm-none-linux-gnueabi -static" и с такой переменной компилировал пакет! Есть придчувствие что так делать нехорошо! А как компилировать без static тоже пока тёмный лес! Компилятор собрал просто скопировал архив sourceryg++ распаковал в домашнюю директорию и настроил переменную PATH!
А насчёт запуска армовых бинарников наступил на грабли при компиляции appache!
Можно пожалуйста подробнее как настроить запуск ARM бинарников и как компилить без -static!
Заранее большое спасибо!
Спуститься к концу Подняться к началу
Персональная информация
Lampus
Добавлено 13.01.2012 08:52 Сообщение: 9
Lampus
5

Пункты: 3552
Регистрация: 26.04.2011
> Есть придчувствие что так делать нехорошо!
Предчувствие вас не подводит, так делать не то что "не хорошо", а очень даже плохо, особенно в случае таких крупных проектов как apache.
> Можно пожалуйста подробнее как настроить запуск ARM бинарников и как компилить без -static!
Начнём с того, какую стандартную сишную либу вы используете? Сомневаюсь что glibc или eglibc.
Спуститься к концу Подняться к началу
Персональная информация
Lampus
Добавлено 13.01.2012 08:59 Редактировалось 13.01.2012 09:16 Сообщение: 10
Lampus
5

Пункты: 3552
Регистрация: 26.04.2011
Скорей всего у вас сейчас используется uclibc, посему нужно использовать соотв. тулчейн, то бишь с префиксом arm-uclibc-, а не arm-none-gnueabi-
Вариантов тут несколько - откопать какой-нибудь собранный, воспользоваться buildroot (он сам соберёт нужный тулчейн), либо использовать crosstool-ng
Можете попробовать использовать CodeSourcery G++ Lite uCLibc
Идёте сюда http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/arm-uclinux , вбиваете свои данные, вам на e-mail придёт ссылка для скачивания.
Либо можете у меня забрать ftp://lampus.su/pub/Soft/Linux/tarballs/coding/codesourcery_lite/
Спуститься к концу Подняться к началу
Персональная информация
Форум » starterkit.ru » Embedded Linux