Подскажите пожалуйста, почему так
Потому что порядок перечисления библиотек важен: в списке библиотек
a b c символы, которые нужны библиотеке
b будут искаться только в библиотеке
c, но не в
a. Если между библиотеками нет циклических зависимостей (т.е. нет такого, что
a определяет символ, нужный
b, а
b определяет символ, нужный
a), то их можно упорядочить так, что линковка будет успешной (см.
топологическая сортировка). Если циклические зависимости есть, или сортировать лень, можно перечислить нужные библиотеки несколько раз или взять их в группу:
g++ main.cpp -Wl,--start-group -lglfw3 -lgdi32 -lopengl32 -lglew32s -Wl,--end-group