2015-02-08 9 views
7

Sto cercando di fare una build fonte spinta, tramite:Boost costruire pause: Nome scontro per '<pstage/lib> libboost_system.so.1.58.0'

git clone --recursive https://github.com/boostorg/boost.git 
cd boost 
./bootstrap 
./b2 link=shared threading=multi variant=release --without-mpi 

Questo soffoca con il seguente messaggio di errore:

error: Name clash for '<pstage/lib>libboost_system.so.1.58.0' 
error: 
error: Tried to build the target twice, with property sets having 
error: these incompabile properties: 
error: 
error:  - none 
error:  - <address-model>64 <architecture>x86 
error: 
error: Please make sure to have consistent requirements for these 
error: properties everywhere in your project, especially for install 
error: targets. 

Ciò si verifica su entrambi i rami develop e master. Cosa si può fare per correggere questo errore? Grazie in anticipo.

risposta

3

Sono stato in grado di costruire utilizzando il suggerimento allo https://stackoverflow.com/a/27885628/200985. Sto compilando il ramo boost-1.57.0 e ho iniziato a compilare il ramo boost-1.56.0 e anche questo punto è passato. Per riassumere, ho eseguito

git co boost-1.57.0; 
./bootstrap.sh --prefix=/home/me/builds/development; 
./b2 --prefix=/home/me/builds/development -j9 --without-context --without-coroutine; 
+6

Immagino che questo mi aiuti a risolvere il problema della compilazione, ma non capisco perché nessuno sa come costruire l'intera libreria boost. Preferirei non farlo. – user14717

3

Questo è un bug nell'attuale master git. Per risolvere il problema, dichiarare esplicitamente le opzioni sulla linea di comando:

./b2 link=shared threading=multi variant=release --without-mpi --address-model=64 --architecture=x86 
+0

Ho eseguito un 'git pull' e ho provato questo, ma mi è venuto in mente lo stesso messaggio di errore. . . – user14717

+0

Dovrebbe essere 'address-model = 64', non' --address-model = 64' (cioè senza i due trattini principali). – Tanz87

3

Dal Boost 1.58 beta release notes:

Nota importante

C'è un bug con gli script di compilazione; devi specificare la modalità indirizzo e architettura in b2. Ho usato:

./b2 address-model=64 architecture=x86

per testare questo.

L'aggiunta di questi flag al comando b2 risolve il problema senza dover escludere le librerie context e coroutine (utile se, per esempio, che effettivamente utilizzate queste librerie, come faccio io!).

Naturalmente, se si creano librerie a 32 bit, si desidera aggiungere address-model=32.

+0

Quindi questo differisce dalla risposta precedente per '--address-model' vs.' address-model'? – user14717

+2

@NickThompson: '--address-model' e' --architecture' non sembrano fare nulla - il modo corretto per specificare tali opzioni è senza i trattini. (Questo spiegherebbe perché l'aggiunta delle opzioni con i trattini non ha avuto alcun effetto!) – HighCommander4

Problemi correlati