Detaillierte Einführung in die Kompilierung von Boost 64-Bit- und 32-Bit-Bibliotheken unter Windows

黄舟
Freigeben: 2017-06-07 09:31:35
Original
5554 Leute haben es durchsucht

Allgemeine Kompilierungsbefehle:

cd E:\OpenSource\boost_1_63_0\boost_1_63_0
Nach dem Login kopieren

32-Bit-Bibliothek kompilieren:

Um in einer x86-Umgebung zu kompilieren, müssen Sie Visual zunächst über das Startmenü starten Verwenden Sie die Visual Studio 2008-Eingabeaufforderung von Studio, um die Eingabeaufforderung aufzurufen

Führen Sie bootstrap.bat aus, um die x86-Version von bjam.exe zu generieren

bjam toolset=msvc-9.0 threading=multi link=static runtime-link=static --with-regex
Nach dem Login kopieren

64-Bit-Bibliothek kompilieren:

Um in einer x64-Umgebung zu kompilieren, müssen Sie Visual zunächst über das Startmenü starten Die Visual Studio 2008 x64 Win64-Eingabeaufforderung von Studio gibt die Eingabeaufforderung ein.

Führen Sie bootstrap.bat aus, um die x64-Version von bjam.exe zu generieren

bjam toolset=msvc-9.0 threading=multi link=static runtime-link=static --with-regex address-model=64
Nach dem Login kopieren

Unter anderem bedeutet --prefix das Boost-Installationsverzeichnis;

Stufe bedeutet nur das Generieren von Bibliotheksdateien (DLL- und Lib-Dateien); Gibt den Kompilierungsprozessor an, vs2010 ist msvc-10.0, vs2005/vs2008 ist msvc-8.0 bzw. msvc-9.0;

Variante bestimmt, welche Version kompiliert werden soll, debuggt und veröffentlicht wird;

Link bestimmt, ob die Kompilierung erfolgen soll Verwenden Sie eine statische Bibliothek oder eine dynamische Bibliothek. Shared ist eine dynamische Bibliothek. Statisch ist eine statische Bibliothek.

Adressmodell bestimmt die Adresslänge, dh 32- oder 64-Bit-Programm >Threading legt fest, ob eine Single-Thread-Bibliothek (Single) oder eine Multi-Thread-Bibliothek (Multi) verwendet werden soll.

Runtime-Link legt fest, ob die C/C++-Standardbibliothek statisch oder dynamisch (shared) verknüpft werden soll 🎜>-s ICU_PATH legt den Pfad von icu4c fest;

install generiert ein Include-Verzeichnis mit Header-Dateien.

Theoretisch gilt dieser Artikel für verschiedene Versionen von Boost, insbesondere für die neueste Version 1.48.0; er gilt für verschiedene C++-Compiler wie VC6.0 (einige Bibliotheken werden nicht unterstützt), VS2003, VS2005, VS2008 , VS2010, V2012, gcc, arm-linux-gcc, C++ Bauherr usw.

Lassen Sie uns zunächst das Windows-System zusammenfassen.

1. Laden Sie

herunter. Laden Sie zunächst die neueste Version des Boost-Installationspakets von der offiziellen Boost-Homepage herunter oder verwenden Sie Subversion, um die neueste Version zu erhalten. boost.org/svn/boost/trunk. Normalerweise verwende ich jetzt svn, was das Aktualisieren und Erstellen vereinfacht, anstatt jedes Mal ein neues Installationspaket herunterladen und neu erstellen zu müssen.

2. Installation

Wenn Sie das heruntergeladene Installationspaket verwenden, extrahieren Sie das Boost-Installationspaket in ein lokales Verzeichnis, z. B.: E:SDKboost; wenn Sie svn verwenden Verwenden Sie auch boost Der Code, der in dieses Verzeichnis ausgecheckt wird. Da einige Boost-Klassen vor ihrer Verwendung in Bibliotheken kompiliert werden müssen, müssen wir auch das Boost-spezifische Kompilierungshilfstool Bjam vorbereiten. Führen Sie bootstrap.bat im Stammverzeichnis der Eingabeaufforderung (cmd.exe) aus, und die kompilierte bjam.exe wird automatisch in das Verzeichnis kopiert (bjam muss sich im selben Verzeichnis wie boost-build.jam befinden).

