go-oci8編譯安裝過程(有別於官方說明)

go-oci8下載地址以及說明地址:https://github.com/wendal/go-ocigit

go-oci8官方說明github

  1. 安裝最新版的git,並設置能夠從命令行直接調用git命令windows

  2. 這個步驟多一些測試

    2.1 下載OCI最新版,存放於C:\instantclient_11_2
    2.2 下載OCI SDK最新版,存放於C:\instantclient_11_2\sdk
    2.3 下載MinGW最新版,安裝在C:\mingw
    2.4 下載pkg-config.exe和oci8.pc (已經存放在windows文件夾下)
    2.5 將pkg-config.exe複製到C:\mingw\bin\下
    2.6 將oci8.pc複製到C:\mingw\lib\pkg-config\下
  3. 修改系統環境變量,添加命令行

PATH=原有PATH;C:\instantclient_11_2;C:\mingw\bin;
    PKG_CONFIG_PATH=C:\mingw\lib\pkg-config
  1. 執行 go get github.com/wendal/go-oci8code

    其中第二步下載,能夠在 這裏 下載到,其中的環境已經配置好了
    若是這一步沒在go-oci8官方下載,而是和我當時同樣,一步步去各個軟件官網下載,那麼要注意了orm


  1. 下載並安裝完以後,須要修改oci8.pc;ip

# Package Information for pkg-config
     
    prefix=C:/instantclient_11_2
    exec_prefix=C:/instantclient_11_2
    libdir=${exec_prefix}
    includedir=${prefix}/sdk/include/
     
    Name: OCI
    Description: Oracle database engine
    Version: 11.2
    Libs: -L${libdir} -loci
    Libs.private: 
    Cflags: -I${includedir}
須要把prefix、exec_prefix指向你的安裝目錄
  1. 這個包是不支持win x64的,我也沒測試64位版本的安裝ci

  2. 這時候,go get github.com/wendal/go-ociget

  3. 若是和我同樣出現了

    C:\Documents and Settings\Administrator>go get github.com/wendal/go-oci8
       # github.com/wendal/go-oci8
       C:\GoPath\src\github.com\wendal\go-oci8\oci8.go:119: cannot use (**C.struct_OCIS erver)(unsafe.Pointer(&conn.svc)) (type **C.struct_OCIServer) as type **C.struct
       _OCISvcCtx in argument to _Cfunc_OCILogon
       C:\GoPath\src\github.com\wendal\go-oci8\oci8.go:136: cannot use (*C.struct_OCIServer)(c.svc) (type *C.struct_OCIServer) as type *C.struct_OCISvcCtx in argument to _Cfunc_OCILogoff
       C:\GoPath\src\github.com\wendal\go-oci8\oci8.go:263: cannot use (*C.struct_OCIServer)(s.c.svc) (type *C.struct_OCIServer) as type *C.struct_OCISvcCtx in argument to _Cfunc_OCIStmtExecute
       C:\GoPath\src\github.com\wendal\go-oci8\oci8.go:383: cannot use (*C.struct_OCIServer)(s.c.svc) (type *C.struct_OCIServer) as type *C.struct_OCISvcCtx in argument to _Cfunc_OCIStmtExecute

這樣的出錯提示,表示你安裝的oci版本和go-oci8不一致,這個時候找到%GOPATH%\src\github.com\wendal\go-oci8\oci8.go文件

有4個地方須要修改

  • 119行

(**C.OCIServer)(unsafe.Pointer(&conn.svc)),
改成
(**C.OCISvcCtx)(unsafe.Pointer(&conn.svc)),
  • 136行

(*C.OCIServer)(c.svc),
改成
(*C.OCISvcCtx)(c.svc),
  • 263行

(*C.OCIServer)(c.svc),
改成
(*C.OCISvcCtx)(c.svc),
  • 383行

(*C.OCIServer)(c.svc),
改成
(*C.OCISvcCtx)(c.svc),

或者直接替換OCIServer爲OCISvcCtx。 從新執行

go get github.com/wendal/go-oci

搞定收工。

相關文章
相關標籤/搜索