繁体   English   中英

使用多个文件编译项目

[英]compiling projects with multiple files in go

我使用gccgo编译我的项目。 这是我的目录布局。 我已阅读此Q / A线程如何在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 $ 

我被困在这里。 我尝试了目录结构的不同组合。 没有帮助。 我想念什么? 我是否应该为此设置任何环境变量?

看来您可能尚未设定GOPATH环境变数

如何编写Go代码

GOPATH环境变量指定工作空间的位置。 在开发Go代码时,很可能需要设置唯一的环境变量。

鉴于您当前的目录结构

src/  
 +-fibo/  
 |   +-fibo.go  
 +main.go

如果您的src目录位于GOPATH下,那么您应该能够执行以下操作:

import "fibo"

main.go

另请参阅go命令文档中的 “ GOPATH环境变量”

这套命令对我有用。

.../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

然后,您需要链接两个文件以创建一个可执行主文件

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM