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
Freigeben: 2024-02-09 08:20:18
nach vorne
762 Leute haben es durchsucht

如何解决 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>
Nach dem Login kopieren

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
Nach dem Login kopieren

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
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage