ホームページ  >  記事  >  運用・保守  >  Windows でのブースト 64 ビットおよび 32 ビット ライブラリのコンパイルの詳細な紹介

Windows でのブースト 64 ビットおよび 32 ビット ライブラリのコンパイルの詳細な紹介

黄舟
黄舟オリジナル
2017-06-07 09:31:355613ブラウズ

一般的に使用されるコンパイル コマンド:

cd E:\OpenSource\boost_1_63_0\boost_1_63_0

32 ビット ライブラリのコンパイル:

x86 環境では、まずスタート メニューから Visual を起動する必要があります Studio の Visual Studio 2008 コマンド プロンプトでコマンド プロンプトに入る

bootstrap.bat を実行して、x86 バージョンの bjam.exe を生成します。

bjam toolset=msvc-9.0 threading=multi link=static runtime-link=static --with-regex

64 ビット ライブラリをコンパイルします:

x64 環境でコンパイルするには、まずスタート メニューから Visual を起動する必要があります Studio の Visual Studio 2008 x64 Win64 コマンド プロンプトがコマンド プロンプトに入ります

bootstrap.bat を実行して x64 バージョンの bjam.exe を生成します

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

その中で、 --prefix は boost インストール ディレクトリを設定します。

stage はライブラリ ファイル (dll および lib ファイル) の生成のみを意味し、vs2010 は msvc-10.0、vs2005/vs2008 は msvc- を指定します。それぞれ 8.0 msvc-9.0 では、

variant はデバッグをコンパイルしてリリースするバージョンを決定します。

link は静的ライブラリまたは動的ライブラリを使用するかどうかを決定します。shared は動的ライブラリ、static は静的ライブラリです。 model はアドレスの長さを決定します。つまり、32 ビットまたは 64 ビットのプログラムを決定します。

threading は、シングルスレッド (シングル) ライブラリを使用するかマルチスレッド (マルチ) ライブラリを使用するかを決定します。 C++ 標準ライブラリ 静的または動的 (共有);

-s ICU_PATH 設定

install のパスは、ヘッダー ファイルを含むインクルード ディレクトリを生成します。

理論的には、この記事はブーストのさまざまなバージョン、特に最新バージョン 1.48.0 に適用できます。VC6.0 (一部のライブラリはサポートされていません)、VS2003、VS2005、VS2008、VS2010、V2012 などのさまざまな C++ コンパイラーに適用できます。 、gcc、arm-linux-gcc、C++ ビルダーなど

まず、Windows システムについて概要を説明します。

1. ダウンロード

まず、boost 公式ホームページから最新の boost インストール パッケージにアクセスするか、Subversion を使用して最新バージョンを入手します。 。現在、私は通常 svn を使用しています。これにより、毎回新しいインストール パッケージをダウンロードして再構築する代わりに、更新と構築が簡単になります。

2. インストール

ダウンロードしたインストール パッケージを使用している場合は、次のようなローカル ディレクトリにブースト インストール パッケージを解凍してください。 svn を使用している場合は、このディレクトリにブースト コードをチェックアウトすることもできます。 。一部の boost クラスは使用する前にライブラリにコンパイルする必要があるため、boost 専用のコンパイル補助ツール bjam も準備する必要があります。コマンド プロンプト (cmd.exe) のルート ディレクトリにある bootstrap.bat を実行すると、コンパイルされた bjam.exe が自動的にそのディレクトリにコピーされます (bjam は boost-build.jam と同じディレクトリにある必要があります)。

3. コンパイル

次のステップは最も重要なコンパイルステップです。コマンド プロンプト (cmd.exe) ウィンドウを開いて bjam を実行する必要があります。 --help パラメータを使用すると、コマンド ヘルプを表示できます。ここでは、bjam のコマンドラインパラメータについて詳しく説明します。非常に重要です。まず第一に、プログラミング環境の構築が必要であり、将来の特定の使用環境に応じて適切なコマンド ライン パラメーターを選択する必要があります。第二に、完全にコンパイルすると 3G 以上になると言われているハードディスクの容量に影響します。 。

使用される bjam コマンドは次のとおりです:

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

各パラメータの意味は以下で詳しく説明されています:

stage/install

:

stage はライブラリ (dll と lib) の生成のみを意味し、インストールはヘッダーも生成しますファイルが含まれるディレクトリ。インストールによって生成されるインクルード ディレクトリは、実際にはブースト インストール パッケージを解凍した後のブースト ディレクトリになるため、ステージを使用することをお勧めします (E:SDKboostboost。インクルード ディレクトリよりも非 hpp ファイルがわずかに多く、それらはすべて非常に小さいです)。なので、直接使用でき、異なる IDE で同じヘッダー ファイルのセットを使用できるため、コンパイル時間とハード ディスク容量が節約されます。

ツールセット: ボーランド、gcc、msvc (VC6)、msvc-9.0 (VS2008) などのオプションのコンパイラーを指定します。

なし/あり: コンパイルしない/コンパイルしないライブラリを選択します。 Python、mpi、その他のライブラリは必要ないので除外します。 wave、graph、math、regex、test、program_options、serialization、signals などのライブラリによってコンパイルされた静的ライブラリもあります。これらはすべて非常に大きいため、必要ない場合は省略できます。これは個々のニーズに応じて選択でき、デフォルトではすべてコンパイルされます。ただし、Python をコンパイルする場合は、Python 言語サポートが必要であることに注意してください。Python の公式ホームページからダウンロードしてインストールする必要があります。ブーストに含まれるライブラリを表示するコマンドは bjam です --show-ライブラリ。

stagedir/prefix: stagedirはステージ中に使用され、prefixはインストール時に使用され、コンパイルされたファイルのパスを示します。たとえば、VS2008 は E:SDKboostbinvc9 に対応し、VC6 は E:SDKboostbinvc6 に対応するように、IDE ごとに異なるディレクトリを指定することをお勧めします。そうしないと、すべてが 1 つのディレクトリの下に生成されるため、管理が困難になります。 install パラメータを使用すると、vc9 の対応するディレクトリは E:SDKboostbinvc9includeboost-1_46boost になります (このパスだけでは非常に面倒なので、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的尺寸会大些,如果做实验没必要这样,编译又慢生成的文件也大。

以上がWindows でのブースト 64 ビットおよび 32 ビット ライブラリのコンパイルの詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。