Maison > Article > Opération et maintenance > Introduction détaillée à la compilation des bibliothèques boost 64 bits et 32 bits sous Windows
Commandes de compilation courantes :
cd E:\OpenSource\boost_1_63_0\boost_1_63_0
Compiler la bibliothèque 32 bits :
Pour compiler dans un environnement x86, vous devez d'abord démarrer Visual depuis le menu Démarrer
Invite de commandes Visual Studio 2008 de Studio pour accéder à l'invite de commande
Exécutez bootstrap.bat pour générer la version x86 de bjam.exe
bjam toolset=msvc-9.0 threading=multi link=static runtime-link=static --with-regex
Compiler la bibliothèque 64 bits :
Pour compiler en environnement x64, vous devez d'abord démarrer Visual depuis le menu Démarrer L'invite de commande Visual Studio 2008 x64 Win64 de Studio entre dans l'invite de commande
Exécutez bootstrap.bat pour générer la version x64 de bjam.exe
bjam toolset=msvc-9.0 threading=multi link=static runtime-link=static --with-regex address-model=64
Parmi eux, --prefix définit le répertoire d'installation de boost ;
stage signifie uniquement générer des fichiers de bibliothèque (fichiers dll et lib
ensemble d'outils) ; spécifie la compilation Le processeur, vs2010 est msvc-10.0, vs2005/vs2008 est respectivement msvc-8.0 et msvc-9.0 ; utilisez une bibliothèque statique ou une bibliothèque dynamique, shared est une bibliothèque dynamique, static est une bibliothèque statique
le modèle d'adresse détermine la longueur de l'adresse, c'est-à-dire un programme de 32 ou 64 bits
threading détermine s'il faut utiliser une bibliothèque à thread unique (single) ou multi-thread (multi ) ; runtime-link détermine s'il faut lier la bibliothèque standard C/C++ de manière statique ou dynamique (partagée) ; 🎜>-s ICU_PATH définit le chemin de icu4c ; l'installation générera un répertoire d'inclusion contenant les fichiers d'en-tête. Théoriquement, cet article est applicable à différentes versions de boost, en particulier la dernière version 1.48.0 applicable à divers compilateurs C++, tels que VC6.0 (certaines bibliothèques ne sont pas prises en charge), VS2003, VS2005, VS2008 ; , VS2010, V2012, gcc, arm-linux-gcc, C++ Constructeur etc Tout d’abord, résumons le système Windows. 1. Téléchargez Tout d'abord, téléchargez la dernière version du package d'installation de boost à partir de la page d'accueil officielle de boost, ou utilisez Subversion pour obtenir la dernière version. L'adresse est : http://svn. boost.org/svn/boost/ trunk. J'utilise habituellement svn maintenant, ce qui facilite la mise à jour et la construction, au lieu de télécharger un nouveau package d'installation et de le reconstruire à chaque fois. 2. Installation Si vous utilisez le package d'installation téléchargé, veuillez extraire le package d'installation boost dans un répertoire local, tel que : E:SDKboost si vous utilisez svn; Utilisez également boost L'extraction du code dans ce répertoire. Étant donné que certaines classes boost doivent être compilées dans des bibliothèques avant de pouvoir être utilisées, nous devons également préparer l'outil auxiliaire de compilation spécifique au boost, bjam. Exécutez bootstrap.bat dans le répertoire racine de l'invite de commande (cmd.exe) et le bjam.exe compilé sera automatiquement copié dans le répertoire (bjam doit être dans le même répertoire que boost-build.jam). 3. Compilation L'étape suivante est l'étape de compilation la plus importante. Vous devez ouvrir la fenêtre d'invite de commande (cmd.exe) et exécuter bjam. Vous pouvez utiliser le paramètre --help pour afficher l'aide sur la commande. Ici, nous expliquerons en détail les paramètres de ligne de commande de bjam, car c’est très important. Tout d'abord, cela implique la création d'un environnement de programmation, et vous devez choisir les paramètres de ligne de commande appropriés en fonction de votre environnement d'utilisation futur spécifique. Deuxièmement, cela affecte votre espace disque dur, qui est censé être supérieur à 3G s'il est entièrement compilé ; . La commande bjam utilisée est la suivante :La signification de chaque paramètre est expliquée en détail ci-dessous :
stage/install :bjam stage --toolset=msvc-9.0 --without-graph --without-graph_parallel --without-math --without-mpi --without-python --without-serialization --without-wave --stagedir="E:\SDK\boost\bin\vc9" link=static runtime-link=shared runtime-link=static threading=multi debug releasel'étape signifie uniquement générer des bibliothèques (dll et lib), et l'installation générera également un répertoire d'inclusion contenant les fichiers d'en-tête. Je recommande d'utiliser stage, car le répertoire d'inclusion généré par l'installation est en fait le répertoire boost après décompression du package d'installation boost (E: SDKboostboost, qui ne contient que quelques fichiers non-hpp de plus que le répertoire d'inclusion, et ils sont tous très petits ), il peut donc être utilisé directement, et différents IDE peuvent utiliser le même ensemble de fichiers d'en-tête, ce qui permet d'économiser du temps de compilation et de l'espace sur le disque dur.
ensemble d'outils : Spécifiez le compilateur, facultatif tel que borland, gcc, msvc (VC6), msvc-9.0 (VS2008), etc.
sans/avec : Choisissez quelles bibliothèques ne pas compiler/compiler. Parce que je n'ai pas besoin de python, mpi et autres bibliothèques, je les exclus. Il existe également des bibliothèques statiques compilées par des bibliothèques telles que wave, graph, math, regex, test, program_options, sérialisation et signaux. Elles sont toutes très volumineuses, vous pouvez donc les laisser de côté si elles ne sont pas nécessaires. Cela peut être sélectionné en fonction des besoins individuels, et la valeur par défaut est de tout compiler. Cependant, il convient de noter que si vous choisissez de compiler Python, vous avez besoin de la prise en charge du langage Python. Vous devez le télécharger et l'installer à partir de la page d'accueil officielle de Python. La commande pour afficher les bibliothèques incluses dans Boost est bjam --show-librairies.
stagedir/prefix : Stagedir est utilisé pour la scène, et le préfixe est utilisé pour l'installation, indiquant le chemin du fichier compilé. Il est recommandé de spécifier différents répertoires pour différents IDE. Par exemple, VS2008 correspond à E:SDKboostbinvc9 et VC6 correspond à E:SDKboostbinvc6. Sinon, ils sont tous générés dans un seul répertoire, ce qui est difficile à gérer. Si le paramètre install est utilisé, le répertoire du fichier d'en-tête sera également généré. Le répertoire correspondant pour vc9 est E:SDKboostbinvc9includeboost-1_46boost, ce qui est similaire pour vc6 (ce chemin seul est si lourd, il est donc préférable d'utiliser stage).
build-dir:编译生成的中间文件的路径。这个本人这里没用到,默认就在根目录(E:\SDK\boost)下,目录名为bin.v2,等编译完成后可将这个目录全部删除(没用了),所以不需要去设置。
link:生成动态链接库/静态链接库。生成动态链接库需使用shared方式,生成静态链接库需使用static方式。一般boost库可能都是以static方式编译,因为最终发布程序带着boost的dll感觉会比较累赘。
runtime-link:动态/静态链接C/C++运行时库。同样有shared和static两种方式,这样runtime-link和link一共可以产生4种组合方式,各人可以根据自己的需要选择编译。一般link只选static的话,只需要编译2种组合即可,即link=static runtime-link=shared和link=static runtime-link=static,本人一般就编这两种组合。
threading:单/多线程编译。一般都写多线程程序,当然要指定multi方式了;如果需要编写单线程程序,那么还需要编译单线程库,可以使用single方式。
debug/release:编译debug/release版本。一般都是程序的debug版本对应库的debug版本,所以两个都编译。
本人按以上方式分别编译了静态链接和动态链接两个版本后,整个E:\SDK\boost目录有1.28G。如果不打算将来再升级boost版本,那么可以将编译生成的中间文件bin.v2目录删除,这样整个目录(包括安装包解压缩文件和编译生成的库文件)会减小至不到800MB,如果runtime-link只选了一种方式,那么整个目录只有600MB。事实上编译完成后除了boost和bin目录之外其他目录和文件已经可以删除了,这样还可以腾出350MB的空间来。不过我又研究了一下,其实libs这个目录也很有用,它提供了所有Boost类的使用范例,平时可以作为参考;另外doc目录是一个完整的boost使用帮助文档,当然最好也不要删了。其他几个目录和文件加起来也就几十兆,索性都给它们留一条生路吧。
64 位编译
和32位环境不同,x64环境下编译得先从开始菜单启动Visual Studio的Visual Studio 2008 x64 Win64 Command Prompt进入命令提示符,而不是随便打开任意一个命令行窗口就行。然后转到boost根文件夹,运行bootstrap.bat生成x64版的bjam.exe。然后运行命令:
bjam --build-type=complete toolset=msvc-9.0 threading=multi link=shared address-model=64
即可生成DLL版平台库,如果要编译静态库版就把shared改为static。
只生成一个库的话加上例如--with-python得编译选项,避免生成东西太多、时间太长。
要有address-model=64属性,如果没有这个属性的话,会默认生成32位的平台库,加入这个选项才能生成64位的DLL。
如果要生成Boost.Python库,需要先下载安装x64版的Python安装包,我用的版本是3.2.3。在使用这个库编写Python扩展DLL时,默认是使用动态库版的Boost.Python,要使用静态版的必须在C++项目中定义BOOST_PYTHON_STATIC_LIB宏,这样就不用在使用或发布扩展时带着boost_python-vc90-mt-1_50.dll一起了,当然扩展DLL的尺寸会大些,如果做实验没必要这样,编译又慢生成的文件也大。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!