|
|
|||||||||||||||||||||||||||||
|
Использование open source ПО c продуктами IBM: Cборка Libodbc++ на AIX5LИсточник: developerworks Артис Уолкер, консультант, IBM Цзы-Хва Цзен, консультант по разработке программного обеспечения, IBM
Время программного обеспечения с открытым исходным кодом наконец-то пришло. Несмотря на мнение конкурентов о разрушительности этой технологии, на протяжении более двадцати лет она уверенно набирает силу. IBM - лидер ИТ-индустрии, активно поддерживающий сообщество Open Source. В середине июня 1998 года IBM решила поддерживать открытый web-сервер Apache и включила его в свое ПО WebSphere. С этого времени приверженность IBM ПО Open Source существенно возросла, начиная с вклада в разработку ядра Linux и до возможности использования Linux в качестве основной операционной системы в старших моделях серверов IBM pSeries eServers. ODBC - это открытая спецификация, введенная Microsoft в начале 1990-х годов, чтобы обеспечить предсказуемое API для доступа к общим источникам данных. За прошедшие несколько лет эта спецификация фактически стала промышленным стандартом для разработчиков приложений, который дает возможность беспрепятственного соединения и обмена данными между приложениями и системами управления реляционными базами данных (СУБД). В типичной системе с ODBC диспетчер драйверов обеспечивает интерфейс для приложения. Он динамически загружает необходимый драйвер (или драйверы) для СУБД, с которой соединяется приложение. Существует несколько стандартных вариантов диспетчера драйверов для ODBC с открытым исходным кодом. На январь 2004 года для UNIX имеются следующие варианты: libodbc++ и диспетчер драйверов libodbc++ - это открытая библиотека классов C++, которая дает разработчикам объектно-ориентированный доступ к общим источникам данных в среде C++. Она была разработана с учетом стандартов, поэтому предоставляет подмножество хорошо известного JDBC 2.0 и работает поверх диспетчера драйверов ODBC, из которого должна запускаться libodbc++. Из диспетчеров драйверов, как платных, так и свободных, IBM рекомендует использовать диспетчер драйверов unixODBC и настроить его для работы с libodbc++. Информацию по настройке unixODBC на AIX5L можно найти в статье IBM embraces open source: How to setup unixODBC on AIX5L. На рисунке внизу показана типичная ODBC-система с libodbc++ и unixODBC в качестве диспетчера драйверов. Следует отметить, что libodbc++ является тонким клиентом, который находится между приложением и диспетчером драйверов ODBC (unixODBC). Поскольку она проектировалась с учетом стандартов ODBC, она никак не влияет на производительность. Она просто обеспечивает объектно-ориентированный подход для доступа к любому общему источнику данных с помощью драйвера ODBC. На рисунке выше показано приложение, осуществляющее доступ к двум общим источникам данных и источнику данных DB2. Таблица 1. Загрузка/использование - требуется пять отдельных команд
Загрузка и сборка из исходного кода libodbc++ можно загрузить по этой ссылке. На момент написания этой статьи на AIX5L успешно собрана и сконфигурирована версия 0.2.2. Для AIX рекомендуется использовать libodbc++ версии 0.2.2 и выше. Исходный текст в настоящее время доступен в формате gzip, tar. Это означает, что необходимо:
Для установки libodbc++ используется GNU
По умолчанию, configure ищет GNU-компилятор для сборки
Требования для сборки с помощью VisualAge C++ На AIX5L можно собрать Окружение
Директивы препроцессора
Параметры компоновки
Утилита конфигурирования (команда
Команда конфигурирования VACPP Для облегчения настройки предлагается образец сценария в качестве примера, его следует использовать только для конфигурирования libodbc++ с компилятором VACPP. Этот сценарий можно редактировать в соответствии со своими задачами и приспособить его к конкретной среде разработки на VACPP.
Не секрет, что утилита конфигурирования собирает системную информацию и использует ее для создания необходимых файлов Makefile, которые используются для сборки библиотек libodbc++, но это далеко не все, что она делает. Она создает также сценарии поддержки и ответные файлы, предназначенные для конкретной платформы (например, AIX). В свою очередь, полученные файлы Makefile используют эти сценарий и файлы в качестве входных для правильной сборки библиотек libodbc++ под целевую платформу. Одной из создаваемых утилит является libtool. Libtool обеспечивает зависящую от платформы обобщенную поддержку сборки библиотек для создания разделяемых и архивированных библиотек. Makefile вызывает libtool непосредственно, вместо использования команд Нужно отредактировать сценарий
Нужно сохранить изменения и продолжить сборку libodbc++, выполняя следующие команды:
Как при любой сборке открытого ПО, по умолчанию результат помещается в Известные ошибки компиляции VACPP Если на этом этапе возникнут какие-либо ошибки, это будут незначительные предупреждения и ошибки неопределенных типов C из-за невключенных заголовочных файлов. На момент написания этой статьи была замечена только одна ошибка, которую необходимо исправить, чтобы собрать libodbc++ 0.2.2 на AIX5L с помощью VACPP 5.0 или выше:
Проверка возможности соединения с источником данных После того как все успешно скомпилировалось, может потребоваться проверить возможность связи с источником данных. Чтобы это сделать, нужно зайти в каталог libodbc++
Например, в случае источника данных на DB2, можно проверить соединение с тестовой базой данных. Для источника данных на DB2 необходимо экспортировать переменную В зависимости от среды, в которой устанавливается соединение, во время выполнения этих тестов могут случаться ошибки, но их не следует пугаться. Важно, чтобы была возможность подключиться к источнику данных, и чтобы этот источник данных в списке вывода dbtest был помечен как доступный. Если не удается получить соединение с источником данных или его нет в списке вывода Этот пример сценария может быть использован для сборки libodbc++ версии 0.2.2 с помощью VACPP 5.0 или выше на AIX5L. В момент написания этой статьи сценарий делает все необходимые изменения. Можно поместить этот сценарий в верхний каталог исходных текстов libodbc++ и запустить его.
Что осталось сказать об open source такого, что еще не сказано? Оказывается, многое! С момента его рождения прошло примерно двадцать лет, и нет ничего такого, чего нельзя было бы найти в сообществе open source для решения возникшей проблемы, и разработка библиотеки libodbc++, бесспорно, является доказательством этого. Она так же надежна, как и спецификация ODBC API, являющаяся промышленным стандартом, и в то же время ее иерархия классов достаточно гибкая, чтобы дать возможность сохранить всю выразительность и стиль C++. Нет сомнений, что она создана для "упертого" разработчика на C++. Она обеспечивает уровень абстракции, который дает возможность разработчикам на C++ полностью разделить особенности различных СУБД и определить типы данных, которые инкапсулируют их возможности. И тот факт, что libodbc++ может быть собрана с помощью VACPP, не ограничивает эти возможности. Наоборот, среди всего прочего мы видели здесь, как могут быть использованы преимущества оптимизации компилятора VACPP, что проявляется в меньшем размере библиотеки. Эта статья показала, как IBM поддерживает сообщество open source, предоставив пошаговые инструкции по настройке libodbc++ на AIX5L. Кроме того, приведены инструкции о том, как собрать libodbc++ с помощью VACPP и с использованием unixODBC в качестве диспетчера драйверов. Для удобства был предоставлен настроечный сценарий, который может быть использован для сборки библиотеки libodbc++. Этот сценарий может быть выполнен в каталоге, где находится исходный текст libodbc++. Дополнительную информацию можно получить в статье "IBM Embraces Open Source: How to set up unixODBC on AIX5L" и в источниках, перечисленных в разделе Ресурсы. Ссылки по теме
|
|