Maison > développement back-end > Golang > Comment lier statiquement un exécutable Go CGO aux bibliothèques Oracle sous Linux ?

Comment lier statiquement un exécutable Go CGO aux bibliothèques Oracle sous Linux ?

Patricia Arquette
Libérer: 2024-11-25 10:50:11
original
288 Les gens l'ont consulté

How to Statically Link a Go CGO Executable with Oracle Libraries on Linux?

Lien pour l'exécution statique de Go CGO exécutable avec les bibliothèques Oracle sous Linux

Énoncé du problème :

Création d'un Go de base L'interface de l'extrait de code avec une base de données Oracle échoue lors de la compilation statique à l'aide de l'option command :

CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static"  ${MAIN_SRC}
Copier après la connexion

L'erreur de compilation indique que la bibliothèque Oracle -lclntsh est introuvable. Malgré les tentatives de définition de variables d'environnement et d'installation de fichiers supplémentaires à partir du package de base de données Oracle, la compilation statique échoue toujours.

Solution :

  1. Générer la bibliothèque statique :

    Oracle n'est généralement pas livré avec la bibliothèque statique libclntst.a. Pour le générer, exécutez la commande suivante :

    $ORACLE_HOME/bin/genclntst
    Copier après la connexion
  2. Liez l'application :

    Liez votre application à la bibliothèque statique générée :

    CGO_ENABLED=1 go build -work -x -ldflags "-v -linkmode external -extldflags -static -L/usr/lib/oracle/12.1/client64/lib -lclntsh -lclntst"  ${MAIN_SRC}
    Copier après la connexion
  3. Gérer les symboles manquants (Facultatif) :

    S'il manque encore des symboles, utilisez l'outil nm pour les identifier. Ensuite, ajoutez des bibliothèques statiques supplémentaires si nécessaire pour résoudre les dépendances.

Remarques supplémentaires :

  • L'utilisation de l'utilitaire de création de liens d'Oracle peut être utile pour analyser les dépendances.
  • En fonction de la version d'Oracle et du compilateur, il peut être nécessaire d'établir une liaison avec un runtime ICC supplémentaire bibliothèques statiques.
  • La liaison statique nécessite de résoudre manuellement toutes les dépendances, ce qui peut être complexe.

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal