Сroos-compile POCO из Windows для Linux
Инструментарий POCO pocoproject.org/features.htmlru.wikipedia.org/wiki/POCOPOCO — это легковесный, мультиплатформенный open-source набор библиотек и классов С++, облегчающих написание мультиплатформенного ПО.Выпускается под Boost Software License.Прекрасно организованная документация по структуре классов доступна в html-онлайн, html-оффлайн.Документация по основным возможностям — в pdf: pocoproject.org/documentation/index.html
Мои замечания по использованию POCO самые положительные: POCO имеет богатейший функционал — очень многое — всё-всё, что нужно для счастливой жизни C++ программиста! Работает инструментарий отлично, имеет продуманный API.
POCO собирается для большого числа ОС, в т.ч. Desktop Windows, Windows CE, Linux.
По своему опыту замечу, что POCO для этих ОС собирается без проблем.Методику кроссплатформенной сборки из Windows для этих ОС постараюсь вам, уважаемые с++ разработчики, донести в своих трёх статьях «Сroos-compile POCO из Windows».
Сroos-compile POCO из Windows для Linux Метод, освещённый здесь, разрабатывался: — для cross-platform toochain терминала Spire— хост-машина Windows 7 64— POCO Basic Edition 1.4.6p4Подготовка POCO Подготовить директорию с POCO: — скачать по адресу pocoproject.org/download/index.html архив POCO последней стабильной версии Basic Edition. По кнопке «Sources for Linux, OS X, etc.». На момент написания статьи архив — poco-1.4.6p4.tar.gz— разархивировать в отдельную директорию. К примеру, с помощью WinRAR и в директорию C:/poco/poco-1.4.6p4.Подготовить файл описания сборки для Unix-платформ.Этот файл будет использоваться make для определения окружения (имя утилит toolchain и другиет параметры для makefiles)— найти в C:/poco/poco-1.4.6p4/build/config/ файл «ARM-Linux» и перекопировать его с другим именем, например с именем вашей платформы. Я присвоил имя ARM-Linux-Spire.Внимание! Имя это будет использовано в шаге «Сборка POCO».Информация по файлу описания сборки и системе сборки: http://pocoproject.org/docs/99150-GMakeBuildNotes.htmlИзменить этот файл в текстовом редакторе (я использовал Notepad++):1) Найти и закомментировать строки STLPORT_INCLUDE= , STLPORT_LIB= , OPENSSL_INCLUDE= , CFLAGS= . Должно получиться так:#STLPORT_INCLUDE = /usr/local/include/stlport#STLPORT_LIB = /usr/local/lib#OPENSSL_INCLUDE = /usr/local/arm/2.95.3/include#OPENSSL_LIB = /usr/local/arm/2.95.3/lib#CFLAGS = -Isrc2) Из SYSFLAGS = убрать -I$(STLPORT_INCLUDE) -I$(OPENSSL_INCLUDE)Должно получиться так:#SYSFLAGS = -I$(STLPORT_INCLUDE) -I$(OPENSSL_INCLUDE) -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_REENTRANT -D_THREAD_SAFE -DPOCO_NO_FPENVIRONMENTSYSFLAGS = -D_XOPEN_SOURCE=500 -D_BSD_SOURCE -D_REENTRANT -D_THREAD_SAFE -DPOCO_NO_FPENVIRONMENT3) Из SYSLIBS = убрать -L$(STLPORT_LIB) -L$(OPENSSL_LIB) -lstlport_arm-linux-gccДолжно получиться так:#SYSLIBS = -L$(STLPORT_LIB) -L$(OPENSSL_LIB) -lstlport_arm-linux-gcc -lpthread -ldl -lrtSYSLIBS = -lpthread -ldl -lrt4) Найти строку TOOL = arm-linux и изменить arm-linux на префикс утилит вашего toolchain.Я изменил так: TOOL = arm-unknown-linux-gnuДля того, чтобы узнать имя префикса, перейдите в toolchain в директорию /bin, и обратите внимание на файл *-gcc.exe или *-g++.exeНапример, мой toolchain содержит файлы: arm-unknown-linux-gnu-gcc.exearm-unknown-linux-gnu-g++.exe, поэтому для моего toolchain префикс arm-unknown-linux-gnu.5) Найти строку POCO_TARGET_OSARCH = ARM и присвоить произвольное имя, которое во время сборки будет использовано для создания директорий с результатами сборки. Я присвоил имя POCO_TARGET_OSARCH = ARM_Spire, чтобы отражало осмысленное имя платформы. Поэтому у меня библиотеки POCO после сборки будут располагаться в C:\poco\poco-1.4.6p4\lib\Linux\ARM_Spire.
Подготовка инструментов Установить инструменты: — MinGW msys. Будем использовать msys shell. У меня MinGW шёл в комплекте с sdk для устройства, а вы сможете взять с официального сайта www.mingw.org— любую консоль для Windows с поддержкой copy-paste. Автор использовал ConEmu x64 www.conemu.ruОткрыть консоль с поддержкой copy-paste, все дальнейшие шаги будут из этой консоли.
Проверить доступность директории toochain/bin, ввести имя gcc-утилиты из вашего toochain. У меня так: arm-unknown-linux-gnu-gcc -v— если эта утилита не найдена, то прописать путь к ней. У меня путь такой: set PATH=C:\Spire\SDT\TOOLCHAIN\20140226\bin;%PATH%— снова проверить доступность toochain
Проверить доступность утилиты make: make -v— если эта утилита не найдена, то прописать путь к ней. У меня путь такой: set PATH=C:\Spire\SDT\MinGW\bin;%PATH%— снова проверить доступность make
Войти в командную оболочку msys, выполнить: sh— если эта утилита не найдена, то прописать путь к ней. У меня путь такой: set PATH=C:\Spire\SDT\MinGW\msys\1.0\bin;%PATH%
Все дальнейшие шаги будут выполняться из консоли с поддержкой copy-paste + командной оболочки msys
Установить директорию с POCO текущей: cd C:/poco/poco-1.4.6p4
Сборка POCO Перед сборкой (для порядка) можно проверить доступность конфигуратора./configure --helpВыполнить конфигурацию POCO:./configure --config=ARM-Linux-Spireили, для сборки POCO без тестов и примеров:./configure --config=ARM-Linux-Spire --no-tests --no-samplesесли конфигурация успешна, выведется примерно такое сообщение: Configured for ARM-Linux-Spire
— выполнить сборку POCO: makeвремя сборки POCO с тестами и примерами на моём ПЭВМ (Intel i5 3.300Gz 8Gb) заняло 12 минут.
Собранные библиотеки POCO будут находиться в \lib\Linux в директории, которую мы определили в переменной POCO_TARGET_OSARCH в файле настроек конфигурации.У меня путь к собранным библиотекам POCO оказался такой: C:\poco\poco-1.4.6p4\lib\Linux\ARM_Spire
Источники информации «POCO C++ Libraries GNU Make Build System» pocoproject.org/docs/99150-GMakeBuildNotes.html***
Готовые инструментарии с++, делают наш труд более приятным и более плодотворным. Успехов, вам, уважаемые коллеги!
