Содержание


Разработка кросс-компилированных приложений на C/C++ для систем Linux on Power

Краткое введение в кросс-компиляцию, QEMU-режим usermode и пакет IBM SDK for Linux on Power

Comments

IBM® Software Development Kit (SDK) for Linux on Power представляет собой свободно распространяемую основанную на Eclipse интегрированную среду разработки (IDE). Этот SDK объединяет разработку исходных кодов на C/C++ с использованием Advance Toolchain, Post-Link Optimization и классические средства анализа производительности для Linux, включая Oprofile, Perf и Valgrind.

В данной статье описывается применение интегрированной среды IBM SDK совместно с IBM Advance Toolchain и QEMU-режимом usermode при разработке кросс-компилированных приложений для Linux on Power. Эти средства позволяют выполнять и отлаживать приложения, скомпилированные для одного процессора, на процессоре другой архитектуры (кросс-компиляция/отладка).

Требования

Для использования QEMU-режима usermode в SDK необходимо установить кросс-компилятор IBM Advance Toolchain, QEMU usermode и IBM SDK for Linux on Power.

В данной статье мы использовали следующие версии:

  • Кросс-компилятор IBM Advance Toolchain 8.0-1.
  • IBM SDK for Linux on Power 1.6.
  • QEMU usermode.

Важно! На момент написания данной статьи, когда вышел SDK 1.6, пакеты поддержки ppc64le (версия Linux on Power с обратным порядком байтов) отсутствовали. Для реализации последних усовершенствований группа разработки SDK предоставила специальный установочный пакет.

В качестве операционной системы использовался дистрибутив Fedora 20.

Установка кросс-компилятора IBM Advance Toolchain

IBM Advance Toolchain for PowerLinux™ – это набор инструментальных средств разработки исходных кодов и библиотек времени исполнения, позволяющий использовать под Linux новейшие аппаратные возможности IBM Power® (на момент написания данной статьи). Сюда относятся:

  • Поддержка IBM POWER8™.
  • Оптимизированный для POWER8 планировщик.
  • Поддержка транзакционной памяти POWER8.
  • Поддержка криптографических операций POWER8.
  • Поддержка POWER8 Fusion.

Для установки кросс-компилятора IBM Advance Toolchain выполните следующие действия:

  1. Загрузите общий пакет кросс-компилятора AT 8.0-1.
  2. Загрузите версию ppc64le кросс-компилятора AT 8.0-1.
  3. Для установки обоих пакетов выполните следующие команды:
    1. $sudo yum install -y ./advance-toolchain-at8.0-cross-common-8.0-1.x86_64.rpm
    2. $sudo yum install -y ./advance-toolchain-at8.0-cross-ppc64le-8.0-1.x86_64.rpm

Теперь пакет кросс-компилятора AT 8.0-1 установлен и находится в каталоге /opt/at8.0.

Установка SDK версии x86_64

В IBM SDK x86_64 поддерживаются версии 7.0-1, 7.1-0 и 8.0-1 кросс-компилятора IBM Advance Toolchain. Его также можно использовать для создания синхронизированных проектов разработки приложений с помощью удаленного сервера IBM Power.

Дополнительная информация о создании синхронизированных проектов приведена в Руководстве пользователя по SDK. Для получения доступа к серверу Power обратитесь на Web-сайт MiniCloud и отправьте запрос. Это бесплатно!

Вернемся к установке SDK. Выполните следующие действия:

  1. Загрузите IBM SDK for Linux on Power версии x86_64.
  2. Для установки пакета выполните следующую команду:

$sudo yum install -y ./ibm-sdk-lop-1.6.0-1.x86_64.rpm

Установка QEMU-режима usermode

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

На момент выхода SDK 1.6 в имеющейся версии QEMU usermode отсутствовали пакеты поддержки ppc64le. Чтобы исправить эту ситуацию, группа разработки SDK создала специальный устанавливаемый пакет.

Для установки QEMU usermode выполните следующие действия.

  1. Загрузите пакет QEMU usermode.
  2. Для установки пакета выполните следующую команду:

$sudo yum install -y ./qemu-user-space-emulator-1-1.x86_64.rpm

Теперь QEMU готов к использованию, но если вы хотите работать со свежей версией QEMU, ее можно собрать локально. Описанный ниже процесс очень прост:

Сначала проверьте наличие установленного Git.

  1. Скопируйте исходный код QEMU, выполнив следующие команды:
    1. git clone git://git.qemu.org/qemu.git
    2. cd ./qemu
  2. Создайте каталог build, выполнив следующие команды:
    1. mkdir -p bin/debug/native
    2. cd bin/debug/native
  3. Установите зависимости, выполнив команду:
    $sudo yum install -y zlib.x86_64 glibc-devel.x86_64 zlib-devel.x86_64 pixman-devel.x86_64 libfdt-devel.x86_64 glib2-devel.x86_64
  4. Настройте проект, выполнив следующую команду:
    ../../../configure --disable-debug-tcg --enable-tcg-interpreter --target-list="ppc64abi32-linux-user ppc64le-linux-user ppc64-linux-user" --disable-vnc --extra-cflags="-O3"
  5. Выполните следующую команду make:
    make -j5
  6. Установите двоичные файлы QEMU, выполнив следующую команду:
    $sudo make install

Важно! После установки двоичные файлы QEMU находятся в каталоге /usr/local/bin, но SDK настроен на использование /opt/ibm/qemu-user-space-emulator. Чтобы исправить эту ситуацию, выполните следующие действия:

  1. Создайте каталог, выполнив следующую команду:
    $sudo mkdir -p /opt/ibm/qemu-user-space-emulator
  2. Скопируйте двоичные файлы из каталога /usr/local/bin в каталог /opt/ibm/qemu-user-space-emulator, выполнив следующую команду:
    $sudo cp /usr/local/bin/qemu-ppc64 /usr/local/bin/qemu-ppc64abi32 /usr/local/bin/qemu-ppc64le /opt/ibm/qemu-user-space-emulator

