klishl_logo

Кросс-компиляция под ARM — Klish 2.1.2

Почти случайно наткнулся на интересный «фреймворк» под названием Klish. Расшифровывается это дело так: Kommand Line Interface Shell. Это форк известного в узких кругах проекта clish версии 0.7.3, который в свою очередь расшифровывается как Command Line Shell Framework. Коротко говоря, klish позволяет делать cli (command line interface, она же консоль, он же командный терминал и т.д.) в стиле, в котором оно сделано на известном сетевом оборудовании от Cisco — удобный интерфейс для терминального управления. Конфигурируется фреймворк этот с помощью XML-файлов, т.е все команды для вашего cli терминала вы объявляете в xml файлах. Команды могут обращаться к shell, либо вы можете создавать для команд отдельные функции-обработчики на языке C (потому что движок klish написан на C). Также имеется поддержка скриптов Lua. Короче говоря, прикольная штука, можно делать терминалы для различных embedded систем, можно делать удобные оболочки для серверов — чтобы было удобно в обслуживании и много чего еще.

Официальный сайт проекта: http://libcode.org/projects/klish

А мы займемся любимым занятием — кросс-компиляцией этого проекта. Будем собирать минимальную сборку — только xml-движок и сам klish (без lua и других плюшек). Делаем все в старом стиле — я вам bash-скрипт, вы скачиваете исходники и запускаете эти скрипты и наслаждаетесь сборкой, в данном случае это все очень просто.

Кстати, можете посмотреть различные другие статьи с кросс-компиляцией:

Для кросс-компиляции Klish 2.1.2 нам понадобится следующие исходники (ссылки проверены 22.06.16):

Обязательно нужен «xml-движок», с помощью которого будут парсится xml-файлы с нашими командами. Я выбрал самый простенький и легковесный для примера — libroxml. А вообще klish поддерживает следующие библиотеки: libxml2, libroxml, expat. Выбирайте на свой вкус.

Но если вы еще не поставили кросс-компилятор, то делаем так:

# apt-get install gcc-4.7-arm-linux-gnueabi
# apt-get install gcc-arm-linux-gnueabi

Первым делом компилируем libroxml — легковесная библиотека для работы с форматом XML на языке C.
Создаем файл (назовем его для примера vmake.sh) в корне исходников libroxml со следующим содержанием:

Даем права на исполнение и запускаем. Если вы просто скопировали скрипт, то в /tmp/libroxml-2.3.0_arm будет 3 каталога: bin, include, lib.

Запоминаем пути до этих директорий и переходим к компиляции самого klish. Также создаем в корне пустой файл, который наполняем нашим bash скриптом:

Запускаем, компилируем. В /tmp/klish_arm такие же 3 каталога с готовым бинарником klish, который успешно наверно запускаем на нашей arm-машинке.

Сам cli запускается с помощью бинарника: bin/clish. Но обязательно надо «заэкспортить» глобальную переменную CLISH_PATH с указанием пути до наших xml-файлов с командами. Например, в каталоге исходников klish есть примеры таких файлов в директории xml-examples:

$ export CLISH_PATH=path_to_klish_src/xml-examples/clish

Ну и вот результат запуска:

klish_exampl

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">