2010-11-08 34 views
12

J'ai RHEL 5.2, avec Boost 1.33 installé. J'ai téléchargé boost_1_44_0.tar.bz2. et l'a construit. A la fin il a montré:Comment ajouter des chemins d'inclusion de compilateur et des chemins de bibliothèque de liens pour les Boost nouvellement installés?

The Boost C++ Libraries were successfully built! 

The following directory should be added to compiler include paths: 

    /home/dfe/Archive/boost_1_44_0 

The following directory should be added to linker library paths: 

    /home/dfe/Archive/boost_1_44_0/stage/lib 
  1. Comment puis-je ajouter les inclure mentionnés ci-dessus des chemins?
  2. Quand je fais "rpm -q boost", il montre boost-1.33.1-10.el5. Pourquoi est-ce ainsi, quand j'ai installé la version 1.44?
  3. Existe-t-il une meilleure façon d'installer la dernière version de Boost?

Répondre

10

D'abord, je retire le régime boost existant à l'aide

rpm -e boost-1.33.1-10.el5 

Un message s'affiche "error:" boost "spécifie plusieurs packages"

Ensuite essayé:

rpm -e --allmatches boost 

(Je ne me souviens pas si je tapais 'coup de pouce' ou 'boost-1.33.1-10.el5')

Les paquets avec dépendances ont été présentés. Je l'ai fait:

rpm -e [packagename1] 
rpm -e [packagename2] 

et ainsi de suite, puis fait:

rpm -e --allmatches 

Ce complètement effacé stimuler mon système.

J'extrait boost_1_44_0.tar.bz2 à l'aide de boost_1_44_0.tar.bz2 de goudron et a couru avec bootstrap:

./bootstrap.sh 

puis a couru bjam comme:

./bjam install 

Ca y est! Boost a été installé sur mon système, et je n'ai pas eu besoin de spécifier les options de l'éditeur de liens lors de la compilation des programmes! Yay! Maintenant, la commande 'rpm -q boost' indique qu'aucun paquet n'est installé.

+3

La chose la plus importante ici est l'installation de ./bjam, car les instructions donnent l'impression que ./b2 est la commande à utiliser pour l'installation. –

+0

Sur l'utilisation de './B2' vs'./Bjam': http://www.boost.org/build/doc/html/bbv2/faq/names.html – digawp

8

Vous devez inclure ces répertoires dans makefile que vous utilisez pour construire votre application

CC -I/home/dfe/Archive/boost_1_44_0 -L/home/dfe/Archive/boost_1_44_0/stage/lib yourprogram.cpp 

option -I Ajoute dir à la liste des répertoires qui sont à la recherche de fichiers #include.

option -L ajoute dir à la liste des répertoires de recherche pour les bibliothèques par linker

CC compilateur soleil ...

+1

Yay! Ça a marché! Merci! Bien que mon intention était d'avoir l'ancienne version de Boost complètement remplacé par le nouvelle version En ce moment, les fichiers dans/usr/include/boost/semblent avoir été mis à jour, mais il est ennuyeux de continuer à créer des liens vers/home/dfe/Archive/boost_1_44_0 dossier dans tous les programmes que j'utilise. Tout ce que je peux faire pour rendre 1_44_0 la version par défaut? – Nav

7

Il suffit d'ajouter les chemins à votre .bashrc ou .profile (ou quel que soit votre bateau flotte) comme ceci:

export LIBS="-L/home/dfe/Archive/boost_1_44_0/stage/lib" 
export CPPFLAGS="-I/home/dfe/Archive/boost_1_44_0" 
+0

Je ne sais pas pourquoi cela est downvoted ... quelqu'un peut-il expliquer ce qui ne va pas avec cette réponse? – isomorphismes

9

une raison possible est que vous venez de « faire » et non « make install ». alors vous devriez lancer "sudo ./b2 install" et non "./ B2"

il y a toujours là pas installer des logiciels dans les systèmes linux 1.Configurer « vérifier » 2.Make « construire des logiciels dans le répertoire courant » 3.Assurez installer « copier des fichiers sur les systèmes pour les autres logiciels pourrait utiliser ce logiciel »

le problème est que vous avez fait deux étapes et une dernière étape avait pas fait

+0

Cela a été utile sur mon Debian8. – amirteymuri