Создание кросс-компилированного проекта

Процесс создания кросс-компилированного проекта с помощью IBM SDK for Linux on Power очень прост. После установки Advance Toolchain, QEMU и SDK можно приступить к разработке кросс-компилированного приложения на C/C++.

  1. Первым шагом является запуск SDK. Это можно сделать либо в командной строке, либо в графическом интерфейсе пользователя.
    • Использование графического интерфейса:
      Найдите IBM SDK for Linux on Power 1.6.
    • Использование командной строки:
      Выполните команду /opt/ibm/ibm-sdk-lop/ibm-sdk-lop

    После запуска SDK вам будет предложено выбрать рабочую область.

    Рисунок 1. Определение рабочей области
    Определение рабочей области
    Определение рабочей области

    После определения рабочей области SDK будет готов к использованию.

    Рисунок 2. Перспектива SDK
    Перспектива SDK
    Перспектива SDK
  2. Теперь можно создать кросс-компилированный проект. На вкладке Getting Started выберите New IBM Advance Toochain C Project или IBM Advance Toolchain C++ Project.

    Рисунок 3. Выбор типа проекта
    Выбор типа проекта
    Выбор типа проекта
  3. После выбора нужного типа проекта создайте конфигурацию нового проекта, указав имя, местоположение, тип и необходимый набор инструментальных средств.

    Рисунок 4. Конфигурация проекта
    Конфигурация проекта
    Конфигурация проекта
  4. Можно также настроить приложение, выбрав тип процессора.

    Рисунок 5. Настройка приложения
    Настройка приложения
    Настройка приложения
  5. Нажмите Finish для установки проекта в ранее созданную рабочую область. Она будет расположена на вкладке Project Explorer.

    Рисунок 6. Структура проекта
    Структура проекта
    Структура проекта

Сборка кросс-компилированного проекта

После создания проекта можно приступать к его сборке. Выберите проект, щелкните на нем правой кнопкой мыши и выберите Build Project.

Рисунок 7. Сборка проекта
Сборка проекта
Сборка проекта

После завершения процесса сборки двоичные файлы кросс-компилированного приложения появятся в ветке Binaries на вкладке Project Explorer.

Рисунок 8. Результат сборки
Результат сборки
Результат сборки

Выполнение кросс-компилированного проекта при помощи QEMU usermode

Для запуска кросс-компилированного проекта с использованием QEMU usermode необходимо выполнить следующие действия.

  1. Выберите проект, щелкните на нем правой кнопкой мыши и выберите Run As > Qemu.
    Рисунок 9. Запуск кросс-компилированного приложения в QEMU
    Запуск кросс-компилированного приложения в QEMU
    Запуск кросс-компилированного приложения в QEMU

    Поскольку приложение запускается в QEMU впервые, для него необходимо настроить новое средство запуска (launcher).

    Рисунок 10. Конфигурация QEMU launcher
    Конфигурация QEMU launcher
    Конфигурация QEMU launcher
  2. Теперь необходимо выбрать приложение. Нажмите Browse. Отобразится диалоговое окно Program Selection.

    Рисунок 11. Выбор двоичного файла
    Выбор двоичного файла
    Выбор двоичного файла
  3. Нажмите OK. Все обязательные поля заполнятся автоматически. Обязательными полями являются местоположение QEMU и пути к библиотекам, необходимым для работы приложения.

    Важно! Если приложение зависит от конкретных библиотек, необходимо разрешить все зависимости до его запуска.

    Рисунок 12. Обязательные поля
    Обязательные поля
    Обязательные поля
  4. Для установки местоположения новых библиотек нажмите кнопку Browse в разделе Libraries Paths.

    Рисунок 13. Менеджер путей к библиотекам
    Менеджер путей к библиотекам
    Менеджер путей к библиотекам
  5. В диалоговом окне Libraries Paths можно использовать кнопки New Path и Remove для добавления и удаления местоположения.

    Дополнительно можно настроить параметры QEMU. Результат выбранного параметра будет включен в файл qemu.log, отображаемый на вкладке Project Explorer. Доступные параметры показаны на рисунке 14.

    Рисунок 14. Параметры QEMU
    Параметры QEMU
    Параметры QEMU

    Подведя указатель мыши к любому параметру, вы увидите краткое пояснение (или подсказку). Например, если подвести указатель мыши к параметру int, появится пояснение, изображенное на рисунке 15.

    Рисунок 15. Подсказка
    Подсказка
    Подсказка

    После настройки всех параметров запуска приложения нажмите Run. Результаты будут показаны на вкладке Console.

    Рисунок 16. Выполнение приложения
    Выполнение приложения
    Выполнение приложения

    Важно! Если вы задали параметры QEMU, необходимо обновить приложение после выполнения, чтобы можно было просмотреть qemu.log.

Поддержка

В данной статье используются бесплатные инструментальные средства. Поддержка пользователей этих программ осуществляется силами сообщества developerWorks. Вопросы, комментарии и запросы о поддержке можно оставлять на форумах, которые просматривают эксперты.


Ресурсы для скачивания


Похожие темы


Комментарии

Войдите или зарегистрируйтесь для того чтобы оставлять комментарии или подписаться на них.

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Linux
ArticleID=1015186
ArticleTitle=Разработка кросс-компилированных приложений на C/C++ для систем Linux on Power
publish-date=01072015