Comment installer CORRECTEMENT gsl bibliothèque dans Linux?
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 a fait "./configurer", "faire", et "sudo make install", selon le document inclus. J'ai vérifié le fichier /usr/local/include répertoire nouvellement créé, "gsl" dans le dossier. Mais Quand j'ai essayé d'utiliser les fonctions fournies par la bibliothèque, le "undefined reference to 'gsl_sf_beta_inc'" erreur s'est produite. Voici mon code.
#include <stdio.h>
#include <gsl/gsl_sf_gamma.h>
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 pourrait être causé par le fait, j'ai mis le paquet sur le bureau, de sorte que le code binaire généré par le "make" y va, ce qui est faux.
Donc, est ma conjecture est correcte? Si elle l'est, où dois-je les mettre? Si elle n'est pas, que dois-je faire?
Merci.
OriginalL'auteur seemuch | 2011-08-11
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de lier la bibliothèque, en supposant que le
make install
a été un succès.La gsl de la documentation dit que cela devrait fonctionner
(notez les deux nécessaires options de liaison pour la gsl de travail: "-lgsl -lgslcblas"):
Alternative "cblas" au lieu de gsl est cblas est aussi possible, comme par: suppléant cblas pour la gsl
Mais vraiment, si l'installation a réussi, vous simplement besoin d'ajuster la ligne, je fournis avec les chemins réels (qui je pense sont corrects, puisque vous l'avez dit il y a une gsl dossier dans /usr/src/include).
J'ai essayé celui-ci: gcc-I/usr/local/include -L/usr/local/lib principal.c -o -lgsl -l gslcblas, et cela a fonctionné. Merci!!!!
Vous êtes la bienvenue mec, il suffit de ne pas oublier d'accepter la réponse si vous trouvez qu'il en vaut la peine.
OriginalL'auteur Vinicius Kamakura
Utilisation
pkg-config --libs gsl
à savoir sur les linkers et puis il suffit de les relier. Une option serait de vérifierpkg-config --cflags gsl
. La deuxième vous donne le répertoire de l'inclure des fichiers s'ils ne sont pas installées par défaut dans le/usr/include/
répertoire. Si vous avez installé là, vous pouvez simplement ignorer.La sortie de
pkg-config --libs gsl
serait-lgsl -lgslcblas -lm
Cela signifie que ces trois doivent être liées. Ainsi, alors que la compilation de votre programme, vous ne que par,
gcc name.c -lgsl -lgslcblas -lm
gcc -o name name.c $(pkg-config --cflags --libs gsl)
, ou (dans un délai raisonnable Makefile)LDFLAGS+=$(shell pkg-config --libs gsl)
etCFLAGS+=$(shell pkg-config --cflags gsl)
.OriginalL'auteur Nidish Narayanaa