Maison > développement back-end > Golang > Comment résoudre les erreurs de build pour github.com/godror/godror ?

Comment résoudre les erreurs de build pour github.com/godror/godror ?

PHPz
Libérer: 2024-02-09 08:20:18
avant
762 Les gens l'ont consulté

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

L'éditeur php Yuzai a rencontré des erreurs lors de la construction de la bibliothèque go à l'aide de github.com/godror/godror, ce qui l'a troublé. Afin de résoudre ce problème, il a mené des recherches et des tentatives approfondies et a résumé quelques solutions efficaces. Dans cet article, nous partagerons son expérience et aiderons tout le monde à résoudre l'erreur go build de github.com/godror/godror, afin que tout le monde puisse utiliser avec succès cette bibliothèque pour les travaux de développement.

Contenu de la question

Sur Mac OS, j'essaie de créer le fichier suivant pour l'exécuter sur une machine 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>
Copier après la connexion

J'ai utilisé la commande suivante pour construire :

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

Erreur :

# 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
Copier après la connexion

Je suis capable de créer pour Mac OS mais j'ai des problèmes pour créer sous Linux. Pouvez-vous m'aider à résoudre ces erreurs ?

Solution

Cette erreur de compilation croisée est causée par le package github.com/godror/godror utilisant CGO. Pour compiler l'application, vous avez besoin d'une installation gcc valide et de CGO_ENABLED=1, comme indiqué dans le Lisezmoi. Vous pouvez essayer d'utiliser Docker pour compiler pour Linux/amd64.

Exemple :

DOCKER_DEFAULT_PLATFORM=linux/amd64 docker run --rm -v "$PWD":/app -w /app golang:1.21 go build -v db.go
Copier après la connexion

Cela construira l'application dans un conteneur Docker et enregistrera le fichier exécutable dans le répertoire actuel.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal