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

我使用 gccgo 来编译我的项目。这是我的目录布局。我读了这个 Q/A thread How to use custom packages in golang?

所以跟着这个

src/  

 +-fibo/  

 |   +-fibo.go  

 +main.go  

这是代码清单


main.go

package main


import (

    "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.go

package fibo


import  "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 $ 

我被困在这里。我尝试了不同的目录结构组合。没有任何帮助。我错过了什么?有没有我应该设置的环境变量,即使是这样??


慕码人8056858
浏览 393回答 2
2回答

幕布斯7119047

看起来您可能没有设置GOPATH环境变量从如何编写 Go 代码GOPATH 环境变量指定工作区的位置。它可能是您在开发 Go 代码时需要设置的唯一环境变量。鉴于您当前的目录结构src/&nbsp;&nbsp;&nbsp;+-fibo/&nbsp;&nbsp;&nbsp;|&nbsp; &nbsp;+-fibo.go&nbsp;&nbsp;&nbsp;+main.go如果您的src目录在下,GOPATH那么您应该可以执行以下操作:import "fibo"在main.go。又见“GOPATH环境变量”从该go命令的文档。

狐的传说

这组命令对我有用。.../go-lang-expts/src&nbsp;$&nbsp;gccgo&nbsp;-c&nbsp;-fgo-pkgpath=fibo&nbsp;-ofibo/fibo.o&nbsp;fibo/fibo.go这将命名包 fibo,所以你必须在 main.go 中导入它import&nbsp;"fibo"现在你可以通过告诉 fibo.o 库在哪里来编译 main.go.../go-lang-expts/src&nbsp;$&nbsp;gccgo&nbsp;-c&nbsp;main.go&nbsp;-Ifibo然后你需要链接这两个文件来创建一个可执行的main.../go-lang-expts/src&nbsp;$&nbsp;gccgo&nbsp;-o&nbsp;main&nbsp;main.o&nbsp;fibo/fibo.o
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go