LinuxForum.Fans
Тема

Embedded Linux & software installation

Автор: godor2008 20 сообщений 4926 просмотров
#226651

Всем привет! Требуется помощь в пояснении способа установки программ.

Есть плата:
http://www.variscite.com/products/item/48-var-dvk-am35
с процессорным модулем:
http://www.variscite.com/products/item/32-var-som-am35-ti-sitara-am3517-am3505

Там установлена система:

text

root@am3517-evm:/home/mc_here/bin# uname -a
Linux am3517-evm 2.6.37 #1 Sun Aug 28 08:36:02 IDT 2011 armv7l unknown

К ней у меня есть доступ через SSH посредством Ethernet. Также там установлен фтп сервер, поэтому есть возможность передачи файлов.

В системе на плате отсутствует GCC, make, менеджер пакетов.

Каким образом возможно установить туда, скажем Midnight Commander?

Я установил в VirtualBox дистрибутив линукса Runtu. Скачал исходники Midnight Commander. Также установил GCC, make и необходимые либы. Как мне его теперь правильно скомпилировать для демоплаты?

Вариант:

text

./configure /home/complied_mc
make
make install

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

Заранее спасибо!

#226663

От рунты туда точно ничего переносить не надо. Рунта у вас какой архитектуры, а какой упомянутая железка?
Сначала надо точно выяснить архитектуру вашей железяки.

godor2008 написал:
armv7l

Вот этот иероглиф в вашем выводе стоит на месте, где пишется архитектура.
armel что-ли? Дебиановские сборки есть под armel.

godor2008 написал:
Embedded Linux
- это всего лишь значит "встроенный". А вот какой именно?
У вас что в документации написано, она есть вообще?
#226670

Так, документацию я на вашу железку посмотрел.
Архитектура arm. Эта архитектура была для Lenny, а для Сквиза есть armel, чисто под arm нету.(Это если предположить, на основе, что есть варианты с ядром как у Сквиза, что там какое-то подобие дебиана стоит.)
Под armel вот, наверное это и нужно.
Midnight Commander лежит вот здесь:
http://packages.debian.org/squeeze/armel/mc/download
при этом вот тут:
http://packages.debian.org/squeeze/mc
надо посмотреть что еще нужно по зависимостям. А кроме того, нужно(желательно), чтобы совпадали либы(версии), с которыми слинкован устанавливаемый софт. Получается конструктор, сродни LFS.
Файлы из деб-пакетов можно ставить после распаковки пакета, выполнив кроме этого, что там требуется в скриптах. Дело это не простое. Так что лучше обратиться в сапорт и спросить, откуда брать софт под их железо: support@variscite.com

Что выводят команды:
lsb_release -a
и
cat /etc/debian_version
?

#226716

Необходимо собрать кросс-компилятор на host системе. После этого можно смело компилить софт, однако должен быть как-то менеджер пакетов типа ipkg.

#226745

Так, документацию я на вашу железку посмотрел.
Архитектура arm. Эта архитектура была для Lenny, а для Сквиза есть armel, чисто под arm нету.(Это если предположить, на основе, что есть варианты с ядром как у Сквиза, что там какое-то подобие дебиана стоит.)
Под armel вот, наверное это и нужно.
Midnight Commander лежит вот здесь:
http://packages.debian.org/squeeze/armel/mc/download
при этом вот тут:
http://packages.debian.org/squeeze/mc
надо посмотреть что еще нужно по зависимостям. А кроме того, нужно(желательно), чтобы совпадали либы(версии), с которыми слинкован устанавливаемый софт. Получается конструктор, сродни LFS.
Файлы из деб-пакетов можно ставить после распаковки пакета, выполнив кроме этого, что там требуется в скриптах. Дело это не простое. Так что лучше обратиться в сапорт и спросить, откуда брать софт под их железо: support@variscite.com
Что выводят команды:
lsb_release -a
и
cat /etc/debian_version
?

Смогу это проверить только после выходных. Спасибо за ссылку на дебиановские пакеты! Я бы в жизни не догадался их там искать.

Необходимо собрать кросс-компилятор на host системе. После этого можно смело компилить софт, однако должен быть как-то менеджер пакетов типа ipkg.

В какую сторону копать и где это примерно? Ведь в компиляторе надо будет указать под какую архитектуру это все ело собирается. GCC не пойдет? На сайте производителя этой борды, есть инструкция по сборке ядра и toolchain.
http://www.variwiki.com/index.php?title=VAR-SOM-AM35_-_Linux_support

#226797
godor2008 написал:
На сайте производителя этой борды, есть инструкция по сборке ядра и toolchain.

Так, если есть toolchain,-это уже хорошо.
Как им пользоваться (прямо на этом арме), - принцип такой же как при сборке LFS.
Почитайте русский перевод к любой версии LFS-6.8, именно версия ядра там такая же как и у вас, и скорее всего всё остальное будет совместимым (это скорее всего ваш встроенный линукс с LFS-6.8 и собирался).
LFS-6.8 на русском здесь:
http://rus-linux.net/nlib.php?name=/MyLDP/BOOKS/LFS-BOOK-6.8-ru/lfs-6.8-ru-index.html

Дунуть себе на винт с переделкой в удобочитаемую форму можно таким скриптом:

text
#!/bin/sh
wget -q -nv -nc -r -l 1 -np http://rus-linux.net/MyLDP/BOOKS/LFS-BOOK-6.8-ru/lfs-6.8-ru-index.html
for i in `find rus-linux.net -name "*.html"`; do
    sed -i -e 's#/nlib\.php?name=##g' $i
done
wget -q -nv -nc -r -l 1 -np http://rus-linux.net/MyLDP/BOOKS/LFS-BOOK-6.8-ru/lfs-6.8-ru-index.html
wget -q -r http://rus-linux.net/MyLDP/BOOKS/LFS-BOOK-6.8-ru/img/{note,important,caution,warning}.png
for i in `find rus-linux.net -name "*.html"`; do
    sed -i -e 's#/nlib\.php?name=##g' -e '/lib\.php/d' -e '/base href/d' \
    -e 's/\/MyLDP\/BOOKS\/LFS-BOOK-6.8-ru\///g' -e 's/lfs-6\.8-ru-index\.html/index\.html/g' $i
done
mv -f rus-linux.net/MyLDP/BOOKS/LFS-BOOK-6.8-ru/{lfs-6.8-ru-,}index.html
sed -i -e 's/-ru-chapter02-01/-ru-chapter02-02/' rus-linux.net/MyLDP/BOOKS/LFS-BOOK-6.8-ru/lfs-6.8-ru-chapter02-00.html
sed -i -e 's/-ru-chapter00-02/-ru-chapter00-01/' rus-linux.net/MyLDP/BOOKS/LFS-BOOK-6.8-ru/lfs-6.8-ru-chapter00-00.html
cd rus-linux.net/MyLDP/BOOKS
tar czfp ../../../LFS-BOOK-6.8-ru.tar.gz LFS-BOOK-6.8-ru
cd ../../..
rm -rf rus-linux.net

Да, чуть не забыл, оригинал тоже будет крайне желателен,- читать лучше оба сразу ,- ну кому как, вот тарбол с html-книжкой:
http://archive.linuxfromscratch.org/lfs-museum/6.8/LFS-BOOK-6.8-HTML.tar.bz2

#226867

Спасибо! Будет что почитать smile

#226915
godor2008 написал:

В какую сторону копать и где это примерно? Ведь в компиляторе надо будет указать под какую архитектуру это все ело собирается. GCC не пойдет? На сайте производителя этой борды, есть инструкция по сборке ядра и toolchain.
http://www.variwiki.com/index.php?title=VAR-SOM-AM35_-_Linux_support

gcc и надо собирать. В инете много инструкций. Указываешь естестаенно целевую архитектуру.
У тебе будет нечно вроде arm-unknown-linux-gnueabi-gcc, которым будешь всё компилить

