2012-03-30 24 views
5

作爲Visual C++編譯器的替代品,我擔心MinGW編譯器對64位的可靠性。例如,假設C++代碼在Linux下使用GCC 4.6.2構建和運行,相應的MinGW會在64位Windows下生成類似可靠的可執行文件/庫嗎?MinGW作爲可靠的64位GCC編譯器

Cygwin在可靠性方面是更好的選擇嗎?既不是Visual C++編譯器?

+0

除非在標準和其他庫的Windows特定部分中存在錯誤,否則我希望代碼是相同的(除了「調用約定」)。 – 2012-03-30 12:33:04

回答

14

首先,一些誤解:

  1. MinGW的(.org)處理不提供其運行時的64位的版本。 MinGW-w64除了它們的32位CRT外,他們也在致力於ARM的支持。並支持各種其他API(Win32等)。

  2. Cygwin < - > MinGW-w64:Cygwin不使用MS CRT(msvcrt.dll)。它將在您的Cygwin應用程序和系統的操作系統庫(kernel32.dll,ntdll.dll等)之間插入一個POSIX兼容層,即cygwin1.dll。

開,接下來的問題...

我發現的MinGW-W64的編譯器非常好,而且GCC 4.6及以上(實際上,4.5.1及以上)都非常能夠產生良好的Windows的64位代碼。請記住,MinGW提供的本質上與msvcrt.dll相同的C API,因此請到msdn.com獲取文檔(並且一定要查看「MSVC++ 2003」版本的文檔,某些功能與較新的運行時不同),請勿認爲因爲它是GCC,glibc文件突然適用於Windows。你的代碼必須是跨平臺的。還請注意x64 Windows上的sizeof(long)!=sizeof(T*)。將* nix或x86 Windows代碼移植到x64 Windows時經常遇到的錯誤。

+1

感謝您對MinGW w/GCC 4.5.1+ – Nick 2012-03-30 12:52:04

+0

的澄清和分享您的經驗更正:Cygwin根本不使用msvcrt,它提供了自己的C運行庫代替它。更新:Cygwin現在有一個64位版本。 – Yaakov 2015-01-15 06:31:43

+0

@Yaakov你是對的。更新後。 – rubenvb 2015-01-15 12:38:00