harbor что это за программа

Harbor — реестр для Docker-контейнеров с безопасностью «из коробки»

31 июля организация CNCF объявила о принятии в свою «песочницу» (т.е. на самый ранний этап поддержки) нового Open Source-проекта, охарактеризованного как «облачный (cloud native) реестр», — Harbor. На его сайте нам объясняют, что продукт создан для управления образами Docker-контейнеров в безопасном окружении.

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

Казалось бы, уже есть Docker Registry (или, скажем, Quay от CoreOS), но очевидно, что новые решения не появляются и не дозревают до применения в production просто так — тем более, Open Source-решения… и уж тем более, попадающие в CNCF. Эта обзорная статья призвана пролить свет на причины появления Harbor, его ключевые возможности и особенности.

Первый фокус Harbor: сеть и enterprise

История проекта начинается в 2016 году, в марте которого состоялся первый публичный релиз — 0.1.0. За его созданием стояли инженеры компании VMware, которые описывали проект как «registry-сервер корпоративного класса», который, основываясь на разработках Docker, «расширяет возможности Docker Registry, добавляя в него больше функций, что обычно требуются в enterprise».

В то время акцент больше ставился на возможность использования этого реестра внутри компании, в частности, потенциально улучшая продуктивность благодаря хранению образов в корпоративной сети: «[Harbor] очень полезен для пользователей контейнеров, не обладающих хорошим подключением к интернету. Например, Harbor повышает производительность китайских разработчиков, устраняя сложности в загрузке образов из публичного интернета» (из README к Harbor 0.1.0).

Примечание: Ориентация Harbor на Китай, подтверждавшаяся и наличием соответствующей локализации с первых релизов, была не случайна: создание проекта как такового инициировало именно китайское подразделение компании (VMware China R&D).

Что стало уже повседневностью для cloud native-экосистемы, Harbor с самого начала был написан на языке Go и лицензирован на условиях Apache License 2.0. Если же говорить о функциональных возможностях проекта, то уже в первом релизе авторы заложили некоторые актуальные и по сей день фичи, такие как:

Эволюция Harbor: безопасность

В 2017 году в VMware нашли логичное применение своему новому проекту — интеграция с другими решениями компании для контейнеров. В частности, шло активное развитие vSphere Integrated Containers (VIC), которые, не являясь полноценной PaaS (Platform as a Service) или CaaS (Containers as a Service), предлагали некий фундамент для работы с контейнерами. На сегодняшний день из них, например, вырос vSphere Integrated Containers Engine, являющийся исполняемой средой контейнеров для vSphere. А вот как описывал в то время VIC инженер решений VMware (Nate Reid):

«VIC берёт каркас единственного Docker-хоста и масштабирует его на множество хостов ESXi. Предлагаемая им архитектура для оркестровки похожа на Swarm, Kubernetes (K8s) и Mesos. Однако здесь есть свои нюансы, а задачи заменить все эти продукты нет. VIC обеспечивает для контейнеров сеть, позволяет получать их имена, предлагает RBAC, панель управления на HTML5 (Admiral; подробнее о нём читайте в нашем обзоре GUI для Docker — прим. перев.), реестр корпоративного уровня (Harbor), множество аналогичных Docker команд, интеграцию с инструментами vSphere. [..]

Если вам нужна поддержка оркестровки с Kubernetes и/или возможности CI/CD на базе IaaS от VMware, стоит посмотреть на VMware PKS и/или Pivotal Cloud Foundry. Это уже решения класса CaaS и PaaS».

В то же самое время становится всё более актуальным вопрос безопасности Docker-образов. В начале 2018 года инженеры «братской» для VMware компании Pivotal ссылаются на исследование, согласно которому даже последние версии образов, размещённые на Docker Hub (как от сообщества, так и официальные), содержат многочисленные уязвимости (в среднем по 70 на образ).

Тут-то Harbor и предстал со своим новым предназначением, ориентированным на безопасность, и уже на упомянутой «почве» CaaS — в Pivotal Container Service (PKS):

«Это [наличие уязвимостей и другие проблемы безопасности в образах Docker] и есть причина, по которой мы включили так много полезных дополнений, делающих PKS надёжным и безопасным! [..]

Поскольку Kubernetes сам по себе не занимается такими вопросами [безопасным управлением образов], мы потрудились вместе с друзьями из VMware для того, чтобы включить Harbor в PKS».

Что же такого безопасного добавляется в Harbor (помимо уже реализованных в проекте RBAC и аудита)? Указываются два основных направления:

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

Harbor сегодня

