1

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

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

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

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 и необходимые либы.  Как мне его теперь правильно скомпилировать для демоплаты?

Вариант:

./configure /home/complied_mc
make
make install

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

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

2 (03.02.2012 20:28:47 отредактировано redux)

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

godor2008 пишет:

armv7l

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


godor2008 пишет:

Embedded Linux

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

3 (03.02.2012 20:42:19 отредактировано redux)

Так, документацию я на вашу железку посмотрел.
Архитектура arm. Эта архитектура была для Lenny, а для Сквиза есть armel, чисто под arm нету.(Это если предположить, на основе, что есть варианты с ядром как у Сквиза, что там какое-то подобие Debian стоит.)
Под 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
?

4

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

5

Так, документацию я на вашу железку посмотрел.
Архитектура arm. Эта архитектура была для Lenny, а для Сквиза есть armel, чисто под arm нету.(Это если предположить, на основе, что есть варианты с ядром как у Сквиза, что там какое-то подобие Debian стоит.)
Под 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 … ux_support

6 (04.02.2012 11:10:41 отредактировано redux)

godor2008 пишет:

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

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

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

#!/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 … ML.tar.bz2

7

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

8

godor2008 пишет:

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

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

9

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

10

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

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

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

11

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

12

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

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

13

godor2008 пишет:

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

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

godor2008, Отлично!

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

14 (08.02.2012 15:38:18 отредактировано godor2008)

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

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 … e-edition/
Оно было на диске вместе с демобордой

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

checking whether we are cross compiling... no

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

15

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

/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.  Но сейчас всё равно получаю во время конфигурирования:

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.

16

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

./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

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

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 исполняемый файл и ссылка на него.

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

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

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

libncurses.a

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

17

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

18 (09.02.2012 11:40:26 отредактировано godor2008)

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

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 я вообще не получаю теперь.

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

CFLAGS="-I/home/sasha/target/include/ncurses -L/home/sasha/target/lib"

19

SkaarjZR пишет:

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

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

20

godor2008 пишет:

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

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