J’ai eu un problème lors de l’installation de la bibliothèque scientifique GNU (gsl). J’ai mis le paquet sur mon bureau et ai fait “./configure”, “make” et “sudo make install”, selon le document inclus. J’ai vérifié le répertoire / usr / local / include, il y a un dossier “gsl” récemment créé. Mais lorsque j’ai essayé d’utiliser les fonctions fournies par la bibliothèque, l’erreur “une référence non définie à ‘gsl_sf_beta_inc'” s’est produite. Voici mon code.
#include #include int main (void) { double a = 20; double b = 1000; double x = 0.5; double result = gsl_sf_beta_inc(a, b, x); printf("%f/d", result); return 0; }
J’ai senti que le problème venait peut-être du fait que j’ai placé le paquet sur le bureau. Le code binary généré par la commande “make” y est donc insuffisant. Alors, ma proposition est-elle correcte? Si c’est le cas, où devrais-je les mettre? Si ce n’est pas le cas, que dois-je faire? Merci.
Vous devez relier la bibliothèque en supposant que make install
a réussi.
La documentation de la gsl indique que cela devrait fonctionner
(notez les deux options de liaison nécessaires pour que gsl fonctionne: “-lgsl -lgslcblas”):
gcc -I/usr/local/include -L/usr/local/lib main.c -o main -lgsl -lgslcblas -lm
Une alternative “cblas” à la place des cblas de gsl est également possible selon: substitut de cblas pour gsl
Utilisez pkg-config --libs gsl
pour savoir quels sont les linkers nécessaires et les lier. Une option serait de vérifier pkg-config --cflags gsl
. La seconde vous donne le répertoire des fichiers d’inclusion s’ils ne sont pas installés dans le /usr/include/
par défaut. Si vous l’avez installé là-bas, vous pouvez simplement l’ignorer.
La sortie de pkg-config --libs gsl
serait
-lgsl -lgslcblas -lm
Cela signifie que ces trois doivent être liés. Ainsi, lors de la compilation de votre programme, vous le faites en
gcc name.c -lgsl -lgslcblas -lm