Итак, предлагая реестр образов контейнеров для использования on-premises и обеспечивая безопасность в разных аспектах работы с ними, на сегодняшний день Harbor развился до следующей архитектуры, как видно, объединяющей в себе функции из других Open Source-проектов:

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

Помимо уже упомянутых Docker Registry, Clair и Notary, реализующих ключевые возможности Harbor, в этой схеме можно также увидеть ещё наличие двух СУБД:

Некоторые подробности об общем внутреннем устройстве Harbor можно также почерпнуть из этой wiki-страницы, на которую ссылается официальная документация проекта (однако есть подозрение, что некоторые детали по архитектуре могли местами устареть). Там же можно найти ссылки на инструкции по установке Harbor и его деплою в Kubernetes. Последняя, впрочем, объявлена устаревшей (основана на старых версиях, не поддерживает Clair и Notary), а вместо неё предлагается использовать Helm-чарт.

Актуальная версия Harbor — v1.5.2, выпущенная в конце июля. Требования к Linux-машине, на которую устанавливается свежий релиз реестра, — наличие Docker версии 17.03.0-ce (или выше) и Docker Compose 1.10.0+, а также Python и OpenSSL.

Очень интересным новшеством для будущей версии Harbor (уже вышла v1.6.0-rc1) выглядит поддержка Helm-чартов: «Harbor, начиная с версии 1.6.0, станет композитным cloud native-реестром, который будет поддерживать и управление образами, и управление чартами». Среди прочих планов по развитию значатся поддержка OAuth 2.0 для аутентификации пользователей, возможность развёртывания на множестве узлов для отказоустойчивости и балансировки нагрузки, сбор статистики по репозиториям и утилита для миграции на Harbor.

Вместо заключения

Harbor — пример успешного проекта из современного облачного мира, сумевшего найти свою нишу и зарекомендовать себя, попутно интегрируя возможности других Open Source-инструментов. Свидетельством же его успеха является не только включение в список проектов CNCF, но и 5000+ звёзд на GitHub, и достаточно активное сообщество разработчиков.

Источник

Русские Блоги

Докер-строительство частного склада Харбор

Каталог статей

1. Знакомство с гаванью

Хотя Docker официально предоставляет публичный репозиторий зеркал, также необходимо развернуть реестр в нашей частной среде с точки зрения безопасности и эффективности.

В основном он предоставляет интерфейс управления реестром Dcoker, который может быть основан на ролевом управлении доступом, зеркальной репликации, интеграции AD / LDAP, аудите журналов и других функциях, а также полностью поддерживает китайский язык.
harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

2. Основные функции Harbour

Пользователи и зеркальные репозитории Docker организованы и управляются через «проекты». Пользователь может иметь разные разрешения для нескольких зеркальных репозиториев в одном и том же пространстве имен (проекте).

Образ можно реплицировать в нескольких экземплярах реестра (образ в хранилище можно синхронизировать с удаленной гаванью, аналогично функции синхронизации MySQL master-slave), что особенно подходит для балансировки нагрузки, высокой доступности, гибридного облака и нескольких облачные сценарии.

Пользователи могут просматривать информацию в браузере, получать информацию о текущем зеркальном хранилище Docker, управлять проектами и пространствами имен.

Harbour может интегрировать существующий AD / LDAP в предприятие для управления аутентификацией.

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

Все операции на зеркальном складе можно записывать и отслеживать для управления аудитом.

RESTful API предоставляет администраторам больший контроль над Harbour, что упрощает интеграцию с другим программным обеспечением для управления.

Предоставляет инструменты для онлайн- и автономной установки, а также может быть установлен на виртуальном устройстве платформы vSphere (режим OVA).

Все компоненты Harbour развертываются в Docker, поэтому Harbor может использовать Docker Compose для быстрого развертывания.
Примечание. Поскольку Harbor основан на Docker Registry V2, версия докера должна быть> = 1.10.0 docker-compose> = 1.6.0.

Три, компоненты архитектуры гавани

Схема компонентов архитектуры:
harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа
1. Прокси: инструмент обратного прокси.

2. Реестр: отвечает за хранение образов докеров и обработку команд загрузки / выгрузки. Для управления доступом пользователей он указывает на службу токенов, вынуждая пользователя переносить законный токен при каждом запросе docker pull / push, а реестр расшифровывает и проверяет токен с помощью открытого ключа.

3. Основная услуга: основная функция Harbour:

4. База данных: предоставление служб базы данных, хранение разрешений пользователей, журналы аудита, информация о группировке образов докеров и другие данные.

