Табл. 1.30. Опции компилятора для выбора библиотеки времени выполнения при использовании Visual C++ или Intel (Windows)
Статическая компоновка | Динамическая компоновка | |
---|---|---|
Однопоточная | -ML[d]¹ | Неприменимо |
Многопоточная | -MT[d] | -MD[d](msvcrt[d].dll, msvcr80[d].dll)² |
¹ Начиная с Visual Studio 2005, в момент написания книги, находящейся в стадии бета-тестирования, опции -ML и -MLd считаются устаревшими, а однопоточные статические библиотеки времени выполнения больше не поставляются.
² Предыдущие версии Visual C++ использовали DLL msvcr71.dll, msvcr71d.dll, msvcr70.dll, msvcr70d.dll и т.д.
Табл. 1.31. Опции компилятора для выбора библиотеки времени выполнения при использовании Metrowerks (Windows)
Статическая компоновка | Динамическая компоновка | |
---|---|---|
Однопоточная | -runtime ss[d] | Неприменимо |
Многопоточная | -runtime sm[d] | -runtime dm[d](MSL_All-DLL90_x86[_D].dll) |
Табл. 1.32. Опции командной строки для выбора библиотеки времени выполнения при использовании CodeWarrior 10 для Max OS X
Статическая компоновка | Динамическая компоновка |
---|---|
Опции не требуется | Обратитесь к документации Metrowerks по опциям командной строки (MSL_All_Mach-O[_D].dylib) |
Табл. 1.33. Опции компилятора для выбора библиотеки времени выполнения при использовании Borland
Статическая компоновка | Динамическая компоновка | |
---|---|---|
Однопоточная | -WM | -WM- -WR -WC¹ (cc3260.dll) |
Многопоточная | -WM | -WM -WR -WC (cc3260mt.dll) |
¹ Опция -WC требуется только при сборке консольного приложения.
Табл. 1.34. Опции компилятора для выбора библиотеки времени выполнения при использовании Digital Mars (все библиотеки времени выполнения многопоточны)
Статическая компоновка | Динамическая компоновка |
---|---|
Опций не требуется | -ND -D_STLP_USE_DYNAMIC_LIB(sccrt70.dll, stlp45dm.dll) |
Табл. 1.35. Опции компилятора для выбора библиотеки времени выполнения при использовании GCC
Статическая компоновка | Динамическая компоновка |
---|---|
-static¹ | Опций не требуется |
¹ Эта опция отключает всю динамическую компоновку, а не только динамические библиотеки времени выполнения.
Например, чтобы указать динамическую окончательную сборку библиотеки времени выполнения Visual С++, используйте опцию компилятора -MD. Чтобы указать статическую однопоточную отладочную сборку библиотеки времени выполнения Metrowerks для Windows, используйте опцию компилятора -runtime ssd. Чтобы указать однопоточную динамическую сборку библиотеки времени выполнения Borland, передайте компилятору и компоновщику опции -WM- -WR -WC.
Инструкции для указания варианта библиотеки времени выполнения в IDE приведены в табл. 1.36.
Табл. 1.36. Указание варианта библиотеки времени выполнения из IDE
IDE | Конфигурация |
---|---|
Visual C++ | На страницах свойств проекта перейдите к Configuration Properties→C/C++→Code Generation (Генерация кода) и используйте раскрывающийся список Runtime Library (библиотека времени выполнения) |
CodeWarrior | Для проектов динамических библиотек добавьте в проект объектный файл /usr/lib/dylib1.o и библиотеки MSL_Shared_AppAndDylib_Runtime[_D].lib и MSL_All_Mach-O[_D].dylib и удалите все библиотеки вида MSL_<XXX>_Mach-O[_D].lib. Для проектов исполняемых файлов добавьте в проект объектный файл /usr/lib/crtl.с и библиотеки MSL_Shared_AppAndDylib_Runtime[_D].lib и MSL_All_Mach-O[_D].dylib и удалите все библиотеки вида MSL_<XXX>_Mach-O[_D].lib |
C++Builder | Будет ли проект одно- или многопоточным, должно быть указано при его создании. Чтобы выбрать статическую или динамическую библиотеку времени выполнения, в окне Project Options перейдите к Linker и установите или снимите флажок Use dynamic RTL (Использовать динамические библиотеки времени выполнения) |
Dev-C++ | Чтобы выбрать статическую библиотеку времени выполнения, укажите опцию командной строки -static, как описано в рецепте 1.20 |
Библиотека времени выполнения содержит реализации вспомогательных функций, необходимых при выполнении программы. Обычно библиотека времени выполнения содержит реализации функций стандартной библиотеки С, функций, используемых для доступа к сервисам операционной системы, таким как потоки и файловые системы, и специфичных для платформы, и функций, предоставляющих инфраструктуру для функций языка С++, таких как информация о типах во время выполнения (RTTI) и обработка исключений.