Собираю пример к boost::signals. Такие варианты:
Вариант №1
g++ disconnect_all.cpp -lboost_signals-mgw-1_33_1
Получается программа требующая boost_signals-mgw-1_33_1.dll для своей работы.
При сборке тоже требуется только эта библиотека. Без неё не линкуется.
Вариант №2
g++ disconnect_all.cpp -llibboost_signals-mgw-1_33_1
Здесь всё понятно: статически прилинковывается libboost_signals-mgw-1_33_1.lib.
Для работы экзешника ничего не требуется
Вариант №3
g++ -static disconnect_all.cpp -lboost_signals-mgw-1_33_1
А вот здесь интересно. Получается экзешник требующий для работы boost_signals-mgw-1_33_1.dll
Но для линковки используется только boost_signals-mgw-1_33_1.lib (не libboost_signals-mgw-1_33_1.lib)
Объясните, пожалуйста , что происходит в третьем варианте.
Чем отличаются скомпонованные экзешники?
Что даёт ключ -static ?
Зачем может понадобиться третий вариант?
Что такое находится в библиотеке libboost_signals-mgw-1_33_1.lib, если при компоновке с ней dll не нужна, а для работы скомпонованного экзешника — нужна?