5. Сборщик журналов: чтобы помочь контролировать работу порта, он отвечает за сбор журналов других компонентов для будущего анализа.

В-четвертых, размещение в гавани

4.1. Экологическая подготовка

Две виртуальные машины:

гавань (портовый сервер, используемый для строительства частного склада)
192.168.100.136 docker-ce, docker-compose (необходимо установить), Harbour

client (клиент, используемый для удаленного доступа к частному складу) 192.168.100.131 docker-ce

4.2. Установите compose и harbor

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа
harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

4.3, графическое управление гаванью

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа
harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа
Вы можете увидеть только что загруженное изображение в интерфейсе пользовательского интерфейса.
harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

4.4, порт управления удаленным доступом клиента

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

4.5. Скачивание и загрузка изображений с клиента на личный склад.

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа
harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

Мы проверяем, загружено ли изображение на частный склад на интерфейсе гавани.
harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

4.6 Резюме

В процессе построения следует отметить, что когда клиент удаленно входит в частный склад, он должен сначала указать адрес склада в файле docker.service, а затем загрузить и перезапустить докер перед входом в систему.
В противном случае будет ошибка, как показано на рисунке ниже.
harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

5. Управление портами и их обслуживание.

5.1, измените файл конфигурации Harbor.cfg

Подробные шаги следующие:
1. Закройте все контейнеры.

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа
2. Измените файл параметров.

5.2, работа интерфейса UI

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

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа
Загрузить изображение на портовый склад

harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа
загрузить изображение

Проверка интерфейса пользовательского интерфейса показывает, что загрузка прошла успешно!
harbor что это за программа. Смотреть фото harbor что это за программа. Смотреть картинку harbor что это за программа. Картинка про harbor что это за программа. Фото harbor что это за программа

Интеллектуальная рекомендация

Разработка Android NDK (1)

Источник

Harbour — новое лицо xBase family

Для справки: xBase — семейство систем программирования, СУБД, берущих начало с dBase (1980 г.). Их объединяет общий язык программирования ( естественно, с вариациями, присущими конкретной реализации ) и встроенные в этот язык средства доступа к реляционным базам данных формата DBF. Собственно, dBase начинался как СУБД с языком, предназначеннным для обслуживания баз данных. Это процедурный язык программирования, он относится к группе интерпретируемых языков и обладает многими, если не всеми, их родовыми чертами, такими, например, как динамическая типизация.

Clipper, непосредственный предшественник Harbour, был создан в 1985 г. с целью повышения производительности dBase III. Для этого исходный код программы преобразовывался на стадии компиляции в байт-код, который встраивался в исполнямый файл вместе с виртуальной машиной, предназначенной для исполнения этого байт-кода. Таким образом, Clipper давал на выходе автономный exe файл, не требующий для своего запуска и выполнения внешнего интерпретатора, как в случае dBase или FoxBase ( другой популярный xBase продукт ).

В конце 80-х и начале 90-х Clipper был очень популярен, он был одним из основных средств программирования для приложений, связанных с использованием баз данных, в первую очередь бухгалтерских, управленческих, банковских. Язык модернизировался от версии к версии, добавлялись новые подсистемы. Среди последних особенно следует отметить Extend System и RDD. Extend System (система расширения) предназначена для связи с модулями, написанными на С — вызов функций, передача параметров, получение возвращаемых значений. RDD — Replaceable Database Drivers (заменяемые драйверы баз данных) — технология, которая позволяла, прилинковав взамен стандартной другую, специальную библиотеку, работать с БД другого типа, не изменив ни строчки кода. Именно так Clipper-приложения работали, например, с Novell’овским Btrieve (если кто помнит, была такая клиент-серверная не SQL СУБД).

XBase системы всегда воспринимались как предназначенные, в первую очередь, для работы с базами данных и, возможно поэтому, с ростом популярности SQL стали выходить из тренда. И если с Fox’ом все было более-менее благополучно — купившая его Microsoft сделала на его основе популярный продукт Visual Foxpro, который еще несколько лет назад (в 2006, согласно Википедии), был на почетном 12-м месте в списке TIOBE, то у Clipper дела были куда хуже. Computer Associates, которая владела им с начала 90-х, сделала ставку на другие продукты. Clipper же остался в стороне от магистрального пути, назревшие проблемы не решались, а в 1997 году Computer Associates объявила о закрытии дальнейшей его разработки, оставив пишущих на нем программистов наедине с 16-разрядной, рассчитанной на применение в среде MS-DOS системой программирования.

