2009-12-30 6 views
3

J'ai compilé et installé ma bibliothèque boost dans '/ media/data/bin' dans ubuntu 9.10. Et j'ai installé le include_path, env LIBRARY_PATH:Problème dans la configuration de la bibliothèque boost sur ubuntu

$ echo $INCLUDE_PATH 
/media/data/bin/boost/include: 
$ echo $LIBRARY_PATH 
/media/data/bin/boost/lib: 

Mais quand je compile l'exemple asio, je reçois l'erreur suivante: $ g ++ blocking_tcp_echo_server.cpp

blocking_tcp_echo_server.cpp:13:26: error: boost/bind.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:14:31: error: boost/smart_ptr.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:15:26: error: boost/asio.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:16:28: error: boost/thread.hpp: No such file or directory 
blocking_tcp_echo_server.cpp:18: error: ‘boost’ has not been declared 
blocking_tcp_echo_server.cpp:22: error: ‘boost’ has not been declared 
blocking_tcp_echo_server.cpp:22: error: expected initializer before ‘<’ token 
blocking_tcp_echo_server.cpp:24: error: variable or field ‘session’ declared void 
blocking_tcp_echo_server.cpp:24: error: ‘socket_ptr’ was not declared in this scope 

Répondre

10

Quel est le problème avec

sudo apt-get install libboost-dev 

après que vous n'avez pas besoin de mettre des drapeaux -I et -L. Si vous avez besoin de Boost 1.40, vous pouvez toujours reconstruire le paquet Debian unstable actuel.

+0

Je ne l'ai pas utilisé car il mettra boost dans mon lecteur principal, dont je manque d'espace. Donc, je compile/installe boost sur mon disque dur externe (qui a beaucoup plus d'espace que mon disque principal). – n179911

0

essayer C_INCLUDE_PATH ou utilisez - Je compilateur l'option

BTW, l'utilisation LD_LIBRARY_PATH pour aider à trouver la bibliothèque

+0

j'ai mis la C_INCLUDE_PATH et CPLUS_PATH, mais je reçois encore erreur de lien: : erreur: undefine d référence à 'typeinfo pour boost :: :: détails thread_data_base' J'ai mis $ echo $ LD_LIBRARY_PATH /media/data/bin/boost/lib: – n179911

+0

vous devez spécifier la bibliothèque pour créer un lien vers avec "-lxxx" flag, assurez-vous que vous n'avez pas d'espace. bien sûr, vous devrez remplacer XXX par le nom de la bibliothèque moins le préfixe "lib" et sans suffixe. Je ne connais pas le nom exact de la bibliothèque, vous devrez peut-être lire la documentation. La variable LD spécifie le chemin de recherche pour les bibliothèques, mais pas la bibliothèque à lier. – Anycorn

+0

vous savez quoi, essayez simplement d'ajouter -lboost à votre commande de compilation/liaison – Anycorn

0

Vérifiez que les en-têtes est en fait là:

/media/data/bin/boost/include/boost/bind.hpp

Essayez également d'utiliser -I/media/data/bin/boost/include au lieu de variable d'env (notez aucun espace après -I).

3

Pour enregistrer le temps de tout le monde, voici la réponse que je donnais à cette question ailleurs: http://permalink.gmane.org/gmane.comp.lib.boost.user/54626

Mise à jour 11/02/2016: Il est nécessaire de préciser les options directement:

g++ -I<prefix>/include -L <prefix>/lib 

ou de l'utilisation les variables droite:

export CPLUS_INCLUDE_PATH=<prefix>/include 
export LIBRARY_PATH=<prefix>/lib 
+0

Veuillez ajouter la partie requise de la réponse ici au lieu de mettre le lien –

+0

Ceci est une question de 2009, liée à Ubuntu 9.10. Beaucoup de choses ont changé, et en particulier Boost build imprime, à la fin, des instructions sur l'utilisation du Boost installé. Puis-je suggérer que si vous avez un problème à ce jour, vous postez une question détaillée distincte? Le problème et la solution pourraient très bien être différents de ce qu'ils étaient dans cette question. –

Questions connexes