3. Kompilierung

Der nächste Schritt ist der wichtigste Kompilierungsschritt. Sie müssen das Eingabeaufforderungsfenster (cmd.exe) öffnen und bjam ausführen. Sie können den Parameter --help verwenden, um die Befehlshilfe anzuzeigen. Hier werde ich die Befehlszeilenparameter von Bjam ausführlich erläutern, da sie sehr wichtig sind. Erstens erfordert es die Einrichtung einer Programmierumgebung, und Sie müssen geeignete Befehlszeilenparameter entsprechend Ihrer spezifischen zukünftigen Nutzungsumgebung auswählen. Zweitens wirkt es sich auf Ihren Festplattenspeicher aus, der bei vollständiger Kompilierung mehr als 3 GB betragen soll .

Der verwendete bjam-Befehl lautet wie folgt:

Die Bedeutung jedes Parameters wird im Folgenden ausführlich erläutert:

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 release
Nach dem Login kopieren
:

Stufe bedeutet, dass nur Bibliotheken (DLL und Lib) generiert werden. Bei der Installation wird auch ein Include-Verzeichnis mit Header-Dateien generiert. Ich empfehle die Verwendung von Stage, da das von der Installation generierte Include-Verzeichnis tatsächlich das Boost-Verzeichnis nach dem Dekomprimieren des Boost-Installationspakets ist (E:SDKboostboost, das nur wenige Nicht-HPP-Dateien mehr als das Include-Verzeichnis enthält und alle sehr klein sind). , sodass es direkt verwendet werden kann und verschiedene IDEs denselben Satz von Header-Dateien verwenden können, was Kompilierungszeit und Festplattenspeicher spart.

Toolset: Geben Sie den Compiler an, optional wie Borland, GCC, MSVC (VC6), MSVC-9.0 (VS2008) usw.

ohne/mit: Wählen Sie aus, welche Bibliotheken nicht kompiliert/kompiliert werden sollen. Da ich Python, MPI und andere Bibliotheken nicht benötige, schließe ich sie aus. Es gibt auch statische Bibliotheken, die von Bibliotheken wie Wave, Graph, Math, Regex, Test, Program_Options, Serialization und Signals kompiliert werden. Sie sind alle sehr groß, sodass Sie sie weglassen können, wenn sie nicht benötigt werden. Dies kann je nach individuellem Bedarf ausgewählt werden, standardmäßig wird alles kompiliert. Beachten Sie jedoch, dass Sie Python-Sprachunterstützung benötigen, wenn Sie sich für die Kompilierung von Python entscheiden. Sie sollten diese von der offiziellen Python-Homepage herunterladen und installieren. Der Befehl zum Anzeigen der in Boost enthaltenen Bibliotheken lautet bjam --show-libraries.

stagedir/prefix: Stagedir wird für die Bühne verwendet, und das Präfix wird für die Installation verwendet und gibt den Pfad der kompilierten Datei an. Es wird empfohlen, unterschiedliche Verzeichnisse für verschiedene IDEs anzugeben. Beispielsweise entspricht VS2008 E:SDKboostbinvc9 und VC6 entspricht E:SDKboostbinvc6. Andernfalls werden sie alle in einem Verzeichnis generiert, was schwierig zu verwalten ist. Wenn der Installationsparameter verwendet wird, wird auch das Header-Dateiverzeichnis generiert. Das entsprechende Verzeichnis für vc9 ist E:SDKboostbinvc9includeboost-1_46boost, was für vc6 ähnlich ist (dieser Pfad allein ist so umständlich, daher ist es besser, Stage zu verwenden).

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
Nach dem Login kopieren

即可生成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的尺寸会大些,如果做实验没必要这样,编译又慢生成的文件也大。

Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in die Kompilierung von Boost 64-Bit- und 32-Bit-Bibliotheken unter Windows. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!