Многие из тех, кто задумывался о своем будущем, мигрировали на другие платформы, но остались и те, кто считал, что достоинства Clipper, будучи реализованы в современной среде программирования, будут востребованы и дальше. Были созданы несколько таких реализаций (xBase++, Clip, Harbour), об одной из которых, наиболее успешной на этот день я и поведу речь — прошу простить меня за такое длинное, но, на мой взгляд, необходимое вступление.

Итак, Harbour. Проект стартовал в 1999 году, официальный сайт — www.harbour-project.org. Текущая версия — 3.0 (stable), 3.2 (development).

Как и Clipper, Harbour транслирует исходный текст программы в байт-код, но, в отличие от своего предшественника, компилятор Harbour создает не объектные, а с файлы, которые потом надо «скормить» С компилятору. Например, вот такую простейшую функцию, выводящую приветствие на консоль:

он транслирует в (комментарии — мои):

Рассмотрим байт-код подробнее:

Ваш проект может включать исходники на Harbour (*.prg), на C, специальные объектные файлы и библиотеки. С код может быть встроен и в prg-файл, его надо заключить в #pragma BEGINDUMP#pragma ENDDUMP и, естественно, он должен соответствовать соглашениям EXTEND SYSTEM (я упоминал о ней, когда говорил о Clipper). Ниже — пример такого симбиоза:

Я не случайно уделил столько внимания С в Harbour. Расширенная ( извините за невольную тавтологию ), по сравнению с Clipper, Extend System и Item API, предоставляющая доступ из С кода к внутренним структурам Harbour, его переменным, массивам, объектам позволяют говорить о симбиозе двух языков, я считаю это одной из важнейших особенностей Harbour. Благодаря этому Harbour уже «оброс» большим количеством модулей — оболочек к разнообразным продуктам, имеющим C API и список таких модулей, как open source, так и коммерческих, постоянно растет (в настоящее время подумываю об OpenCV). Конечно же, С используется в Harbour не только для создания оболочек к готовым продуктам, но и для самостоятельных разработок — новые RDD, GUI библиотеки и др. Иногда, в контексте некоторых приложений я рассматриваю Harbour как оболочку к С коду — для облегчения реализации пользовательского интерфейса, доступа к БД и пр.

Встроенный доступ к БД, эта родовая черта xBase, — еще одна тема, которой хочется уделить особое внимание. Это, действительно, очень удобно — иметь возможность, не используя внешние СУБД, с помощью только встроенных языковых средств производить все необходимые манипуляции с базами данных — создание, модификация, пополнение, редактирование, поиск. В случае, когда количество информации, хранящейся в БД, сравнительно невелико, использовать внешнюю СУБД представляется совершенно излишним, для таких приложений и MySQL выглядит монстром (а ведь некоторые даже MS SQL ставят) — xBase подход здесь выглядит наиболее адекватным решением. Впрочем, и для больших БД Harbour может применяться (и применяется) вполне успешно.

Приведу небольшой фрагмент кода, демонстрирующий типичные конструкции доступа к данным — для тех, кто не сталкивался с xBase языками раньше. Конечно же, арсенал средств для работы с БД в Harbour гораздо богаче, чем использованный в этих нескольких строчках.

Средства доступа к БД не ограничиваются стандартными. Есть RDD, написанные для клиент-серверных СУБД, как основанных на DBF ( коммерческая Advantage Database Server от Sybase и open source LetoDb ), та и SQL. Есть модули, обеспечивающие доступ посредством ODBC и ADO, есть модули для MySQL, PostgreSQL, SQLite, использующие C API этих СУБД.

В Harbour получили дальнейшее развитие все особенности Clipper, сделавшие его языком высокого уровня, на котором удобно программировать — автоматическое выделение и освобождение памяти, сборщик мусора, так называемые raw arrays, возможность компилировать и исполнять в run-time, в динамике фрагменты кода. Добавлена полноценная реализация ООП. Препроцессор, сохранив всю мощь Clipper’овского, расширен за счет некоторых конструкций, взятых из С. Впрочем, не буду перечислять здесь все новшества, а просто сошлюсь на раздел моего сайта Harbour для начинающих.

Да, я, кажется, забыл сказать, что Harbour — кроссплатформенная система с открытыми исходниками. Он существует на 32- и 64-разрядных платформах, на Windows, Linux, Unix, Mac OS X, QNX, OS/2, вроде бы и на Android, и еще на чем-то, чего я не видел.

Буду рад, если эта статья вызовет интерес. В этом случае можно будет рассмотреть какие-то аспекты более подробно.

