Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk menyelesaikan ralat go build untuk github.com/godror/godror?

Bagaimana untuk menyelesaikan ralat go build untuk github.com/godror/godror?

PHPz
PHPzke hadapan
2024-02-09 08:20:18715semak imbas

如何解决 github.com/godror/godror 的 go 构建错误?

editor php Yuzai mengalami beberapa ralat semasa membina perpustakaan go menggunakan github.com/godror/godror, yang menyusahkannya. Bagi menyelesaikan masalah ini, beliau menjalankan penyelidikan dan percubaan yang mendalam serta merumuskan beberapa penyelesaian yang berkesan. Dalam artikel ini, kami akan berkongsi pengalamannya dan membantu semua orang menyelesaikan ralat go build github.com/godror/godror, supaya semua orang berjaya menggunakan perpustakaan ini untuk kerja pembangunan.

Kandungan soalan

Pada Mac OS, saya cuba membina fail berikut untuk dijalankan pada mesin Linux.

<code>package main

import (
    "context"
    "database/sql"
    _ "github.com/godror/godror"
)

func main() {
    dsn := "user/password@host:port/sid"

    // Open a connection to the Oracle database
    db, err := sql.Open("godror", dsn)
    if err != nil {
        panic(err.Error())
    }
    defer db.Close()

    // Test the database connection
    ctx := context.Background()
    err = db.PingContext(ctx)
    if err != nil {
        panic(err.Error())
    }

    query := "SELECT * FROM table"
    rows, err := db.QueryContext(ctx, query)
    if err != nil {
        panic(err.Error())
    }
    defer rows.Close()

    if err := rows.Err(); err != nil {
        panic(err.Error())
    }
}
</code>

Saya menggunakan arahan berikut untuk membina:

env GOOS=linux GOARCH=amd64 go 构建 db.go

Ralat:

# github.com/godror/godror
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:530:19: undefined: VersionInfo
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:531:19: undefined: VersionInfo
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:532:10: undefined: StartupMode
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:533:11: undefined: ShutdownMode
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:535:31: undefined: Event
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:535:42: undefined: SubscriptionOption
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:535:64: undefined: Subscription
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:536:31: undefined: ObjectType
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:537:59: undefined: Data
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:538:28: undefined: DirectLob
../../../../pkg/mod/github.com/godror/[email&#160;protected]/orahlp.go:538:28: too many errors

Saya boleh membina untuk Mac OS tetapi menghadapi masalah membina untuk Linux. Bolehkah anda membantu saya menyelesaikan ralat ini?

Penyelesaian

Ralat kompilasi silang ini disebabkan oleh pakej github.com/godror/godror menggunakan CGO. Untuk menyusun aplikasi, anda memerlukan pemasangan gcc yang sah dan CGO_ENABLED=1, seperti yang ditunjukkan dalam Readme. Anda boleh cuba menggunakan docker untuk menyusun untuk linux/amd64.

Contoh:

DOCKER_DEFAULT_PLATFORM=linux/amd64 docker run --rm -v "$PWD":/app -w /app golang:1.21 go build -v db.go

Ini akan membina aplikasi dalam bekas Docker dan menyimpan fail boleh laku dalam direktori semasa.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat go build untuk github.com/godror/godror?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam