在win下用Go語言的cgo時(比如下面場景)我們會用到的GCC編譯器,Win下我們一般用MinGW。
Golang連接Oracle數據庫;win下 golang 跨平台編譯
MinGW全稱Minimalist GNU For Windows,是個精簡的Windows平台C/C++、ADA及Fortran編譯器,相比Cygwin而言,體積要小很多,使用較為方便。MinGW提供了一套完整的開源編譯工具集,以適合Windows平台應用開發,且不依賴任何第三方C運行時庫。
MinGW包括:
一套集成編譯器,包括C、C++、ADA語言和Fortran語言編譯器
用於生成Windows二進制文件的GNU工具的(編譯器、鏈接器和檔案管理器)
用於Windows平台安裝和部署MinGW和MSYS的命令行安裝器(mingw-get)
用於命令行安裝器的GUI打包器(mingw-get-inst)
MingW 分 32位和64位版本:下載地址分別如下:
http://sourceforge.net/projects/mingw/
http://sourceforge.net/projects/mingw-w64/
比如我在使用 go-oci8 時就碰到過下面錯誤:
# github.com/wendal/go-oci8
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
注意,簡單起見我們要下載的是編譯好的版本,而不是 mingw-w64-v3.1.0.tar.bz2 (7.0 MB)
我下載的是:
目前主要有三種不同的線程庫的定義,分別是Win32,OS/2,以及POSIX,前兩種定義只適合於他們各自的平台,而POSIX 定義的線程庫是適用於所有的計算平台的。我這里選的是threads-posix。
http://zh.wikipedia.org/wiki/POSIX%E7%BA%BF%E7%A8%8B
C++ Exceptions有DWARF、SJLJ、SEH三種處理方式。對應的我們這里選擇的是seh方式。
這里的最新那個版本:
下載完成后,解壓縮到響應目錄,比如我這里是解壓縮到 C:\MinGW\mingw64 目錄下, 我還需要在 path 環境變量中增加 C:\MinGW\mingw64\bin 確保可以找到gcc。