2009-08-31 11 views
19

Jak wymusić 32-bitową kompilację Boost z GCC? Obecnie próbuje poprzez umieszczenie tej linii w moim user-config.jam, ale to nie działa:Jak wymusić 32-bitową kompilację Boost z GCC?

using gcc : 4.1.2 : g++ : compileflags="-m32" ; 
+0

ją zbudować za pomocą bjam, myślę, że chcesz to zrobić: bjam adres model = 32 architektura = x86 –

+0

Czy to jest w systemie Linux ...? Generalnie oszukuję używając 'setarch i686 make' lub podobnego. Nie wiem, czy to by działało na Boost, szczególnie. (W takim przypadku możesz po prostu pobrać 32-bitową wersję binarną dla swojego systemu operacyjnego, więc domyślam się, że jesteś w innym systemie.) – BRFennPocock

Odpowiedz

25

Jeśli używasz C++ Zwiększ 1.40, należy:

bjam address-model=32 

Jeśli używasz eariler wersji, należy rozważyć aktualizację. Jeśli nie można użyć

bjam address-model=32 architecture=x86 

ja też zalecamy, aby spojrzeć na fine manual

+11

O tak ... ta "dobra instrukcja" jest świetna. Uwielbiam wszystkie przykłady, które oferują. (Sarkazm) –

+1

Naszywki są mile widziane. Jednak nie jestem do końca pewien, czy jawne dodanie pełnego polecenia, jak w przykładzie dla każdej z wymienionych nieruchomości pod numerem pod powyższym adresem URL, spowoduje znacznie więcej niż nadmiar dokumentów. –

+2

Pamiętaj, że jeśli masz 64-bitową wersję 'gcc', powinieneś rzucić okiem na odpowiedź @AndrewMeadows. – ereOn

18

ta odpowiedź pomogła mnie do roztworu, który pracował dla mnie. Próbowałem skompilować wersję 32-bity boost_1_43_0 na 64-bitowym Debianie i ostatecznie wyszedł z tego:

./bjam     \ 
    cflags=-m32   \ 
    cxxflags=-m32  \ 
    address-model=32  \ 
    threading=multi  \ 
    architecture=x86  \ 
    instruction-set=i686 \ 
    stage 
+1

Ponadto, jeśli chcesz zmienić kompilator, możesz określić wersję kompilatora za pomocą katalogu projektu "project-config.jam" lub "user-config.jam", upewniając się, że 'using gcc:: g ++ - 4.4; 'jest używane (określono 4.4 do kompilacji Boost z plikami Matlab MEX (32-bit) na 64-bitowym systemie Linux). – eacousineau

+0

Dzięki Andrew, bardzo przydatna odpowiedź! –

Powiązane problemy