为了账号安全,请及时绑定邮箱和手机立即绑定

在 go 中编译包含多个文件的项目

在 go 中编译包含多个文件的项目

Go
慕码人8056858 2021-07-02 10:01:13
我使用 gccgo 来编译我的项目。这是我的目录布局。我读了这个 Q/A thread How to use custom packages in golang?所以跟着这个src/   +-fibo/   |   +-fibo.go   +main.go  这是代码清单main.gopackage mainimport (    "os"    "fmt"    "strconv"    "src/fibo")func main(){    if len(os.Args) < 2 {        fmt.Printf("ur input sucks\n")    }    num,_ := strconv.Atoi(os.Args[1])    fibo.Fibo(num)}fibo/fibo.gopackage fiboimport  "fmt" func Fibo(num int) {    var a,b int    for i :=0; i< num; i++ {        a, b = b, a+b        fmt.Print(a, " ")    }    fmt.Print("\n")}但是当我尝试编译时,我遵循了通常的 gcc 程序。分别编译文件并将它们链接在一起成为最终的可执行文件。我收到这个错误.../go-lang-expts/src $ gccgo -c -ofibo/fibo.o fibo/fibo.go .../go-lang-expts/src $ gccgo -c -omain.o main.go    main.go:7:10: error: import file ‘src/fibo’ not found    main.go:18:2: error: reference to undefined name ‘fibo’.../go-lang-expts/src $ 我被困在这里。我尝试了不同的目录结构组合。没有任何帮助。我错过了什么?有没有我应该设置的环境变量,即使是这样??
查看完整描述

2 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

看起来您可能没有设置GOPATH环境变量

如何编写 Go 代码

GOPATH 环境变量指定工作区的位置。它可能是您在开发 Go 代码时需要设置的唯一环境变量。

鉴于您当前的目录结构

src/  

 +-fibo/  

 |   +-fibo.go  

 +main.go

如果您的src目录在下,GOPATH那么您应该可以执行以下操作:


import "fibo"

在main.go。

又见“GOPATH环境变量”go命令的文档


查看完整回答
反对 回复 2021-07-05
?
狐的传说

TA贡献1804条经验 获得超3个赞

这组命令对我有用。

.../go-lang-expts/src $ gccgo -c -fgo-pkgpath=fibo -ofibo/fibo.o fibo/fibo.go

这将命名包 fibo,所以你必须在 main.go 中导入它

import "fibo"

现在你可以通过告诉 fibo.o 库在哪里来编译 main.go

.../go-lang-expts/src $ gccgo -c main.go -Ifibo

然后你需要链接这两个文件来创建一个可执行的main

.../go-lang-expts/src $ gccgo -o main main.o fibo/fibo.o


查看完整回答
反对 回复 2021-07-05
  • 2 回答
  • 0 关注
  • 392 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信