>운영 및 유지보수 >창문 운영 및 유지보수 >Windows에서 Boost 64비트 및 32비트 라이브러리 컴파일에 대한 자세한 소개

Windows에서 Boost 64비트 및 32비트 라이브러리 컴파일에 대한 자세한 소개

黄舟
黄舟원래의
2017-06-07 09:31:355683검색

일반적인 컴파일 명령:

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는 부스트 설치 디렉터리를 설정합니다.

stage는 라이브러리 파일(dll 및 lib 파일) 생성만 의미하며,

toolset은 컴파일러를 지정하고, vs2010은 msvc-10.0이고, vs2005/vs2008은 msvc-입니다. 8.0 각각 msvc-9.0에서는

variant가 디버그 및 릴리스할 버전을 결정합니다.

link는 정적 라이브러리를 사용할지 아니면 동적 라이브러리를 사용할지 결정하고, static은 정적 라이브러리를

주소로 지정합니다. 모델은 주소 길이, 즉 32비트 또는 64비트 프로그램을 결정합니다.

threading은 단일 스레드(단일) 또는 다중 스레드(다중) 라이브러리를 사용할지 여부를 결정합니다.

runtime-link는 C/를 연결할지 여부를 결정합니다. C++ 표준 라이브러리는 정적 또는 동적으로(공유)

-s ICU_PATH 설정 icu4c의 경로는 헤더 파일을 포함하는 포함 디렉터리를 생성합니다.

이론적으로 이 기사는 다양한 버전의 Boost, 특히 VC6.0(일부 라이브러리는 지원되지 않음), VS2003, VS2005, VS2008, VS2010, V2012와 같은 다양한 C++ 컴파일러에 적용 가능한 최신 버전인 1.48.0에 적용됩니다. , gcc, arm-linux-gcc, C++ 빌더 등

먼저 Windows 시스템을 요약해 보겠습니다.

1. 다운로드

먼저 Boost 공식 홈페이지에서 최신 Boost 설치 패키지로 이동하거나 Subversion을 사용하여 최신 버전을 다운로드하세요. http://svn.boost.org/svn/boost/trunk . 나는 보통 새 설치 패키지를 다운로드하고 매번 다시 빌드하는 대신 쉽게 업데이트하고 빌드할 수 있는 svn을 사용합니다.

2. 설치

다운로드한 설치 패키지를 사용하는 경우 다음과 같은 로컬 디렉터리에 부스트 설치 패키지의 압축을 풀어주세요. svn을 사용하는 경우 이 디렉터리에서 부스트 코드를 확인할 수도 있습니다. . 일부 부스트 클래스를 사용하기 전에 라이브러리로 컴파일해야 하기 때문에 부스트 관련 컴파일 보조 도구 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가 아닌 파일이 몇 개 더 많고 모두 매우 작음)의 압축을 푼 후 부스트 디렉터리이기 때문에 stage를 사용하는 것이 좋습니다. 이므로 직접 사용할 수 있으며, 다른 IDE에서 동일한 헤더 파일 세트를 사용할 수 있으므로 컴파일 시간과 하드 디스크 공간이 절약됩니다.

toolset

: borland, gcc, msvc(VC6), msvc-9.0(VS2008) 등과 같은 선택적인 컴파일러를 지정합니다.

without/with

: 컴파일/컴파일하지 않을 라이브러리를 선택하세요. Python, mpi 및 기타 라이브러리는 필요하지 않기 때문에 제외합니다. wave, graph, math, regex, test, program_options, serialization 및 signal과 같은 라이브러리로 컴파일된 정적 ​​라이브러리도 있으므로 모두 매우 크기 때문에 필요하지 않으면 생략할 수 있습니다. 이는 개인의 필요에 따라 선택할 수 있으며 기본값은 모두 컴파일하는 것입니다. 그러나 Python을 컴파일하기로 선택한 경우 Python 공식 홈페이지에서 다운로드하여 설치해야 한다는 점에 유의해야 합니다. Boost 포함 라이브러리를 보는 명령은 bjam입니다. --쇼-라이브러리.

stagedir/prefix

: stagedir은 스테이지 중에 사용되고, 설치 시에는 컴파일된 파일의 경로를 나타내는 prefix가 사용됩니다. 예를 들어 VS2008은 E:SDKboostbinvc9에 해당하고, VC6은 E:SDKboostbinvc6에 해당합니다. 그렇지 않으면 모두 하나의 디렉터리 아래에 생성되므로 관리가 어렵습니다. install 매개변수를 사용하면 헤더 파일 디렉터리도 생성됩니다. vc9에 해당하는 디렉터리는 E:SDKboostbinvc9includeboost-1_46boost이며 이는 vc6과 유사합니다(이 경로만으로는 너무 번거롭기 때문에 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에서 Boost 64비트 및 32비트 라이브러리 컴파일에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.