Heim >Backend-Entwicklung >Golang >Wie behebe ich Go-Build-Fehler für github.com/godror/godror?

Wie behebe ich Go-Build-Fehler für github.com/godror/godror?

PHPz
PHPznach vorne
2024-02-09 08:20:18764Durchsuche

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

php-Editor Yuzai stieß beim Erstellen der Go-Bibliothek mit github.com/godror/godror auf einige Fehler, die ihn beunruhigten. Um dieses Problem zu lösen, führte er eingehende Untersuchungen und Versuche durch und fasste einige wirksame Lösungen zusammen. In diesem Artikel werden wir seine Erfahrungen teilen und allen helfen, den Go-Build-Fehler unter github.com/godror/godror zu beheben, damit jeder diese Bibliothek erfolgreich für Entwicklungsarbeiten nutzen kann.

Frageninhalt

Unter Mac OS versuche ich, die folgende Datei für die Ausführung auf einem Linux-Computer zu erstellen.

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

Ich habe zum Erstellen den folgenden Befehl verwendet:

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

Fehler:

# 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

Ich kann für Mac OS erstellen, habe aber Probleme beim Erstellen für Linux. Können Sie mir helfen, diese Fehler zu beheben?

Lösung

Dieser Cross-Compilation-Fehler wird durch das github.com/godror/godror-Paket verursacht, das CGO verwendet. Um die Anwendung zu kompilieren, benötigen Sie eine gültige gcc-Installation und CGO_ENABLED=1, wie in der Readme gezeigt. Sie können versuchen, Docker zum Kompilieren für Linux/AMD64 zu verwenden.

Beispiel:

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

Dadurch wird die Anwendung in einem Docker-Container erstellt und die ausführbare Datei im aktuellen Verzeichnis gespeichert.

Das obige ist der detaillierte Inhalt vonWie behebe ich Go-Build-Fehler für github.com/godror/godror?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen