2009-10-28 13 views
9

Zasadniczo chcę skompilować C/C++ za pomocą GCC w systemie Windows. Dwie konkurencyjne platformy, jak widzę, to MinGW i Cygwin. Każdy ma swoje własne korzyści i ograniczenia. MinGW kompiluje dla systemu Windows, podczas gdy Cygwin potrzebuje pliku cygwin .dll. Jednak instalowanie bibliotek na MinGW jest trudne, podczas gdy na Cygwin jest łatwiej, używając setup.exe jako "menedżera pakietów".Najlepszy sposób konfiguracji środowiska kompilacji systemu Windows dla C/C++

Moje pytanie brzmi: jaki jest najlepszy sposób kompilacji w systemie Windows. Czy byłoby lepiej użyć MinGW i zmagać się z bibliotekami (w takim przypadku istnieje łatwy sposób instalowania bibliotek na MinGW). Czy powinienem użyć Cygwin, jeśli tak, to jak mogę go skompilować bez potrzeby posiadania pliku cygwin .dll, skutecznie skompilować do normalnego systemu Windows.

+0

subiektywna kwestia. Wolę mingw, ponieważ nie kodujesz na warstwie kompatybilności. Zakładając, że chcesz mieć wolne (jak w piwie) środowisko, wciąż brakuje ci niektórych opcji - wersji Express Visual Studio lub wersji VC++ z linii poleceń. – asveikau

Odpowiedz

7

Najprostszym i najlepszym sposobem kompilacji w systemie Windows jest użycie visual studio expres s. To jest darmowe. Dobrym powodem używania cygwin jest kompilacja między platformami. Dobrym powodem do korzystania z gcc jest obsługa niektórych kompilatorów, których nie ma kompilator Microsoft.

Ale w sumie VC++ Express jest sposobem na rozwój tylko Windows.

+0

Jeśli korzystasz z programu Visual Studio Express, nie możesz legalnie tworzyć komercyjnych aplikacji bez naruszania warunków korzystania z usługi. – Andres

+10

@Asres: jest to po prostu nieprawda. Zobacz http://www.microsoft.com/express/support/faq/ –

+1

@Arres: # Czy mogę używać Express Edition do użytku komercyjnego? Tak, nie ma ograniczeń licencyjnych dla aplikacji utworzonych przy użyciu Visual Studio Express Editions. –

5

Zawsze istnieje możliwość korzystania -mno-cygwin z Cygwin skompilować przeciwko bibliotek systemu Windows jak MinGW robi:

gcc -mno-cygwin file.c -o test 

To nie jest łatwym wyborem i zależy głównie od tego, ile będzie polegać na innych bibliotek. Cygwin naprawdę dodaje dodatkową warstwę, która jest cięższa, ale "emuluje" środowisko Linux lepiej niż MinGW.

Edit:

Qt Creator pozwala na stworzenie z MinGW na Windows (i gcc na Linuksie, ...), ma IDE sprawia, że ​​debugowanie bardziej przyjazne niż gdb. Jeśli potrzebujesz bibliotek, nadal masz możliwość korzystania z bibliotek Qt. To byłoby dobre alternatywne rozwiązanie dla Visual Studio, jeśli naprawdę chcesz trzymać się gcc do przyszłej przenośności.

+0

Flaga -mno-cygwin nie tworzy statycznego pliku binarnego, tworzy taki, który nie jest połączony z cygwin.dll - w istocie "nagim" programem win32. W praktyce (modulo takie jak różne generowanie kodu z różnych wersji kompilatora) jest to dokładnie to, co dostajesz z kompilatora mingw. –

+0

Dobrze, dzięki za wskazanie tego, Andy, będę edytować odpowiedź. – RedGlyph

+0

@Andy: Tak naprawdę nie wiem, ale czy Cygwin libc (i prawdopodobnie inne biblioteki) nie zależą od cygwin.dll? To znaczy. jeśli użyjesz -mno-cygwin, czy nie ograniczysz się tylko do Win32 API? –

0

Istnieje łatwe do zainstalowania GCC w opakowaniu MinGW pod numerem equation.com. Kliknij "Narzędzia programistyczne", a następnie "Fortran, C, C++", pobierz preferowaną wersję, zainstaluj i użyj.

3

Możesz chcieć spojrzeć na CodeBlocks. Generalnie służy do budowania aplikacji WxWidgets, ale ładnie owija MinGW.

+0

Używam go do gry z obsługą C++ 0x gcc 4.4. W normalnych przypadkach zawiesza się, ale funkcjonuje. – jmucchiello

1

Qt Creator jest standardowo dostarczana z MinGW i może być używana do tworzenia projektów, które w rzeczywistości nie używają struktury Qt.

+0

Powiedziałbym, że idź z Mingw, choćby z powodu Qt Creatora. To jest naprawdę dobre. –

+0

Wspomniałem już o tym w moim poście (oprócz linku) ;-) Ale tak, to byłby mój pierwszy wybór do opracowania z gcc. Mam nadzieję, że wkrótce nastąpi aktualizacja do wersji 4.6. – RedGlyph

0

Jedną z możliwych metod jest użycie CMake, która może zbudować projekt Visual Studio ze źródeł, a następnie skompilować go z Visual Studio. Może również zbudować projekt dla innych IDE, więc możesz przejść na platformę.

1

Właściwie istnieje opcja # 3: jeśli zezwala na to twoja edycja systemu Windows, możesz zainstalować Microsoft Services For Unix/Subsystem for Unix Applications, a następnie pobrać gcc z SUACommunity. Ma też menedżera pakietów. Z tych 3 opcji daje to zachowanie najbliższe prawdziwemu systemowi uniksowemu.

Jednak powstałe aplikacje nie są aplikacjami Win32; są aplikacjami SUA i będą wymagały uruchomienia SUA. Jeśli piszesz kod dla siebie, zwykle nie stanowi to problemu, jeśli sam napiszesz kod, ale jeśli chcesz napisać i rozpowszechniać odpowiednią aplikację Windows, sugerowałbym trzymanie się z dala od wszystkiego, co próbuje emulować Unix, więc jest to MinGW.

0

Myślę, że odpowiedź zależy od tego, czy zamierzasz używać bibliotek, czy kompilować programy, które są ukierunkowane na POSIX lub na cel oparty na POSIX. Właśnie do tego służy Cygwin, podczas gdy MinGW jest bardziej przeznaczony do kompilowania programów ukierunkowanych na Windows przy użyciu GCC.

Powiązane problemy