#227255
text
root@am3517-evm:/home# lsb-release -a
-sh: lsb-release: not found
root@am3517-evm:/home# cat /etc/debian_version
cat: can't open '/etc/debian_version': No such file or directory
#227273

godor2008, Выводы этих команд могли бы сообщить, что за линукс там стоит.
Теперь еще большее подозрение, что стоит сборка от самой этой фирмы.

У вас имеется тулчейн,- то есть как бы первая половина LFS пройдена.
Теперь нужно, используя тулчейн собрать себе минимальное окружение для сборки дальшейшего. Смотрите в книге LFS, как надо действовать после сборки тулчейна. В кратце : используя тулчейн соберете компилятор + еще утилиты и библиотеки, и уже сборка программ будет без тулчейна, который вам постовляется. (в тулчейне грубо говоря как бы временные компилятор, glibc и иже с ними).

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

#227283

Как раз сейчас с этим разбираюсь smile

#227793

Наметился небольшой прогресс:
Создал Helloworld.cpp в хостовом линуксе, скомпилил его там, закинул на демо-борду и оно работает!

Теперь хочу скомпилить туда текстовый редактор nano

#227804
godor2008 написал:
Наметился небольшой прогресс:
Создал Helloworld.cpp в хостовом линуксе, скомпилил его там, закинул на демо-борду и оно работает!

Теперь хочу скомпилить туда текстовый редактор nano

godor2008, Отлично!

Я бы порекомендовал бэкапить весь корень вашего творения на каждом критическом шаге, или(лучше и) досконально вести ручной лог,- что куда и как, чтобы при неудачном действии не начинать всё с начала.

#227862

Сейчас вот компилю и понимаю что я ведь должен указать для "nano" использовать версии библиотек от поставщика линукса.

text
sasha@sasha-desktop:~/nano-2.2.6$ ./configure CXX="arm-none-linux-gnueabi- -arch arm" --prefix=/home/sasha/nanores

arm-none-linux-gnueabi- - это префикс перед кучей файлов с gcc, g++, gdb и тд...

Используется туллчейн за 2009 год:
http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/
Оно было на диске вместе с демобордой

ВО время процедуры ./configure меня напрягает одно из сообщений:

text
checking whether we are cross compiling... no

Конфигуратор не понимает что я это делаю для арма

#227906

Теперь конфигуратор меня понимает:

text
/configure ARCH=arm CC="arm-none-linux-gnueabi-gcc" CROSS_COMPILE="arm-none-linux-gnueabi-" --host=arm-none-linux-gnueabi LDFLAGS="-L/home/sasha/target/lib/libncurses.a" CPPFLAGS="-I/home/sasha/target/include/ncurses/" --prefix=/home/sasha/target

Перед этим я скачал и скомпилировал библиотеку ncurses в папку /home/sasha/target

Теперь вот хочу сконфигурировать nano на использование *.h и *.lib из ncurses. Но сейчас всё равно получаю во время конфигурирования:

text
checking ncurses.h usability... no
checking ncurses.h presence... no
checking for ncurses.h... no
checking for get_wch in -lncursesw... no
checking for initscr in -lncurses... no
checking curses.h usability... no
checking curses.h presence... no
checking for curses.h... no
checking for get_wch in -lcurses... no
checking for initscr in -lcurses... no
configure: WARNING:
*** No curses lib available.  Consider getting the official ncurses
*** distribution from ftp://ftp.gnu.org/pub/gnu/ncurses if you get
*** errors compiling nano.
#227917

Таки скомпилировал:

text
./configure ARCH=arm CC="arm-none-linux-gnueabi-gcc" CROSS_COMPILE="arm-none-linux-gnueabi-" --host=arm-none-linux-gnueabi CFLAGS="-I/home/sasha/target/include -I/home/sasha/target/include/ncurses" LDFALGS="-L/home/sasha/target/lib" CURSES_LIB="/home/sasha/target/lib/libncurses.a" --prefix=/home/sasha/nanores

