我使用gccgo编译我的项目。这是我的目录布局。我读过这个Q/A线程如何在戈朗使用自定义软件包?
所以就跟着这个
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 $
我被困在这里了。我尝试了不同的目录结构组合。没人帮上忙。我遗漏了什么?我是否应该设置任何环境变量,即使是这样??
发布于 2013-10-19 12:35:31
看起来您可能没有设置环境变量
来自如何编写Go代码
GOPATH环境变量指定工作区的位置。在开发Go代码时,它可能是您需要设置的唯一环境变量。
的当前目录结构
src/
+-fibo/
| +-fibo.go
+main.go
如果您的src
目录位于GOPATH
下,那么您应该能够执行以下操作:
import "fibo"
在main.go
中。
也请参阅来自"GOPATH环境变量“的命令文档。
发布于 2017-06-27 17:04:57
这组命令对我有效。
.../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
https://stackoverflow.com/questions/19437086
复制相似问题