dlinyj: (Default)
[personal profile] dlinyj
Мои дорогие и уважаемые пользователи операционной системы Windows, а так же люди, не знающие паяльника, пропускайте смело этот пост. Этот пост написан скорее для себя, и для людей которые мне могут помочь...

Итак, мои потуги скомпилировать хоть что-то серьёзное не увенчались успехом. В 99% случаев люди к которым я обращался, либо не могли мне помочь (спасибо громадное vshmuk) , либо отмахивались от меня, мол не до тебя. Либо изьяснялись так, что меня запутывали. Мне нужна книжка: "Пишем под линукс, для Френдли АРМ - для идиотов.", Или "Кроскомпиляция для дибилов" и т.п. Ибо, чем я больше гуглю, тем больше запутываюсь, тем больше возникает вопросов без ответов, тем больше я гуглю. Меня скоро забанят на гугле...

Итак, конкретный пример компиляции пакета minicom, который у меня не вышел:

Статья по кросскомпиляции http://www.ailis.de/~k/archives/19-ARM-cross-compiling-howto.html (ссылка скорее для меня на заметку)
dlinyj@dlinyj:~/tmp$ apt-get source minicom 
Чтение списков пакетов... Готово
Построение дерева зависимостей       

... парампампам, качаем пакеты, тут всё ок...

dlinyj@dlinyj:~/tmp$ cd minicom-2.3/
dlinyj@dlinyj:~/tmp/minicom-2.3$ CC=arm-linux-gcc ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /bin/mkdir -p
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for gcc... arm-linux-gcc
checking for C compiler default output file name... a.out
checking whether the C compiler works... configure: error: cannot run C compiled programs.
If you meant to cross compile, use `--host'.
See `config.log' for more details.


И что делать не знаю :(. А даже если б я его скомпилировал, то как бы я его установил на свою плату? Знаете что самое забавное? Что в этой плате нет gcc компилятора. Плюс я не знаю как подключить какой-нибудь репозитарий. Пусть дебиановский. Я бы хотя бы от туда для арма пакетов надёргал...

Date: 2009-10-24 08:00 pm (UTC)
From: [identity profile] d191t41-n0153.livejournal.com
а что у тебя стоит на целевой системе и на какой системе выполняются вышеозначенные комманды? я так понимаю то что выше, это ты пытаешься на своем десктопе как на хосте скомпилить пакет для своего арма как для таргета? если так, то на десктопе у тебя видимо дебиан, а что на таргете?

Date: 2009-10-24 08:12 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
На десктопе стоит Ubunta 9.04 . Ну хелловорлд скомпилился без сучка и задоринки:

dlinyj@dlinyj:~/tmp$ touch hello.c
dlinyj@dlinyj:~/tmp$ nano hello.c 
dlinyj@dlinyj:~/tmp$ arm-linux-gcc hello.c 
hello.c: In function 'main':
hello.c:2: warning: incompatible implicit declaration of built-in function 'printf'
dlinyj@dlinyj:~/tmp$ ls
a.out    hello.c


Ну и выполнение на армовской плате соответственно

[root@FriendlyARM /]# cd /sdcard/
[root@FriendlyARM /sdcard]# ./a.out
Dlinyj krutoj megacoder!!!
http://dlinyj.livejournal.com
[root@FriendlyARM /sdcard]# 


Тут кабы всё ок. (слово таргет непонятно ;) . На моём девайсе стоит QTopia

Date: 2009-10-24 08:21 pm (UTC)
From: [identity profile] f-andrey.livejournal.com
target -> цель
Если хочешь что то делать серьезное с линуксом, то английский надо хотя бы читать, хотя очень неплохо еще и писать ;) ну на крайняк гугл транслайт

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

Почитай дебиановскую документацию и вики, там процентов на 90 что то описано.

Date: 2009-10-24 08:25 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Это я понял, когда попробовал mc перенести с той платы, там куча либ, которая распихивается куда нужно при команде make install.
Но я так и не нашёл как это делать, где бы толково, для дебилов было бы написано. Как я понял, надо иметь некое подобие ядра системы. Боюсь как бы не пришлось ещё и ядро собирать, чтобы софтинку одну поставить...
Но мне кажется реально подключить репозитарий другого дистрибутива, который бы скачал всё что нужно.

Date: 2009-10-24 08:33 pm (UTC)
From: [identity profile] f-andrey.livejournal.com
> для дебилов было бы написано

Никогда не интересовался, и тебе не советую

"Почитай дебиановскую документацию и вики, там процентов на 90 что то описано."

> Боюсь как бы не пришлось ещё и ядро собирать, чтобы софтинку одну поставить...

а че тут боятся.
Про репозиторий вообще непонял.

Date: 2009-10-24 08:43 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
такое ощущение что мы говорим на разных языках, но я последнее время это часто подмечаю, когда задаю вопросы по линуксу :(...

Не потыкаешь носом, что именно гуглить и что стоит читать? (сейчас на меня, как и многие, махнут рукой и забью, и я снова останусь ни с чем :) ).

Про репозитарий, суть такова, что бинарно совместимы файлы. Есть репозитарий дебиана, к примеру, для армов. Вот думаю подключить его к своему линуксу. Хотя мне кажется это мёртвый номер.

Date: 2009-10-24 08:54 pm (UTC)
From: [identity profile] f-andrey.livejournal.com
Насчет разных языков, очень советую прочитать, и руководствоваться руководством http://www.opennet.ru/docs/RUS/smart_question/, вероятность получить желаемый ответ резко возрастет, если вообще останется желание задать вопрос ;)

С репозиториями все вряд ли получится, бинарные файлы обычно работают в пределах одного производителя, и даже обратной совместимости очень часто нет.
Если хочется дебиановские репозитории собирай дебиан, как читай его документацию, она у них очень и очень неплохая и подробная.

Date: 2009-10-24 08:41 pm (UTC)
From: [identity profile] d191t41-n0153.livejournal.com
я сам пока в теме плаваю.

таргетом я называю целевую систему, т.е. твой арм, вроде оно так и на самом деле называется, в данной ситуации.

то что ты собирал, там все правильно, но configure скрипт выполняет кучу всяких тестов, в том числе компилирует и прогоняет на твоем же компе какой-то тестовый код. естественно код скомпиленый под арм на х86 вылетает, причем оно тебе недвусмысленно на это намекает "If you meant to cross compile, use `--host'", т.е. ты наверное должен указать свой хост, чтобы если он не совпадает с архитектурой таргета - проверка не выполнялась. вообще это не более чем моя догадка, смотри параметры либо gcc либо configure. с высокой вероятностью дело именно в этом, у меня просто места нет линукс поставить чтобы проверить.

а QTopia это вроде как графический тулкит, ос так не может называтся, как я понимаю. прозреваю тут маргинальную китайскую сборку линукса, что, впрочем, не запрещает ее использовать.

что до установки, то я даже и незнаю. я бы просто нашел в make файле цель install и руками сделал все что там написано, если на целевой системе нету тулчейна(которого на эмбеде быть вобщем-то и не должно). т.е. читаешь make скрипт и руками раскладываешь все файлы выставляя права, если там такое указано. вроде как я помню minicom это консольное терминальное приложение, там не должно быть много файлов, вроде как это реально.

хотя можно подумать и о цивилизованной установке, но для этого надо знать какая пакетная система на твоем девайсе(скорее всего никакой), или иметь прямой доступ к корню его файловой системы, допустим по NFS или по sshfs(второе проще если ssh есть на целевой системе). просто монтируешь от имени рута корень к какой-то из дир своего хоста и в параметрах configure указываешь это как корневую директорию для установки. если я все понимаю верно, то все у тебя окажется ровно рассовано по дирам как положено.

ну и есть вариант замутить на целевой системе тулчейн, чтобы просто там же все собрать и установить. вполне хороший вариант, если место есть, а места для этого надо немало.

а вообще, если подходить серьезно к этому, то я бы сделал свою сборку линукса под это дело. вот тут обсуждение того, как это в принципе может быть сделано: http://forum.linux.by/viewtopic.php?f=2&t=10549

я какбы сейчас сам одновременно этой темой интересуюсь. пробовать у меня неначем(нет не хоста не таргета), но есть богатый опыт сборки на х86 корчах, поэтому постараюсь помочь по теоретической части.

