2016-03-30 32 views
5

Ho scaricato una libreria che è stata compilata con un gcc 4.8 prima della modifica ABI in GCC.Come compilare boost con GCC 5 usando il vecchio ABI?

Sul mio laptop (ultimo kubuntu) ho GCC 5.2. E quando ho installato spinta, sembra che ha usato la nuova ABI ma poi ho ottenere i seguenti errori di collegamento

simbolo indefinito .....__ cxx11 ....

Come posso installare spinta utilizzando vecchi ABI con GCC5?

risposta

6

Per quanto ne so, non ci sono pacchetti Boost predefiniti per il vecchio ABI nei repository ufficiali di Kubuntu, quindi dovrai creare Boost da solo. Il processo di costruzione è documentato here.

Assicurati di creare la stessa versione di Boost utilizzata durante la creazione della libreria. Se sono state definite macro di configurazione Boost, sarà necessario definirle in modo simile. Altrimenti potresti incontrare incompatibilità ABI tra la libreria e il Boost che hai creato.

Per passare da libstdC++ al vecchio ABI, è necessario definire anche _GLIBCXX_USE_CXX11_ABI su 0, come descritto in here. Per esempio:

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

Sarà inoltre necessario definire la macro quando si costruisce il proprio codice che utilizza Boost e la biblioteca.

+2

Grazie per la risposta corretta. "define" era l'opzione di configurazione che stavo cercando. Vorrei aggiungere questo link per coloro che potrebbero aver bisogno di altre opzioni. http://www.boost.org/build/doc/html/bbv2/overview/invocation.html –