使用SQL驱动程序交叉编译Go程序

时间:2014-04-14 15:59:21

标签: go

我有一个非常简单的Go测试程序,它使用Oracle SQL驱动程序(“github.com/mattn/go-oci8”)。我在OS X上构建并测试它,它的工作原理。 现在我想在Linux上交叉编译并运行它。 我这样编译:

CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go install github.com/mattn/go-oci8
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build myoracle.go

但是当我尝试运行它时,我得到了

$ ./myoracle
sql: unknown driver "oci8" (forgotten import?)

代码如下所示::

import (
    "database/sql"
    "fmt"
    _ "github.com/mattn/go-oci8"
    "os"
)

func main() {
    os.Setenv("NLS_LANG", "")

    db, err := sql.Open("oci8", "user/pass@dbserver:1521/SVC")
    if err != nil {
        fmt.Println(err)
        return
    }
}

2 个答案:

答案 0 :(得分:1)

大多数(/ all?)SQL驱动程序只是实际C库的包装器。

您唯一的选择是使用具有您要编译的操作系统的虚拟机。

答案 1 :(得分:0)

哦,等等,这是因为github.com/mattn/go-oci8实际上需要CGo并且无法进行交叉编译吗?