2011-08-02 1 views
5

Je deviens fou ... J'essaie actuellement de mettre à jour boost pour mon projet de 1.44.0 à 1.47.0 sur osx snow léopard.- Je veux pour le construire avec la commande suivante:OSX Snow Leopard: Build boost 1.47.0 pour 32 et 64 bits

./b2 macosx-version=10.6 link=static address-model=32_64 threading=multi stage 

où je pense que cela me donne une accumulation de graisse statique qui prend en charge aswell i386 comme x86_64. Quoi qu'il en soit, il ne le fait évidemment pas, puisque si je demande lipo -info des bibliothèques résultantes, ils sont tous x86_64.- Que puis-je faire pour résoudre ce problème? Se pourrait-il que le script de construction est cassé?

+0

Je crois que vous devez spécifier explicitement 'toolset = darwin'; Cependant, en tant que vérification de cohérence, exécutez cette même invocation 'b2' plus l'argument' -n' et publiez un exemple de la façon dont le compilateur est appelé (en particulier, quels arguments sont passés). – ildjarn

+0

hmm le -n ne fait rien, qu'est-ce que c'est censé faire? Le darwin ne change rien (je suis assez sûr que c'est le choix par défaut sur osx de toute façon) merci! – moka

+0

'-n' demande à bjam/b2 de sortir les commandes du compilateur/éditeur de liens qu'il aurait exécutées, sans les exécuter réellement. Êtes-vous en train de dire qu'il n'y avait pas de sortie de programme du tout? – ildjarn

Répondre

2

Je l'ai à travailler en utilisant cette construction:

./b2 link = filetage statique = jeu d'outils multiples = darwin CXXFLAGS = "ligne - la x86_64 de i386 arc" macosx version = 10.6 stade

2

C'est ce qui a fonctionné pour moi.

./b2 link=static threading=multi toolset=darwin cxxflags="-arch i386 -arch x86_64" target-os=darwin address-model=32_64 stage 
1

La seule façon pour moi d'obtenir les binaires de graisse bâtiment Boost 1,49 sur MacOSX 10.6 était d'utiliser à la fois l'architecture des paramètres = x86 et adresse modèle = 32_64.

1

J'ai essayé toutes les options et aucun d'entre eux n'a produit un binaire universel avec les architectures 32 et 64 bits. Celui qui a finalement fonctionné pour moi était celui-ci:

./b2 threading=multi toolset=darwin architecture=x86 target-os=darwin address-model=32_64 stage 

C'est avec boost 1.51.0 sur Mountain Lion.

0

Vous devez ajouter l'option « architecture », par exemple:

./b2 macosx-version=10.6 link=static address-model=32_64 architecture=combined threading=multi stage 
0

Je vais avoir des problèmes de construction trop 32/64 versions combinées, et finalement eu recours à la construction des deux séparément (je devais ajouter le cxx drapeau "-arch i386" à la construction 32 bits) et en utilisant lipo pour les combiner. Par exemple:

./bjam link=static release install address-model=32 --prefix=$prefix_dir-x86" --python-buildid=2.7 python=2.7 --with-python cxxflags="-fPIC -Wfatal-errors -arch i386" -s NO_BZIP2=1 -s NO_ZLIB=1 
./bjam link=static release install address-model=64 --prefix=$prefix_dir-x64" --python-buildid=2.7 python=2.7 --with-python cxxflags="-fPIC -Wfatal-errors" -s NO_BZIP2=1 -s NO_ZLIB=1 
lipo $prefix_dir-x86/lib/libboost_python-2_7.a $prefix_dir-x64/lib/libboost_python-2_7.a -output $prefix_dir-universal/libboost_python-2_7.a -create 

Étant donné que j'ai toujours binaires 64 bits (quand j'ai demandé 32 bits) avant ajouté « -arch i386 », je pense qu'il ya un problème avec le script de construction de bjam/b2 pour binaires 32 bits sur macos.

Questions connexes