GCC无法编译Go程序

时间:2017-10-25 06:59:21

标签: gcc go

我使用2D游戏库在Go中编写了一个非常简单的程序。

package main

import (
    "github.com/hajimehoshi/ebiten"
    "github.com/hajimehoshi/ebiten/ebitenutil"
)

const screenWidth, screenHeight = 320, 240

func update(screen *ebiten.Image) error {
    ebitenutil.DebugPrint(screen, "Game test")
    return nil;
}
func main() {
    if err := ebiten.Run(update, screenWidth, screenHeight, 2, "Test"); err != nil {
        panic(err)
    }
}

然而,这依赖于GCC进行编译。运行时,我提示此消息:

# github.com/go-gl/glfw/v3.2/glfw
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in
# github.com/go-gl/gl/v2.1/gl
cc1.exe: sorry, unimplemented: 64-bit mode not compiled in

我尝试下载MinGW-w64来解决问题,但它没有成功。

我将如何解决这个问题?

1 个答案:

答案 0 :(得分:2)

所以你的C编译器不支持64位编译。解决此问题的一种方法是构建32位模式。默认情况下,Go会尝试构建您所在的系统体系结构,但您可以通过在构建之前设置环境变量GOARCH=386来修改该行为。在Windows上,您可以在cmd中输入:

set GOARCH=386
go build

您可以使用此内容创建一个简单的.bat批处理脚本,并在您想要构建时运行该脚本。

请注意,64位系统可以正常运行32位程序。这也是一种很好的方法,可以确保当您将.exe提供给其他人时,它将在他们的系统上运行(不考虑其他依赖关系)。

如果您想升级C编译器而不是构建64位应用程序,请参阅this SO thread,这可能会有所帮助。