реклама на сайте
подробности

 
 
> Статическая сборка mc под ARM
KostyantynT
сообщение Jun 27 2011, 11:31
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 290
Регистрация: 27-06-05
Из: Киев
Пользователь №: 6 345



Написал это скрипт (выкладываю как есть, времени оптимизировать не было), тк статическая сборка 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..)



--------------------
Если в сердце дверь закрыта - надо в печень постучать..
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Jun 27 2011, 15:37
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (КонстантинТ @ Jun 27 2011, 13:31) *
Размер полученного бинарника 2,4Мб.

Да, размером очень удивили. Я думал, что он только снаружи убоговат, так он еще и внутри страшен sad.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Petka
сообщение Jun 27 2011, 16:13
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Цитата(zltigo @ Jun 27 2011, 19:37) *
Да, размером очень удивили. Я думал, что он только снаружи убоговат, так он еще и внутри страшен sad.gif

Может он просто не strip-нут?
Go to the top of the page
 
+Quote Post
xemul
сообщение Jun 27 2011, 16:48
Сообщение #4



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(Petka @ Jun 27 2011, 20:13) *
Может он просто не strip-нут?

mc с v4.7 (?) тянет за собой glib (TC собирал mc с zlib и slang, но можно и без них).
На безгуёвых машинах мне mc-light симпатичнее.
Go to the top of the page
 
+Quote Post
Ixt
сообщение Jul 2 2011, 20:13
Сообщение #5


Частый гость
**

Группа: Свой
Сообщений: 76
Регистрация: 27-10-06
Из: Брянск
Пользователь №: 21 724



Цитата(xemul @ Jun 27 2011, 19:48) *
(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 удаляется легким движением рук :-)

Зачем удалять? Нужно просто прошить прошивку в которой нет ничего не нужного. Так повторяемость и воспроизводимость получим.
Go to the top of the page
 
+Quote Post
und68
сообщение Apr 9 2012, 18:41
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 28-03-12
Пользователь №: 71 060



У меня с налету ничего не вышло.В линюксе новичок. Версия
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 ( 1005 байт ) Кол-во скачиваний: 85
Прикрепленный файл  slang.txt ( 3.92 килобайт ) Кол-во скачиваний: 217
 
Go to the top of the page
 
+Quote Post
und68
сообщение Apr 10 2012, 18:01
Сообщение #7


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 28-03-12
Пользователь №: 71 060



Цитата
По 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 закачивать
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- КонстантинТ   Статическая сборка mc под ARM   Jun 27 2011, 11:31
||- - alx2   Цитата(und68 @ Apr 9 2012, 23:41) При пос...   Apr 10 2012, 05:21
||- - faa   Цитата(und68 @ Apr 10 2012, 22:01) Сейчас...   Apr 11 2012, 03:39
|||- - und68   Цитата(faa @ Apr 11 2012, 06:39) А присте...   Apr 11 2012, 15:37
||- - alx2   Цитата(und68 @ Apr 10 2012, 23:01) У меня...   Apr 11 2012, 05:29
|- - КонстантинТ   Цитата(Petka @ Jun 27 2011, 19:13) Может ...   Jun 28 2011, 09:00
|- - Petka   Цитата(КонстантинТ @ Jun 28 2011, 13:00) ...   Jun 28 2011, 09:18
|- - КонстантинТ   Цитата(Petka @ Jun 28 2011, 12:18) а скол...   Jun 28 2011, 10:03
|- - klen   Цитата(КонстантинТ @ Jun 28 2011, 14:03) ...   Jun 29 2011, 04:40
- - SFx   Пару лет назад собирал mc под i.mx27. Вообще никак...   Apr 11 2012, 20:30


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th July 2025 - 02:27
Рейтинг@Mail.ru


Страница сгенерированна за 0.01358 секунд с 7
ELECTRONIX ©2004-2016