É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}
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 :
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
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}
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 :
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!