Maison  >  Article  >  développement back-end  >  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
PHPzavant
2024-02-09 08:20:18684parcourir

如何解决 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>

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

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

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer