Lorsque j'essaie de compiler l'exemple1.cpp fourni avec Armadillo 2.4.2, je continue à obtenir l'erreur de liaison suivante:
/tmp/ccbnLbA0.o: In function `double arma::blas::dot<double>(unsigned int, double const*, double const*)': main.cpp:(.text._ZN4arma4blas3dotIdEET_jPKS2_S4_[double arma::blas::dot<double>(unsigned int, double const*, double const*)]+0x3b): undefined reference to `wrapper_ddot_' /tmp/ccbnLbA0.o: In function `void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)': main.cpp:(.text._ZN4arma4blas4gemvIdEEvPKcPKiS5_PKT_S8_S5_S8_S5_S8_PS6_S5_[void arma::blas::gemv<double>(char const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)]+0x68): undefined reference to `wrapper_dgemv_' /tmp/ccbnLbA0.o: In function `void arma::blas::gemm<double>(char const*, char const*, int const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)': main.cpp:(.text._ZN4arma4blas4gemmIdEEvPKcS3_PKiS5_S5_PKT_S8_S5_S8_S5_S8_PS6_S5_[void arma::blas::gemm<double>(char const*, char const*, int const*, int const*, int const*, double const*, double const*, int const*, double const*, int const*, double const*, double*, int const*)]+0x7a): undefined reference to `wrapper_dgemm_' collect2: ld returned 1 exit status
J'utilise Ubuntu 11.04 sur le modèle MacBook Pro 7,1 P> P>
3 Réponses :
Merci beaucoup à Osgx! Après avoir lu son commentaire, j'ai pris un deuxième regard sur le fichier README! Il s'avère que j'étais manquant '-O1 -Larmadillo' dans la commande!
Voici la commande que j'avais l'habitude de le faire fonctionner: p> stupide erreur, je sais. ... il va juste vous rappeler à quel point il est important de lire le fichier README. P> Le README mentionne également: p> Si vous obtenez des erreurs de liaison ou si Fermadillo a été installé manuellement.
et vous avez spécifié que Lapack et Blas sont disponibles, vous allez
besoin de lier explicitement avec Lapack et Blas (ou leurs équivalents),
Par exemple: P> g++ example1.cpp -o example1 -O1 -llapack -lblas
C'était exactement ce que je cherchais! Avoir à relier lapack et blas uniquement. Je suis également coupable de ne pas lire le ReadMe alors ne vous sentez pas mal. J'étais en train de compiler et d'obtenir des références indéfinies à mon popack et à mon blas: 'cgemv_', 'sdot _' code>, ... etc ...
à partir de 5.0.0 kbd> strong> (peut également s'appliquer aux versions antérieures) p>
Vous avez réellement besoin -Larmadillo code>, sur fedora 21 kbd>
-llapack code> et
-Lopenblas code> ne sont plus obligatoires . P>
Il y a une bizarrerie que je viens de découvrir en comparant des compilations de code auparavant au problème avec le problème même de ce fil, soulignant l'implication de la GNU cc (je ne suis pas un expert en cela): sur mon succès de la compilation de la machine dépend de la commande des paramètres à la GCC / G ++ où g ++ infile -o Outfile -Libarmadillo ... a travaillé, mais G ++ -Libarmadillo Infile -o Outfile ... n'a pas eu avec (presque) la même erreur que celle mentionnée ci-dessus. (espère que cela aide). P>
On dirait que votre armadillo n'est pas correctement configuré ou la bibliothèque nécessaire n'est pas mentionnée dans la chaîne de compilation. Pouvez-vous montrer comment vous compilez exemple1.cpp