![]() |
![]() ![]() ![]() ![]() ![]() |
![]() |
Boost Getting Started on Unix VariantsBoost , ,
|
Toolset Name | Vendor | Notes |
---|---|---|
acc | Хьюлетт Паккард | Известно, что только самые последние версии хорошо работают с Boost. |
Борланд | Борланд | |
como | Комо Компьютеры | Использование этого набора инструментов может потребоватьнастройкидругого набора инструментов для работы в качестве его бэкэнда. |
Дарвин | Компьютер Apple | Версия инструментария GCC от Apple с поддержкой функций Darwin и MacOS X, таких как фреймворки. |
gcc | Проект Gnu | Поддержка компиляторов Cygwin и MinGW. |
hp_cxx | Хьюлетт Паккард | Ориентирован на операционную систему Tru64. |
Интеллект | Intel | |
msvc | Microsoft | |
Солнце | Oracle | Известно, что только последние версии хорошо работают с Boost. Обратите внимание, что компилятор Oracle/Sun имеет большое количество опций, которые влияют на бинарную совместимость: очень важно, чтобы библиотеки были построены с теми же опциями, которые будут использовать ваши приложения. В частности, имейте в виду, что стандартная библиотека по умолчанию может плохо работать с Boost, если вы не создаете для C++11. Конкретные параметры компилятора, которые вам нужны, могут быть введены с опциями командной строки b2cxxflags = ''и''linkflags =. Например, для построения со стандартной библиотекой Apache в режиме C++03 используютb2cxxflags=-library=stdcxx4linkflags=-library=stdcxx4. |
vacpp | IBM | Компилятор VisualAge C++. |
Если у вас установлено несколько версий конкретного компилятора, вы можете добавить номер версии к имени набора инструментов, которому предшествует дефис, напримерintel-9.0илиborland-5.4.3.
Boost.Buildразместит все промежуточные файлы, которые он генерирует при создании вкаталог сборки. Если ваш корневой каталог Boost написан, этот шаг не является строго необходимым: по умолчанию Boost. Build создаст подкаталогbin.v2/для этой цели в вашем текущем рабочем каталоге.
Измените текущий каталог на корневой каталог Boost и вызовитеb2следующим образом:
b2 --build-dir=build-directory toolset=toolset-name stage
Для полного описания этих и других вариантов вызова см. документациюBoost.Build.
Например, ваш сеанс может выглядеть так:
$ cd ~/boost_1_62_0 $ b2 --build-dir=/tmp/build-boost toolset=gcc stage
Это позволит создавать статические и общие многопоточные варианты библиотек. Чтобы построить все варианты, передайте дополнительную опцию: «— тип сборки = полный».
Построение специальнойстадиицели ставит библиотечные двоичные файлы Boost настадии/lib/подкаталог дерева Boost. Чтобы использовать другой каталог, передайте--stagedir=опциюb2.
Note
b2 is case-sensitive; it is important that all the parts shown in bold type above be entirely lower-case.
Для описания других вариантов можно пройти при вызовеb2, тип:
b2 --help
В частности, чтобы ограничить количество затраченного времени на строительство, вас могут заинтересовать:
Note
Boost.Build can produce a great deal of output, which can make it easy to miss problems. If you want to make sure everything is went well, you might redirect the output into a file by appending “>build.log 2>&1” to your command line.
В процессе создания библиотек Boost можно ожидать увидеть некоторые сообщения, напечатанные на консоли. Они могут включать
Уведомления о конфигурации библиотеки Boost — например, библиотека Regex выводит сообщение об ICU при сборке без поддержки Unicode, и библиотека Python может быть пропущена без ошибки (но с уведомлением), если у вас нет установленного Python.
Сообщения от строительного инструмента, которые сообщают о количестве целей, которые были построены или пропущены. Не удивляйтесь, если эти цифры не имеют для вас никакого смысла; есть много целей на библиотеку.
Создайте сообщения действий, описывающие, что делает инструмент, которые выглядят примерно так:
toolset-name.c++long/path/to/file/being/built
Предупреждения компилятора.
Единственные сообщения об ошибках, которые вы видите при создании Boost, должны быть связаны с поддержкой библиотекой IOStreams форматов zip и bzip2, как описаноздесь. Установите соответствующие пакеты разработки для libz и libbz2, если вам нужны эти функции. Другие ошибки при создании библиотек Boost вызывают беспокойство.
Если кажется, что система сборки не может найти компилятор и / или линкеры, подумайте о настройке.файл user-config.jam, как описаноздесь. Если это не ваша проблема или проблемафайл user-config.jamне работает для вас, пожалуйста, задайте вопросы о настройке Boost для вашего компилятора наBoost. Составьте список рассылки.
Чтобы продемонстрировать связь с бинарной библиотекой Boost, мы используем следующую простую программу, которая извлекает строки темы из электронных писем. Он использует библиотекуBoost.Regex, которая имеет отдельно компилируемый двоичный компонент.
#include <boost/regex.hpp> #include <iostream> #include <string> int main() { std::string line; boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" ); while (std::cin) { std::getline(std::cin, line); boost::smatch matches; if (boost::regex_match(line, matches, pat)) std::cout << matches[2] << std::endl; } }
Существуют две основные проблемы, связанные со связью:
Существует два основных способа подключения к библиотекам:
Вы можете указать полный путь к каждой библиотеке:
$ c++ -Ipath/to/boost_1_62_0example.cpp -o example\ ~/boost/stage/lib/libboost_regex-gcc34-mt-d-1_36.a
You can separately specify a directory to search (with -Ldirectory) and a library name to search for (with -llibrary,2 dropping the filename's leading lib and trailing suffix (.a in this case):
$ c++ -I path/to/boost_1_62_0 example.cpp -o example \ -L~/boost/stage/lib/ -lboost_regex-gcc34-mt-d-1_36
Как видите, этот метод столь же сжат, как и метод А для одной библиотеки; ондействительноокупается, когда вы используете несколько библиотек из одного каталога. Обратите внимание, однако, что если вы используете этот метод с библиотекой, которая имеет как статические (.a), так и динамические (.so) сборки, система может выбрать один автоматически для вас, если вы не пройдете специальную опцию, такую как-статическиев командной строке.
В обоих случаях жирный текст - это то, что вы добавите ккомандным строкам, которые мы исследовали ранее.
Чтобы выбрать правильный двоичный код для вашей конфигурации сборки, вам нужно знать, как называются двоичные файлы Boost. Каждое имя файла библиотеки состоит из общей последовательности элементов, которые описывают, как он был построен. Например,libboost_regex-vc71-mt-d-1_34.libможно разбить на следующие элементы:
ABI tag: encodes details that affect the library's interoperability with other compiled code. For each such feature, a single letter is added to the tag:
Key Use this library when: Boost.Build option s Статически связываясь со стандартной библиотекой C++ и библиотеками поддержки среды выполнения компилятора. runtime-link = статический г использование отладочных версий стандартных библиотек поддержки и среды выполнения. Runtime-debugging=on У Используя специальнуюотладку сборки Python. python-debugging=on d Создание отладочной версии вашего кода.5 Вариант = отладка p использовать стандартную библиотеку STLPort, а не стандартную библиотеку, поставляемую с компилятором. Stdlib = Stlport
For example, if you build a debug version of your code for use with debug versions of the static runtime library and the STLPort standard library in “native iostreams” mode, the tag would be: -sgdpn. If none of the above apply, the ABI tag is ommitted.
Чтобы проверить извлечение объекта, мы отфильтром следующий текстовый файл. Скопируйте его из браузера и сохраните какjayne.txt:
To: George Shmidlap From: Rita Marlowe Subject: Will Success Spoil Rock Hunter? --- See subject.
Если вы подключены к общей библиотеке, вам может потребоваться подготовить некоторые настройки для конкретной платформы, чтобы система могла найти и загрузить ее при запуске вашей программы. Большинство платформ имеют переменную среды, в которую можно добавить каталог, содержащий библиотеку. На многих платформах (Linux, FreeBSD) эта переменная составляетLD_LIBRARY_PATH, но на MacOS этоDYLD_LIBRARY_PATH, а на Cygwin это простоPATH. В большинстве оболочек, отличных отcshиtcsh, вы можете настроить переменную следующим образом (опять же, не вводите$— что представляет подсказку оболочки):
$ VARIABLE_NAME=path/to/lib/directory:${VARIABLE_NAME} $ export VARIABLE_NAME
Наcshиtcsh
$ setenv VARIABLE_NAME path/to/lib/directory:${VARIABLE_NAME}
После установки необходимой переменной (если таковая имеется) вы можете запустить свою программу следующим образом:
$ path/to/compiled/example < path/to/jayne.txt
Программа должна ответить на вопрос по электронной почте: "Will Success Spoil Rock Hunter? "
Это завершает ваше введение в Boost и интеграцию его с вашими программами. Когда вы начнете использовать Boost всерьез, наверняка есть несколько дополнительных пунктов, которые вы хотели бы, чтобы мы рассмотрели. Однажды у нас может быть «Книга 2 в серии Getting Started», которая обращается к ним. До этого мы предлагаем вам использовать следующие ресурсы. Если вы не можете найти то, что вам нужно, или есть что-то, что мы можем сделать, чтобы сделать этот документ более понятным, пожалуйста, отправьте его в список рассылкиBoost Users.
Onward
Удачи и веселья!
—the Boost Developers
[1] | Если разработчики пакетов Boost хотят работать с нами, чтобы убедиться, что эти инструкции могут быть использованы с их пакетами, мы будем рады помочь. Пожалуйста, сообщите о своем интересеСписок разработчиков Boost. |
[2] | Этот вариант представляет собой тире, за которым следует символ «L», который очень похож на цифру 1 в некоторых шрифтах. |
[3] | Помните, что предупреждения специфичны для каждой реализации компилятора. Разработчик данной библиотеки Boost может не иметь доступа к компилятору. Кроме того, некоторые предупреждения чрезвычайно трудно устранить в общем коде, до такой степени, что это не стоит проблем. Наконец, некоторые компиляторы не имеют механизма исходного кода для подавления предупреждений. |
[4] | Эта конвенция отличает статическую версию библиотеки Boost от библиотеки импорта для одинаково настроенной библиотеки Boost DLL, которая в противном случае имела бы то же название. |
[5] | Эти библиотеки были составлены без оптимизации или наложения, с включенными полными символами отладки и безNDEBUG#defined. Хотя это правда, что иногда эти варианты не влияют на бинарную совместимость с другим скомпилированным кодом, вы не можете рассчитывать на это с библиотеками Boost. |
[6] | Эта функция STLPort является устаревшей, потому что невозможно сделать ее прозрачной для пользователя; мы не рекомендуем ее. |
Статья Boost Getting Started on Unix Variants раздела может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
:: Главная :: ::
реклама |