2016-03-30 9 views
5

Ich habe eine Bibliothek heruntergeladen, die mit einem gcc 4.8 vor der ABI-Änderung in GCC kompiliert wurde.Wie man Boost mit GCC 5 mit alten ABI kompilieren?

Auf meinem Laptop (neueste Kubuntu) habe ich GCC 5.2. Und wenn ich boost installiert ist, scheint es, dass es das neue ABI verwendet, aber dann bekomme ich die folgenden Linkfehler

undefiniertes Symbol .....__ cxx11 ....

Wie ich boost altes ABI installieren mit GCC5?

Antwort

6

Soweit ich weiß, gibt es keine vorgefertigten Boost-Pakete für den alten ABI in den offiziellen Kubuntu-Repositories, daher müssen Sie Boost selbst bauen. Der Bauprozess ist dokumentiert here.

Stellen Sie sicher, dass Sie dieselbe Boost-Version erstellen, die beim Erstellen Ihrer Bibliothek verwendet wurde. Wenn Boost-Konfigurationsmakros definiert wurden, müssen Sie sie ebenfalls auf ähnliche Weise definieren. Andernfalls können ABI-Inkompatibilitäten zwischen der Bibliothek und dem von Ihnen erstellten Boost auftreten.

Um libstdC++ in den alten ABI zu schalten, müssen Sie auch _GLIBCXX_USE_CXX11_ABI auf 0 setzen, wie beschrieben here. Zum Beispiel:

b2 -j8 variant=release define=_GLIBCXX_USE_CXX11_ABI=0 stage 

Sie müssen auch das Makro definieren, wenn Sie Ihren eigenen Code erstellen, die Boost und die Bibliothek nutzt.

+2

Vielen Dank für Ihre richtige Antwort. "define" war die Konfigurationsoption, die ich suchte. Ich möchte diesen Link für diejenigen hinzufügen, die andere Optionen benötigen. http://www.boost.org/build/doc/html/bbv2/overview/invocation.html –