lab01: настройка статической сборки

main
Дмитрий Козлюк 2 лет назад
Родитель 7d8af5f9c2
Сommit 49e234cfb2

@ -332,7 +332,7 @@ for (double x : numbers) {
в CodeBlocks это может быть `bin\Debug`. При затруднениях в работе с консолью
можно воспользоваться [руководством][cmd].
##### Командная строка Windows
#### Командная строка Windows
Командная строка (терминал) запускается через *Win+R*, `cmd` или путем ввода
`cmd` в строку адреса в «Проводнике» и нажатия *Enter.* Текст `C:\>` слева
@ -344,6 +344,39 @@ for (double x : numbers) {
символов имени каталога, и Windows дополнит путь. Если нужно повторить
одну из предыдущих команд, стрелки вверх и вниз проматывают историю.
#### Запуск программ без CodeBlocks
Находясь в каталоге с `*.exe`, можно попробовать запустить его:
```cmd
C:\lab01\bin\Debug> lab01
```
Однако это может привести к сообщению об ошибке
(имя библиотеки может быть иным):
```
Программа не может быть выполнена, потому что библиотека libstd++.dll не найдена.
```
Подробнее тема библиотек будет рассмотрена позже в курсе лекций и ЛР.
Чтобы сделать файл `lab01.exe` независимым от внешних библиотек,
нужно в CodeBlocks:
* Открыть диалог *Settings → Compiler → Compiler settings*
и поставить галочки *Static libstdc++ [-static-libstdc++]*
и *Static linking [-static]*.
* Пересобрать проект *Ctrl+F11* или *Build → Rebuild*
или нажать на иконку с голубыми стрелочками.
При использовании CMake, например, в CLion,
нужно в `CMakeLists.txt` после `executable(xxx ...)` добавить такую строку:
```CMakeLists.txt
target_link_options(xxx PRIVATE -static -static-libstdc++)
```
#### Стандартные потоки и их перенаправление
Обычно для простоты говорят, что ввод происходит с клавиатуры, а вывод — на 

Загрузка…
Отмена
Сохранить