Jump to content

    
Sign in to follow this  
КонстантинТ

Статическая сборка mc под ARM

Recommended Posts

Написал это скрипт (выкладываю как есть, времени оптимизировать не было), тк статическая сборка mc (чтобы не тянуть на платформу ничего лишнего и потом легко можно было удалить) не совсем тривиальная задача. Тестировал на Ubunte x86_64. Предварительно надо в каталоге /opt хост машины под рутом создать каталог mc и дать права на запись. В системе должен быть установлен компилятор для кросс компиляции под нужную платформу (в моем случае arm-none-linux-gnueabi)

 

#!/bin/sh

cd $HOME

mkdir $HOME/mccrosscompile

export DEST=$HOME/mccrosscompile

cd $DEST

mkdir $DEST/src

mkdir $DEST/lib

mkdir $DEST/include

cd $DEST/src

 

wget ftp://ftp.fu-berlin.de/pub/unix/misc/slan...ng-2.1.4.tar.gz

tar zxf slang-2.1.4.tar.gz

cd slang-2.1.4/

CFLAGS="$CFLAGS -O2 -mcpu=arm926ej-s" ./configure --host=arm-none-linux-gnueabi --build=x86_64 --prefix=$DEST --without-png --enable-static

make clean -j7 && make -j7 && make static -j7

cp -d $DEST/src/slang-2.1.4/src/objs/libslang.a $DEST/lib/

