2015-02-08 13 views
7

Próbuję zrobić build źródłowy doładowania poprzez:doładowania budować przerwy: Nazwa starcie dla „<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 

to dławiki z następującym komunikatem o błędzie:

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. 

Występuje zarówno w gałęzi develop, jak i master. Co można zrobić, aby naprawić ten błąd? Z góry dziękuję.

Odpowiedz

3

Udało mi się zbudować, korzystając z sugestii pod numerem https://stackoverflow.com/a/27885628/200985. Kompiluję gałąź boost-1.57.0 i zacząłem kompilację gałęzi boost-1.56.0 i również minęłem ten punkt. Podsumowując, uruchomiłem:

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

Myślę, że to doprowadza mnie do problemu kompilacji, ale po prostu nie rozumiem, dlaczego nikt nie wie, jak zbudować całą bibliotekę boost. Wolałbym tego nie robić. – user14717

3

To jest błąd w bieżącym głównym git. Jako obejście, wyraźnie określać opcje w linii poleceń:

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

Uruchomiłem ciąg "git pull" i próbowałem tego, ale wciąż pojawił się ten sam komunikat o błędzie dla mnie. . . – user14717

+0

Powinien to być "model adresu = 64", a nie "--adres-model = 64" (tzn. Bez wiodących podwójnych kresek). – Tanz87

3

Z Boost 1.58 beta release notes:

Ważna uwaga

Jest to błąd ze skryptów kompilacji; musisz określić tryb adresowy i architekturę na b2. Użyłem:

./b2 address-model=64 architecture=x86

to sprawdzić.

Dodanie tych flagi dowodzić b2 rozwiązuje problem bez konieczności wykluczenia bibliotek context i coroutine (przydatne jeśli, powiedzmy, właściwie korzystać z tych bibliotek, jak ja!).

Oczywiście, jeśli budujesz biblioteki 32-bitowe, zamiast tego chcesz dodać address-model=32.

+0

Więc różni się on od poprzedniej odpowiedzi od '--address-model' vs.' address-model'? – user14717

+2

@NickThompson: '--address-model' i' --architecture' nie wydają się nic robić - poprawnym sposobem na określenie tych opcji jest brak kresek. (To by wyjaśniało, dlaczego dodanie opcji za pomocą myślników nie przyniosło efektu!) – HighCommander4