2010-11-08 5 views
12

Ich habe RHEL 5.2, mit Boost 1.33 installiert. Ich habe boost_1_44_0.tar.bz2 heruntergeladen. und baute es. Nach Abschluss zeigte:Wie fügt man Compiler-Include-Pfade und Linker-Bibliothekspfade für neu installierte Boost hinzu?

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. Wie füge ich die oben genannten Pfade enthalten?
  2. Wenn ich "rpm -q boost" mache, wird boost-1.33.1-10.el5 angezeigt. Warum ist das so, wenn ich Version 1.44 installiert habe?
  3. Gibt es eine bessere Möglichkeit, die neueste Version von Boost zu installieren?

Antwort

10

Zuerst habe ich die bestehende boost rpm

rpm -e boost-1.33.1-10.el5 

mit entfernt Eine Meldung wird angezeigt mit der Meldung "error:" boost "gibt mehrere Pakete an"

Dann versucht:

rpm -e --allmatches boost 

(Ich erinnere mich nicht, ob ich 'boost' getippt oder 'steigern-1.33.1-10.el5')

Die Pakete mit Abhängigkeiten wurden gezeigt. ich getan habe:

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

und so weiter und dann tat

rpm -e --allmatches 

Dies gelöscht vollständig von meinem System steigern.

Dann extrahiert ich mit tar -xvjf boost_1_44_0.tar.bz2 boost_1_44_0.tar.bz2 und lief Bootstrap mit:

./bootstrap.sh 

lief bjam Damals wie:

./bjam install 

Das ist es! Boost wurde auf meinem System installiert, und ich musste beim Kompilieren von Programmen keine der Linker-Optionen angeben! Yay! Jetzt zeigt der Befehl 'rpm -q boost' an, dass kein Paket installiert ist.

+3

Der Schlüssel hier ist ./bjam installieren, weil die Anweisungen es scheinen wie ./b2 ist der Befehl zu verwenden, um zu installieren. –

+0

Bei der Verwendung von './B2' vs'./Bjam': http://www.boost.org/build/doc/html/bbv2/faq/names.html – digawp

8

Sie haben diese Verzeichnisse in Make-Datei enthält, die Sie verwenden würden Ihre Anwendung

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

-I Option Fügt dir in die Liste der Verzeichnisse zu erstellen, die für # include-Dateien durchsucht werden.

-L Option fügt dir in die Liste der Verzeichnisse für Bibliotheken durch Linker gesucht

CC Sonne Compiler ...

+1

Yay getan! Es hat geklappt! Danke! Obwohl meine Absicht, durch die die alte Version von Boost-vollständig ersetzt haben sollte Neue Version: Im Moment sind die Dateien in/usr/include/boost/anscheinend aktualisiert worden, aber es ist ärgerlich, weiterhin auf/home/dfe/Archive/boost_1_44_0 zu verweisen Ordner in jedem Programm, das ich verwende. Was kann ich tun, um 1_44_0 zur Standardversion zu machen? – Nav

7

Fügen Sie einfach die Pfade zu Ihren Bashrc oder .profile (oder was auch immer Ihr Boot schwimmt) wie folgt aus:

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

Nicht sicher, warum dies downvoted ist ... kann jemand erklären, was mit dieser Antwort falsch ist? – isomorphismes

9

ein möglicher Grund ist, dass man nur „machen“ und nicht „make install“. so sollten Sie "sudo ./b2 installieren" nicht ausführen "./ B2" überprüfen ‚ 2.make‚build Software in aktuellem Verzeichnis‘ 3.make installieren„Kopieren von Dateien auf die Systeme so die anderen Software

gibt es immer dort Schritte Software in Linux-Systemen 1.configure installieren‘ diese Software könnte“verwenden

das Problem ist, dass Sie zwei Schritte und einen letzten Schritt getan hatte, nicht

+0

Dies war hilfreich auf meinem Debian8. – amirteymuri