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="">