Таблицы 1.26 и 1.27 показывают опции обобщенных оптимизаций, но для достижения наилучших результатов следует тщательно рассмотреть все требования, изучить документацию по инструментарию и провести всестороннее тестирование.
Эта ситуация аналогична встраиванию, хотя обычно инструментарии предоставляют значительно меньше опций для встраивания, чем для других оптимизаций
Смотри также
Рецепт 1.21.
1.23. Указание варианта библиотеки времени выполнения
Проблема
Ваш инструментарий поставляется с несколькими вариантами базовых библиотек времени выполнения, и вы хотите указать компилятору и компоновщику тот вариант, который должен использоваться.
Решение
Библиотеки времени выполнения, поставляемые с данным инструментарием, могут различаться по тому, являются ли они одно- или многопоточными, статическими или динамическими и содержат ли они отладочную информацию или нет.
При использовании Boost.Build эти три выбора можно сделать, использовав функции threading, runtime-linkи variant, описанные в табл. 1.15. Например, чтобы указать статическую библиотеку времени выполнения, добавьте к требованиям цели staticили используйте опцию командной строки runtime-link=static . Чтобы указать многопоточную библиотеку времени выполнения, добавьте к требованиям цели multiили используйте опцию командной строки threading=multi .
При сборке из командной строки используйте опции компилятора и компоновщика, представленные в таблицах с 1.30 до 1.36. Опции командной строки и имена библиотек для отладочной и окончательной конфигураций обычно очень похожи. В следующих таблицах буквы в квадратных скобках добавляются только для отладочных конфигураций. Имена динамических вариантов библиотек времени выполнения показаны в круглых скобках. При выборе динамической компоновки эти библиотеки должны быть доступны при выполнении программы.
Табл. 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 .
Читать дальше