Развертывание приложений со временем выполнения C++

В большинстве ситуаций Вам никогда не придется волноваться о соединении против среды выполнения C++. При создании кода C++ GCC выбирает самую надлежащую версию библиотеки стандарта C++ и ссылок к ней. Поскольку приложения скомпилировали использование GCC 3.3, ссылок компилятора к статической библиотеке стандарта C++ libstdc++.a. Поскольку приложения скомпилировали использование GCC 4.0, ссылок компилятора к динамической библиотеке стандарта C++ libstdc++.dylib по умолчанию (libstdc++.a также доступно как опция).

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

Протесты для Использования новых времен выполнения C++

Следующие протесты применяются к новым статическим и динамическим временам выполнения C++.

Развертывание с новым динамическим временем выполнения

Это - библиотека, пользовавшаяся по умолчанию при использовании GCC 4.0, и является надлежащим при предназначении для OS X v10.3.9 и позже. Для списка протестов для того, чтобы пользоваться этой библиотекой, посмотрите Протесты для Использования Новых Времен выполнения C++.

Развертывание с новым статическим временем выполнения

В Xcode 2.3, новой версии статической библиотеки стандарта C++ libstdc++-static.a был представлен. Можно соединиться против новой статической библиотеки стандарта C++ с помощью Xcode 2.3 или командной строки. Для соединения против библиотеки с помощью XCode просто установите «Тип Библиотеки Стандарта C++» в настройках сборки к «Статическому». Для соединения против этой библиотеки по командной строке использовать gcc вместо g++ и добавьте следующие две команды до конца команды: -shared-libgcc и -lstdc++-static. Например:

gcc one.o two.o -o my_application -shared-libgcc -lstdc++-static

Для списка протестов для того, чтобы пользоваться этой библиотекой, посмотрите Протесты для Использования Новых Времен выполнения C++ и следующего раздела.

Дополнительные протесты для Использования нового статического времени выполнения

Новая статическая библиотека стандарта C++ отмечает все свои символы, как «скрытый», что означает, что те символы не экспортируются приложением, соединяющимся с библиотекой. Все еще возможно, однако, для символов от библиотеки C++ быть экспортированным Вашим приложением. Например, Ваше приложение могло бы включать символы от библиотеки в заголовочных файлах или других видимых расположениях. Чтобы препятствовать тому, чтобы символы были случайно экспортированы, необходимо использовать список экспорта для любых двоичных файлов, соединяющихся против статической библиотеки C++. (Для получения дополнительной информации об использовании списков экспорта, посмотрите Сокращение Количества Экспортируемых Символов. Для получения информации об использовании прагм видимости и видимости переключается, чтобы управлять видимостью символа в Вашем собственном коде, видеть Видимость Символа Управления.)

Функции обратного вызова (такой, как зарегистрировано в std::set_terminate) являются только эффективными, когда инициировано в том же модуле кода.

Эта статическая библиотека имеет те же недостатки размера как тот, используемый с gcc 3.3. Для получения дополнительной информации об этой проблеме, посмотрите Преимущества Совместно используемого Времени выполнения C++.