вообще надо было бы и мне что-то такое приобрести. я еще немножко теорию покурю и начну определятся что мне надо и в каком виде.

Date: 2009-10-24 09:00 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
Пакетная система какая-то даже есть


Софтварный пакаджес


Запускаем, выбираем нетворк


Ссылка на репозитарий


Ну как мы понимаем, там ничего нет :(...

Ну по поводу руками сделать, я так и собирался. Другое дело, что я не могу скомпилировать никак :(. Плюс я не могу понять, как же перепрошить ядро :(... Т.е. если я со штатным геммороился, то как я буду страдать геммороем, с тем же Дебианом к примеру.

Я думаю найти уже скомпилированные пакеты под другие системы, и использовать их под мою. Не графические будут думаю полностью совместимы.

Буду благодарен за любую помощь, даже ссылки на гугл...

З.Ы. А что так плохо с местом?

Date: 2009-10-24 09:38 pm (UTC)
From: [identity profile] d191t41-n0153.livejournal.com
пакетная система эта мне незнакома, в принципе можно покопать на тему того, чтобы поднять хост на котором будут лежать пакеты годные для этой системы, но не уверен что это кратчайший путь решения проблемы установки пакетов на эту систему. я просто не в курсе

что до перепрошивки ядра, то вообще перепрошивка таких систем, насколько мне известно, реализуется средствами загрузчика установленного непосредственно в чип, который, кстати, в прицнипе можно заменить на один из стандартных(загрузчик, не чип). только отдельно ядро не прошивается, перезаливается вся FS, так что вполне имеет смысл сделать свою сборку или залить один из стандартных дистрибутивов. причем если какой-то их них таки заработает, то дополнительным гемором это врядли обернется, потому как все манипуляции с ним уже будут описаны в документации, в отличие от неизвестной системы установленной по факту. хотя в принципе, можно собрать ядро отдельно, залить его на SDшку и просто скопировать на место старого, если есть такая надобность, но у нас же проблема вроде как не в ядре, да и вообще, мало ли что, я так не пробовал делать, чтобы собирать ядро на одной системе и просто копировать его на другую. но пропробовать можно.

пакеты в принципе могут подойти, процесс линковки на либы для меня пока не особо понятен с теоретической точки зрения, но в принципе подходить они могут, другое дело, что непонятно как их устанавливать, да и структура дерева каталогов может не совпать в предусмотренной в пакете, поэтому лучше или устанавливать пакеты в ту систему для которой они предназначены или переносить файлы и следить за тем чтобы все было на своих местах вручную.

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

насчет места незнаю, просто предположение, я на вскидку не помню сколько там места на флешке.

а насчет системы автоматизированной сборки(тулчейна), то в первом же ответе в той теме которую я поднял на том форуме есть линки на такие системы. их конфигурация выполняется в стиле аналогичном конфигурации ядра через make menuconfig, что, вроде как, самое удобное из того что только можно представить.

Date: 2009-10-24 09:52 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
> принципе можно покопать на тему того, чтобы поднять хост на котором будут лежать пакеты ...
Не очень понял, что ты имеешь в виду?


>что до перепрошивки ядра, то вообще перепрошивка таких систем, насколько мне известно, реализуется средствами загрузчика установленного непосредственно в чип

Да, так оно и есть. Только я пока не до конца понял, как же её использовать...

>насчет места незнаю, просто предположение, я на вскидку не помню сколько там места на флешке.

Убунту можно поставить из под винды, и выделить ей столько места, сколько не жалко. При чём из под винды, винда будет грузится по дефолту.

Date: 2009-10-25 11:48 am (UTC)
From: [identity profile] d191t41-n0153.livejournal.com
>Не очень понял, что ты имеешь в виду?

ну там была какая-то урлка в интерфейсе, подозреваю что это путь к репозиторию. можно поднять репозиторий у себя и указать путь к нему, но для этого надо знать формат репозитория и возможно устанавливать специфический софт. не факт что это просто, не факт что это сложно.

>Только я пока не до конца понял, как же её использовать...

я пока читал вот про это: http://en.wikipedia.org/wiki/RedBoot , вот ссылка на сайт: http://ecos.sourceware.org/redboot/ там подробная документация. этот загрузчик использует альтернативная прошивка роутера dlink dir-300, он на MIPS, я пробовал - он работает. подозреваю что это вообще очень популярный загрузчик. также существует U-Boot - его использует вот та самая плата которую тебе жж юзер microtrigger дал, про этот загрузчик я еще не читал. он кажется в атмеловский арм зашивается по дефолту, а еще говорят что с ним есть некоторые проблемы, но, как видишь, решаемые.

>Убунту можно поставить из под винды, и выделить ей столько места, сколько не жалко. При чём из под винды, винда будет грузится по дефолту.

ты имеешь в виду десктоп или твой АРМ?

Date: 2009-10-25 12:10 pm (UTC)
From: [identity profile] dlinyj.livejournal.com

>Убунту можно поставить из под винды, и выделить ей столько места, сколько не жалко. При чём из под винды, винда будет грузится по дефолту.

ты имеешь в виду десктоп или твой АРМ?


Это я к тому, что у тебя места нет для линухов ;)

Date: 2009-10-25 01:25 pm (UTC)
From: [identity profile] d191t41-n0153.livejournal.com
ну вот просто нет. внешний винт полетел, а на ноуте 40 гигов, выкинуть нечего.

хотя жил же я когда-то на винте в 3.5 гига, и система умещалась и файлы.

Date: 2009-10-24 10:57 pm (UTC)
From: [identity profile] vshmuk.livejournal.com
>либо не могли мне помочь (спасибо громадное vshmuk)
Либо увлечены другой задачей и на Линукс пока положили :)

Date: 2009-10-25 12:31 am (UTC)
From: [identity profile] vshmuk.livejournal.com
http://gridder.cluster.edu.ioffe.ru/~diver/Temp/minicom
Попробуй это у себя запустить

Date: 2009-10-25 12:55 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Хз, что за фигня...

[root@FriendlyARM /]# cd /sdcard/
[root@FriendlyARM /sdcard]# ls
minicom
[root@FriendlyARM /sdcard]# ./minicom 
-/bin/sh: ./minicom: not found
[root@FriendlyARM /sdcard]# 

Date: 2009-10-25 01:13 am (UTC)
From: [identity profile] vshmuk.livejournal.com
Чмод не забыл?

Date: 2009-10-25 01:21 am (UTC)
From: [identity profile] vshmuk.livejournal.com
Если нет, то надо с другим ендианом перекомпилить

Уснул....

Date: 2009-10-25 09:29 am (UTC)
From: [identity profile] dlinyj.livejournal.com
Не, не забыл..

[root@FriendlyARM /sdcard]# ls -la
drwxrwxrwx    3 root     root        16384 Jan  1  1970 .
drwxr-xr-x    1 root     root         2048 Apr 28  2009 ..
drwxrwxrwx    4 root     root        16384 Oct 25  2009 .Trash-1000
-rwxrwxrwx    1 root     root       376753 Oct 25  2009 minicom
[root@FriendlyARM /sdcard]# ./minicom 
-/bin/sh: ./minicom: not found


Но не пашет...

Re: Уснул....

Date: 2009-10-25 02:08 pm (UTC)
From: [identity profile] vshmuk.livejournal.com
file /bin/bash
file /sdcard minicom
Сравни ответы

Re: Уснул....

Date: 2009-10-25 02:09 pm (UTC)
From: [identity profile] vshmuk.livejournal.com
То есть, file /sdcard/minicom

Re: Уснул....

Date: 2009-10-25 03:23 pm (UTC)
From: [identity profile] dlinyj.livejournal.com
[root@FriendlyARM /]# file /bin/bash
-/bin/sh: file: not found

Тут меня научили компилировать. Если получится, то напишу мегапост!

Re: Уснул....

Date: 2009-10-25 05:46 pm (UTC)
From: [identity profile] vshmuk.livejournal.com
Короче, я имел ввиду, что бинарник, который я выложил, скомпилен под 32-bit LSB executable, ARM

Date: 2009-10-25 05:52 am (UTC)
From: [identity profile] smont.livejournal.com
тут чел таким дивайсом занимается
http://blog.leshak.ru/2009/10/09/mini2440-za-85/

January 2026

S M T W T F S
    123
456 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 22nd, 2026 11:22 am
Powered by Dreamwidth Studios