2017-06-04 4 views
0

Je ne suis pas en mesure d'installer this library sur Ubuntu, ou du moins de compiler un .cpp qui y relie la bibliothèque. J'ai terminé toutes les réponses Google et StackOverflow. Donc, d'abord, je cours cmake et après je cours make (et make install pour être sûr). Pourtant, si je cours g++ xxx.cpp -lcrb -o test je reçois cette erreur: fatal error: CRNB.h: No such file or directory. La bibliothèque n'aime pas être encore installée, donc je copie le fichier libcrn.so à /usr/lib et je cours sudo ldconfig pour le charger. Maintenant ...Impossible d'installer la bibliothèque partagée avec le fichier .so

  • sudo ldconfig -n -v /usr/lib/ dit qu'il est correctement installé (pas avant de copier le fichier .so).
  • g++ -lcrn dit qu'il est correctement installé, car les retours undefined reference to 'main' et non cannot find -lcrn (comme avant de copier le fichier .so)
  • ldd /bin/ls ne liste pas la bibliothèque, ce qui signifie qu'il est pas installé

Quoi qu'il en soit, en essayant de compiler encore lance la même erreur. J'ai aussi essayé ...

  • ... pour créer un fichier .conf et l'ajouter au dossier /etc/ld.so.conf.d/
  • ... à creaty un lien symbolique du fichier .so-/usr/lib
  • .. . répéter toutes ces solutions aussi dans /usr/local/lib et /lib dossiers
  • ... pour ajouter tous ces dossiers aux /etc/ld.so.conf chemins
  • ... pour exporter LD_LIBRARY_PATH le chemin de t il .so fichier

Et beaucoup plus similaires. Comme vous pouvez le voir, toutes ces choses sont les mêmes, alors il est clair que je perds quelque chose d'important. Quelqu'un sait ce que cela pourrait être?

Merci beaucoup!

+0

' erreur fatale: CRNB.h: Aucun fichier ou directory' signifie qu'il ne peut pas trouver le fichier d'en-tête ** ** 'CRNB.h' . Parmi vos tentatives, vous n'avez jamais essayé de faire quelque chose avec ce fichier. En fait, après 'cmake' -' make' - 'make install' la bibliothèque ** est installée **, mais elle est installée * localement *, sous le sous-répertoire' install_3.9.5'. Ainsi, vous pouvez utiliser la bibliothèque, mais vous devez fournir des répertoires d'inclusion supplémentaires appropriés (drapeau '-I' pour' gcc') et répertoires de liens (drapeau '-L'). – Tsyvarev

Répondre

1

Vous devez spécifier avec le drapeau "-I" les répertoires d'inclusion, ou l'importer sur votre système.

Essayez:

g++ src_name.cpp -L./your/library -lcrn -I./your/headers -o out_name -std=c++11 

Ou:

Vous pouvez copier libcrn inclure des fichiers ("* .h") "/ usr/local/include /" et la bibliothèque «/usr// » local/lib si n'existe pas, puis:

g++ src_name.cpp -lcrn -o out_name -std=c++11 
+0

J'ai oublié de copier les fichiers include dans/usr/local/include. De cette façon, cela fonctionne avec votre dernière commande. Merci! – Maximetinu