cp -d $DEST/src/slang-2.1.4/src/*.h $DEST/include/

cd ..

 

 

# wget http://zlib.net/zlib-1.2.5.tar.gz

tar zxf zlib-1.2.5.tar.gz

cd zlib-1.2.5

CFLAGS="$CFLAGS -O2 -mcpu=arm926ej-s" CC='arm-none-linux-gnueabi-gcc' ./configure --prefix=$DEST --static

make clean -j7 && make -j7 && make static -j7

cp -d $DEST/src/zlib-1.2.5/libz.a $DEST/lib/

cp -d $DEST/src/zlib-1.2.5/*.h $DEST/include/

cd ..

 

# wget http://ftp.gnome.org/pub/gnome/sources/gli...b-2.28.7.tar.gz

tar zxf glib-2.28.7.tar.gz

cd glib-2.28.7

CFLAGS="$CFLAGS -O2 -mcpu=arm926ej-s" ZLIB_CFLAGS="-I$DEST/include" ZLIB_LIBS="-L$DEST/lib -L$DEST/lib -lz" CFLAGS="$CFLAGS ${ZLIB_CFLAGS}" LDFLAGS="$LDFLAGS ${ZLIB_LIBS}" glib_cv_stack_grows=no glib_cv_uscore=no ac_cv_func_posix_getpwuid_r=yes ac_cv_func_posix_getgrgid_r=yes ./configure --host=arm-none-linux-gnueabi --prefix=$DEST --build=x86_64 --enable-static

make clean -j7 && make -j7 && make install -j7

cd ..

 

# wget http://www.midnight-commander.org/download...-4.7.5.2.tar.gz

tar zxf mc-4.7.5.2.tar.gz

cd mc-4.7.5.2/

 

ac_cv_search_has_colors="-lslang" PKG_CONFIG_PATH=$DEST/lib/pkgconfig CFLAGS="$CFLAGS -O2 -mcpu=arm926ej-s" ./configure --host=arm-none-linux-gnueabi --build=x86_64 --with-zlib-static --with-glib-static --with-screen=slang --with-slang-includes=$DEST/include --with-slang-libs=$DEST/lib --without-x --without-gpm-mouse --enable-static=yes --disable-shared --disable-vfs --disable-doxygen-html --disable-doxygen-doc --disable-doxygen-dot CC='arm-none-linux-gnueabi-gcc -static -static-libgcc -fno-exceptions' CXX='arm-none-linux-gnueabi-g++ -static -static-libgcc -fno-exceptions' LDFLAGS='-Wl,-static -static -lc -lrt' LIBS='-lc -lrt ' --prefix=/opt/mc GLIB_LIBS=$DEST/lib/libglib-2.0.a

 

make clean -j7 && make -j7 && make install -j7

 

После окончания сборки вся папка /opt/mc переносится на целевую машину и при необходимости удалятся. /opt/mc/bin нужно добавить в PATH.

Также в файл .bashrc (или .profile еслив системе busybox) необходимо добавить строчку

export TERM=xterm

 

После отладки софта mc удаляется легким движением рук :-)

 

Размер полученного бинарника 2,4Мб. Просьба протестировать под другие платформы (mipsel..)

 

 

Share this post


Link to post
Share on other sites
1,86 с выключенной поддержкой VFS

секционироване кода и данных указывали компиллеру и линкеру, кто его этот mc знает - мож там много "мертвых тканей" ?

Share this post


Link to post
Share on other sites
(TC собирал mc с zlib и slang, но можно и без них).

Без slang - значит с ncurses. Хрен редьки не слаще.

 

На безгуёвых машинах мне mc-light симпатичнее.

 

mc вышел из состояния стагнации, в нём постоянно правят баги(а их хватает) и добавляют фичи.

mc-light - это что-то заброшенное из 2004-го года? На любителя.

 

Размер mc можно ещё слегка уменьшить, если отключить заведомо ненужное на embedded:

если конфигурировать glib, например с опциями

--disable-selinux --disable-fam --disable-largefile

 

Ну и mc c

--without-x --disable-largefile --disable-nls

 

 

А вообще не вижу смысла всё собирать статически. Могут понадобиться ещё программы кроме mc. Для того же gdb нужен ncurses, он может быть общим с mc и т.д.

 

После отладки софта mc удаляется легким движением рук :-)

Зачем удалять? Нужно просто прошить прошивку в которой нет ничего не нужного. Так повторяемость и воспроизводимость получим.

Share this post


Link to post
Share on other sites

У меня с налету ничего не вышло.В линюксе новичок. Версия

Linux debian 2.6.26-1-686 #1 SMP Sat Jan 10 18:29:31 UTC 2009 i686 GNU/Linux

это что была с платой SK-AT91SAM9XE512-S3E

Библиотке простроиласть сраху только одна libz.a

При построение остальныx ошибки, конец выполнения файла для построения библтотек с ошибками в

подклеенных файлах.

 

В принципе мне нужен только MC, может кто выложит готовый

glib.txt

slang.txt

Share this post


Link to post
Share on other sites
При построение остальныx ошибки, конец выполнения файла для построения библтотек с ошибками в

подклеенных файлах.

По glib: Опция -Bsymbolic-functions у линкера появилась начиная с версии 2.18. У Вас, видимо, binutils более старой версии. Вам следует либо использовать более свежий binutils (текущая версия 2.22), либо найти в исходниках glib эту опцию и убрать.

 

По slang: не найден файл pcre.h. Во-первых, убедитесь, что он у Вас вообще есть (то есть должен быть собран и установлен pcre). Во-вторых, попробуйте при конфигурации указать slang'у, где лежит pcre, добавив в команду конфигурации --with-pcre=DIR

 

И еще я бы посоветовал воспользоваться каким-нибудь готовым фреймворком для сборки системы и всех приложений, типа openwrt или openembedded, вместо того чтобы все собирать вручную. Тем более если Вы - новичок...

Share this post


Link to post
Share on other sites
По glib: Опция -Bsymbolic-functions у линкера появилась начиная с версии 2.18. У Вас, видимо, binutils более старой версии. Вам следует либо использовать более свежий binutils (текущая версия 2.22), либо найти в исходниках glib эту опцию и убрать.

 

По slang: не найден файл pcre.h. Во-первых, убедитесь, что он у Вас вообще есть (то есть должен быть собран и установлен pcre). Во-вторых, попробуйте при конфигурации указать slang'у, где лежит pcre, добавив в команду конфигурации --with-pcre=DIR

И еще я бы посоветовал воспользоваться каким-нибудь готовым фреймворком для сборки системы и всех приложений, типа openwrt или openembedded, вместо того чтобы все собирать вручную. Тем более если Вы - новичок...

Спасибо за ответ. Полез разбиратся и читать про PCRE ,opewwrt и прочие вещи.

У меня к Вам большая просьба - Вы может для меня собрать MC под ARM9, а то время поджимает. На этой плате разработано устройство и для его отладки мне переодически надо править файлы на SD(MMC), котоая вставлена в эту плату.

Сейчас все происхордит очень долго - по tftp я гоню этот файл на линукс PC, там его правлю и снова по ftp на arm. Но это долго - поэтому и прошу Вас собрать его и выложить для меня. А чуть позже когда появится время и до MC доберусь, а дальше переход на новое ядро линукса на ARM и новый BuildRoot, так как надо помять состав встроенных утилит

Сейчас получилось запустить только связку eclipse + gdbdebug, но и то она немного кривовато работает, выполняемый модуль приходится пока самому на ARM закачивать

Share this post


Link to post
Share on other sites
Сейчас все происхордит очень долго - по tftp я гоню этот файл на линукс PC, там его правлю и снова по ftp на arm.

А пристегнуть файловую систему с махарайки к хосту по NFS что мешает?

Или наоборот - для отладки примонтируйте к изделию по NFS же хостовую и правьте.

После окончания правок и отладок сверните все в образ и залейте на SD/MMC.

 

Share this post


Link to post
Share on other sites
У меня к Вам большая просьба - Вы может для меня собрать MC под ARM9, а то время поджимает. На этой плате разработано устройство и для его отладки мне переодически надо править файлы на SD(MMC), котоая вставлена в эту плату.

Если надо только править фйлы, зачем Вам такой монстр как mc? Не лучше ли взять, например, nano? Вот, собрал, попробуйте: http://www.intellectronika.ru/utils/nano.tgz

 

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

Share this post


Link to post
Share on other sites
А пристегнуть файловую систему с махарайки к хосту по NFS что мешает?

Или наоборот - для отладки примонтируйте к изделию по NFS же хостовую и правьте.

После окончания правок и отладок сверните все в образ и залейте на SD/MMC.

Образ был сделан до меня и NFS там нет

Сходу его включить не получилось

 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this