duanjuduo4573
2014-04-14 15:59
浏览 90
已采纳

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

I have a very simple working Go test program which uses Oracle SQL driver ("github.com/mattn/go-oci8"). I build and test it on OS X and it works. Now I want to cross-compile and run it on Linux. I compiled it like this:

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

but when I try to run it, I get

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

The code looks like this::

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
    }
}

图片转代码服务由CSDN问答提供 功能建议

我有一个非常简单的Go测试程序,该程序使用Oracle SQL驱动程序(“ github.com/mattn/go- OCI8" )。 我在OS X上对其进行构建和测试,并且可以运行。 现在我想交叉编译并在Linux上运行它。 我这样编译它:

  CGO_ENABLED = 0  GOOS = linux GOARCH = amd64转到安装github.com/mattn/go-oci8
CGO_ENABLED=0 GOOS = linux GOARCH = amd64转到构建myoracle.go 
   
 
 

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

  $ ./myoracle
sql:未知驱动程序“ oci8”(忘记了导入?)
    
 
 

代码看起来像这样:

  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 
} 
} 
   \  n 
  • 写回答
  • 好问题 提建议
  • 追加酬金
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • dongshen7561 2014-04-14 16:41
    已采纳

    Most ( / all?) SQL drivers are just wrappers for the actual C library.

    Your only option is to use a virtual machine with the OS you want to compile for.

    评论
    解决 无用
    打赏 举报
查看更多回答(1条)

相关推荐 更多相似问题