Правда все равно были странные сообщения:

text
checking for ncurses.h... no
checking for get_wch in -lncursesw... no
checking for initscr in -lncurses... no
checking curses.h usability... yes
checking curses.h presence... no
configure: WARNING: curses.h: accepted by the compiler, rejected by the preprocessor!
configure: WARNING: curses.h: proceeding with the compiler's result
checking for curses.h... yes
checking for get_wch in -lcurses... no
checking for initscr in -lcurses... no
configure: WARNING:
*** No curses lib available.  Consider getting the official ncurses
*** distribution from ftp://ftp.gnu.org/pub/gnu/ncurses if you get
*** errors compiling nano.
checking for use_default_colors in -l... no

Получил 2 папки: /nanores/bin и /nanores/share

В /nanores/bin находится 1 исполняемый файл и ссылка на него.

Я это всё заархивировал и скинул на демоборду. При попытке к запуску выдает:

text
root@am3517-evm:/home/nanores/bin# ./nano
Error opening terminal: xterm.

Посмотрел в гугле - пишут что ему может не хватать билиотеки

text
libncurses.a

. Я всю папку перекинул на демоборду и положил уже рядом с nano эту либу - не работает :( И папку специально lib создал и туда ее закинул. Безрезультатно:(

#227944

godor2008, у тебя nano скомпилировано без поддержки ncurses. Тебе его нужно статически скомпоновать с библиотекой.

#228024

При make посыпались вот такие ошибки в конце сборки:

text
browser.c:33: error: storage class specified for parameter 'filelist'
browser.c:33: error: parameter 'filelist' is initialized
browser.c:35: error: storage class specified for parameter 'filelist_len'
browser.c:35: error: parameter 'filelist_len' is initialized
browser.c:37: error: storage class specified for parameter 'width'
browser.c:37: error: parameter 'width' is initialized
browser.c:39: error: storage class specified for parameter 'longest'
browser.c:39: error: parameter 'longest' is initialized
browser.c:41: error: storage class specified for parameter 'selected'
browser.c:41: error: parameter 'selected' is initialized
browser.c:44: error: storage class specified for parameter 'search_last_file'
browser.c:44: error: parameter 'search_last_file' is initialized
browser.c:49: error: expected declaration specifiers or '...' before 'DIR'
browser.c:50: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:382: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:440: error: expected declaration specifiers or '...' before 'DIR'
browser.c:441: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:548: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:589: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:737: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:760: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:872: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:945: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:954: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:964: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:1014: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:1049: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:1055: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:1063: error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
browser.c:1078: error: old-style parameter declarations in prototyped function definition
/home/sasha/target/include/ncurses/curses.h:250: error: parameter name omitted
browser.c:1076: error: expected '{' at end of input
make[2]: *** [browser.o] Ошибка 1
make[2]: Выход из каталога `/home/sasha/nano-2.2.6/src'
make[1]: *** [all-recursive] Ошибка 1
make[1]: Выход из каталога `/home/sasha/nano-2.2.6'
make: *** [all] Ошибка 2

и бинарника после make install я вообще не получаю теперь.

В строке сборки изменил:

text
CFLAGS="-I/home/sasha/target/include/ncurses -L/home/sasha/target/lib"
#228052
SkaarjZR написал:
godor2008, у тебя nano скомпилировано без поддержки ncurses. Тебе его нужно статически скомпоновать с библиотекой.

в параметрах configure нет флага --static. А если его прописать всё таки, то появится о том что это неизвестный параметр

#228163
godor2008 написал:
в параметрах configure нет флага --static. А если его прописать всё таки, то появится о том что это неизвестный параметр

Я, честно, не знаю какой параметр задавать для сборки статически (может кто знает?).
Можно собрать как обычно, да установить ncurses на целевую систему.

Войдите или зарегистрируйтесь, чтобы ответить.