英文:
golang compiler error: can't load package: package main: no buildable Go source files in /home/ubuntu/workspace/Go
问题
我正在尝试编译一个Go程序。代码是一个小的x11窗口管理器,可以在这里找到(代码有98行,太长了无法在这里发布)。
这是我在x86-64 Ubuntu上运行的命令:
GOOS=linux GOARCH=386 go build littlewm.go
这个命令在同一目录中的其他文件上运行得很好。然而,当我尝试编译这个文件时,我得到以下错误:
can't load package: package main: no buildable Go source files in /home/ubuntu/workspace/Go
这与gopath
变量无关,因为我已经成功地编译了同一目录中的其他程序。我怀疑这可能与代码本身或我缺少的某些选项有关。因此,这不是一个已有问题的重复,很可能是独特的,因为我没有从其他类似的问题中得到我想要的答案。非常感谢任何帮助。
谢谢!
英文:
I am attempting to compile a go program. The code is a small x11 window manager, found HERE. (The code is 98 lines, too long to post here)
Here is the command I run, on x86-64 Ubuntu:
GOOS=linux GOARCH=386 go build littlewm.go
This command works fine on other files in the same directory. However, when I try to compile this one, I get the following error:
can't load package: package main: no buildable Go source files in /home/ubuntu/workspace/Go
This does not involve the gopath
variable, as I have successfully compiled other programs in the same directory. I have a suspicion it involves the code itself or some option I am lacking. As such, this is not really a duplicate of an existing question and is quite possibly unique, since I am not getting the answer I want from other similar questions. Any help is appreciated greatly.
Thanks!
答案1
得分: 1
我在尝试构建自己的Go程序时遇到了类似的问题。我刚刚添加了GCO来与一些本地C代码库进行交互。它在本地平台上(我编码的机器)上构建成功,但在尝试针对另一个平台进行构建时(使用GOOS
和GOARCH
,就像你正在做的那样),却无法构建成功。
将CGO_ENABLED设置为1(如david的评论中提到的)解决了我的问题:
CGO_ENABLED=1 GOOS=linux GOARCH=386 go build littlewm.go
我正在使用一个Makefile来为多个平台构建多个规则,所以我在Makefile的顶部附近加入了以下内容:
export CGO_ENABLED = 1
这样我就不需要为每个平台单独指定它了。
英文:
I encountered a similar problem when trying to build my own go program.
I had just added GCO to interface with some native C code in a library.
It built for me for the native platform (the machine I was coding on), but not when I tried to target another platform (using GOOS
and GOARCH
as you're doing).
Setting CGO_ENABLED to 1 (as mentioned in david's comment) fixed the problem for me:
CGO_ENABLED=1 GOOS=linux GOARCH=386 go build littlewm.go
I was using a makefile to build for multiple platforms using multiple rules, so for me, I put
export CGO_ENABLED = 1
near the top of my makefile so that I didn't need to specify it for each platform.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论