解決:cc1.exe: sorry, unimplemented: 64-bit mode not compiled in


在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)

我下載的是:

http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.8.2/threads-posix/seh/ 

http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.8.2/threads-win32/seh/

目前主要有三種不同的線程庫的定義,分別是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方式。

這里的最新那個版本:

http://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/4.8.2/threads-posix/seh/x86_64-4.8.2-release-posix-seh-rt_v3-rev2.7z/download

 

image

下載完成后,解壓縮到響應目錄,比如我這里是解壓縮到  C:\MinGW\mingw64 目錄下, 我還需要在 path 環境變量中增加 C:\MinGW\mingw64\bin 確保可以找到gcc。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM