Уже давно интересует... компилятор GCC для ВИнды настолько же полноценный как и для Линукса? можно, например, сорцы Линукса скомпилить с помощью GCC для Венды?
Последний раз, когда я смотрел, g++4 под виндой не умел выбрасывать exception'ы из dll-ек, из-за этого приходилось с либами статически линковаться. Это как пример кричащей неполноценности.
"GCC для винды" есть как минимум 3 штуки. MinGW, Cygwin и SUA(Services for unix, бывший Interix).
У MinGW -- минимальные зависимости в рантайме, соответственно рантайм Mingw подпилен по сравнению с обычным GCC. Cygwin и SUA по идее должны работать с официальным GCC, и своей POSIX-подсистемой, в SUA свой велосипед и есть обёртка к msvc в стиле gcc.
GCC под винду работает хуже, чем под нормальный POSIX примерно по той же причине, что и msysgit чуть хуже native POSIX git.
GCC состоит из фронтэнда и бекэнда, разными процессами, между которыми данные передаются пайпами. В итоге, например, GCC проглатывает чудеса макропроцессора и шаблонов в KDE, а Sun-овский Forte C++ -- нет (ему нужно создавать временные файлы, которые обязательно должны поместиться в память).
На Win32 эти пайпы хреново сделаны. Хотя есть named pipes, похоже что в том же mingw пайпы имитируются временными файлами. Отсюда и тормоза, отсюда и неполноценность.
Ну и с исключениями тоже косяки есть, потому что надо или полностью реализовывать в виндовом рантайме SEH или допортировать нормально. Получается, есть MSVC рантайм с нормальным SEH и есть mingw рантайм со своим велосипедом. Разные рантаймы друг о друге ничего не знают.
> В том GCC, который идёт в составе MinGW - сам компилятор полноценный, но стандартная библиотека портирована не полностью
смысл MingW'а не в том, чтобы корректно работали все POSIX'ивизмы (для этого есть тот же Cygwin). А в том, чтобы был обкоцанный GCC под виндой с минимальными зависимостями. Если писать на голом Win32 API/SDL/OpenGL, оно самое то.
>> смысл MingW'а не в том, чтобы корректно работали все POSIX'ивизмы (для этого есть тот же Cygwin).
POSIX тут не при чём. Я говорю про стандартные возможности STL. Как минимум локали и "широкосимвольные" потоки там не работают. Возможно что-то ещё. В принципе, если эти фичи не нужны - mingw вполне нормально можно использовать.
с STL-ями тоже зоопарк, почти в каждом компиляторе есть своя реализация. Хотите нормальную реализацию всех фич STL -- возьмите нормальную реализацию STL, а не ту, что "из каропки".
>мда. Возьми и попробуй, а не утверждай в стиле "может быть".
Ну просто много там всяких тонкостей, binutils, и прочее. Если собирается - только рад. Пробовать не буду - его и под линуксом собрать порой не получается.