Источник

Harbour для начинающих

Как установить Harbour и откомпилировать на нем свою программу. Особенности Harbour.

Скачать одним файлом: chm, версия 1.02

С сайта проекта вы можете скачать архив свежих исходников ( он там называется Source snapshot ) и так называемые nightly binary это готовый к использованию дистрибутив, откомпилированный из репозитария разработчиков прошедшей ночью.

А потом время от времени обновляете свой локальный репозитарий, выполняя в core/ команду git pull :

Кроме консольной команды git.exe дистрибутив Git содержит и графическую утилиту, которая, помимо прочего, предоставляет удобные средства для просмотра истории изменений, сравнения версий и т.п.

Примечание для тех, кто будет устанавливать Borland C 5.5.1 и не прочитает их readme.txt: чтобы он работал, необходимо вручную создать в bcc55\bin 2 файла:
BCC32.CFG: и ILINK32.CFG:

Кстати, чтобы запустить на исполнение небольшую программу, вы можете обойтись и без C.

Так, если у вас Borland C 5.5, то это будет выглядеть примерно так:

Для mingw может быть вот так:

Если у вас Линукс/Юникс, то достаточно запустить команду make.

Примеры для других платформ и компиляторов смотрите в README.txt ( до 14.11.2012 он назывался INSTALL ), раздел 8.EXAMPLES, там их множество.

Для начала этого хватит, но впоследствии вам, возможно, потребуется установить дополнительные переменные окружения для управления процессом сборки. Полный их список смотрите, опять-таки, в README.txt, а здесь я приведу лишь несколько примеров, чтобы было ясно, о чем идет речь.

На Unix/Linux системах это обычно не требуется, так как все эти 3rd party компоненты расположены в строго определенных местах и программа сборки сама их найдет. Чтобы, наоборот, запретить сборку этих модулей, вам надо присвоить соответствующей переменной значение no

Ну и, напоследок, еще одна переменная, она указывает на каталог, куда надо установить бинарники Harbour:

Ниже приведен bat’ник, которым я обычно пользуюсь, чтобы скомпилировать один prg (Borland C, gtwin):

Если вы хотите использовать gtwvt экранный драйвер, то последняя строчка будет выглядеть так:

Для Mingw C компилятора замените команду вызова C компилятора на:

Если вам надо построить программу из нескольких файлов, то можно использовать что-либо вроде этого (Borland C, gtwin):

Последовательность, естественно, та же, только синтаксис немножко другой (для консольного приложения с gtcrs):

Построить приложение, используя специальный конфигурационный файл проекта:

Построить приложение, используя свою библиотеку:

Построить приложение, из всех prg и c файлов, расположенных в каталоге src:

— для Windows: mingw, msvc, bcc, watcom, icc, pocc, xcc, mingw64, msvc64, msvcia64, iccia64, pocc64;
— для Linux: gcc, clang, icc, watcom, sunpro, open64, pcc.

Итак, наш bat’ник для компиляции одного prg c Borland C приобретает такой вид:

Для Mingw C компилятора замените последнюю строчку на:

Для Unix/Linux и GNU C это будет выглядеть так:

С hbmk2 все существенно проще. Независимо от платформы и компилятора:

Итак, мы имеем файл mylib.prg с функцией M1(), который мы хотим собрать в виде p-code dll с тем, чтобы впоследствии использовать его с главным приложением myapp.prg:

При рассмотрении способов сборки будем пока для простоты пользоваться Hbmk2. Итак, статическое связывание. Собираем сначала саму динамическую библиотеку. Для Borland C и MSVC нам надо, как вы помните, создать еще и import library, поэтому пишем в командной строке:

Результатом этой команды станет появление mylib.dll и mylib.lib, где последняя и есть import library; опция «-implib» как раз указывает hbmk2 создать эту библиотеку. Для других компиляторов ( Mingw, GNU C ) пишем: т.е. то же самое, но без «-implib», в результате получаем на выходе libmylib.dll ( или libmylib.so для Linux GNU C ).

Теперь нам надо построить само приложение myapp, статически связав его с mylib.

Делаем это следующим образом ( для Borland C и MSVC ): или ( для Mingw, GNU C ):

Теперь динамическое связывание. Саму динамическую библиотку строим так же, как и для статического связывания, только нет нужды использовать «-implib», так как нам не нужна import library. А вот myapp.prg придется изменить, так как нам надо загружать динамическую библиотку при помощи hb_LibLoad():

Кстати, это можно сделать и при помощи hbmk2:

Источник

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

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