精华内容
下载资源
问答
  • boost自动编译脚本

    千次下载 热门讨论 2012-03-01 18:16:54
    boost的自动编译脚本。能将boost自动编译成vs2008、vs2010的32位和64位版本库。最好能配合great3779的博文《编译boost (boost_1_49_0)》一起使用。
  • boost全平台编译方法

    万次阅读 热门讨论 2015-06-11 12:00:25
    0.通用规则boost自带一套编译工具bjam,bjam本身是跨平台的,并且也要自行编译出来。在boost目录下有bootstrap.sh和bootstrap.bat两个脚本分别用来编译*nix和windows下的bjam。bootstrap脚本可以传入参数,以在编译...

    1.通用规则

    多数库是不需要预先编译的,include hpp文件就能用。如果出现链接失败,那就是可能需要编译库了。

    boost自带一套编译工具bjam,bjam本身是跨平台的,并且也要自行编译出来。在boost目录下有bootstrap.sh和bootstrap.bat两个脚本分别用来编译*nix和windows下的bjam。bootstrap脚本可以传入参数,以在编译bjam过程中生成特定的编译boost的配置。这些配置保存在新生成的project-config.jam里,但还可以在运行bjam的时候再传入参数来覆盖。同时生成的b2是bjam的代理,运行哪个的效果都差不多。
    在终端下运行
    bjam --show-libraries
    会列出所有要编译的库。
    真正编译时,可以传入–with-xxx来选择编译哪些库,或者传入–without-xxx来选择不编译哪些库。如果不传则会读取project-config.jam的设置,如果也没有则是编译全部的库。
    更多的参数可以用
    bjam --help
    来查看。例如编译成静态库还是动态库,运行时库是静态的还是动态的,编译完后要不要安装等。

    注意:
    旧版本的boost可能会存在编译问题,尽量用新的就好。bjam在*nix和windows支持的参数有不同。


    2. iOS平台编译

    环境:

    OS X Yosemite 10.10.3
    Xcode 6.3.1(6D1002)。如果用Xcode 7在模拟器版链接失败,往 ${EXTRA_CPPFLAGS:= 添加-miphoneos-version-min=7参数
    boost 1.57/1.58

    步骤:

    把下面的脚本保存成build_boost.sh,直接运行即可:

    #!/bin/bash
    # http://blog.csdn.net/hursing/article/details/45439087
    # 请自行修改路径,cd到boost解压后的目录下
    dir=`dirname $0`
    cd "$dir/../../third_party/boost_1_57_0"
    # 如果库文件已存在,直接退出
    if [ -e ./stage/lib/libboost_date_time.a ]; then
      echo "libraries exist. no need to build."
      exit 0
    fi
    
    # 以下代码参考 https://gist.github.com/rsobik/7513324 ,原文使用的boost版本比较旧,不能使用。
    
    : ${COMPILER:="clang++"}
    : ${IPHONE_SDKVERSION:=`xcodebuild -showsdks | grep iphoneos | egrep "[[:digit:]]+\.[[:digit:]]+" -o | tail -1`}
    : ${XCODE_ROOT:=`xcode-select -print-path`}
    : ${EXTRA_CPPFLAGS:="-DBOOST_AC_USE_PTHREADS -DBOOST_SP_USE_PTHREADS -stdlib=libc++"}
    
    echo "IPHONE_SDKVERSION: $IPHONE_SDKVERSION"
    echo "XCODE_ROOT:        $XCODE_ROOT"
    echo "COMPILER:          $COMPILER"
    
    echo "bootstrap"
    # 此脚本如果是被Xcode调用的话,会因为xcode export的某些变量导致失败,所以加了env -i。直接在命令行运行此脚本可以把env -i 去掉
    env -i bash ./bootstrap.sh
    
    echo "write project-config.jam"
    # 默认生存的project-config.jam是编译Mac版的,这里直接调换掉
    rm project-config.jam
    cat >> project-config.jam <<EOF
    using darwin : ${IPHONE_SDKVERSION}~iphone
    : $XCODE_ROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/$COMPILER -arch armv7 -arch arm64 $EXTRA_CPPFLAGS
    : <striper> <root>$XCODE_ROOT/Platforms/iPhoneOS.platform/Developer
    : <architecture>arm <target-os>iphone
    ;
    using darwin : ${IPHONE_SDKVERSION}~iphonesim
    : $XCODE_ROOT/Toolchains/XcodeDefault.xctoolchain/usr/bin/$COMPILER -arch i386 -arch x86_64 $EXTRA_CPPFLAGS
    : <striper> <root>$XCODE_ROOT/Platforms/iPhoneSimulator.platform/Developer
    : <architecture>ia64 <target-os>iphone
    ;
    EOF
    # 上面的代码里,两个using darwin分别是编译真机版和模拟器版的设置。每多一种CPU架构就要再加一个-arch xxx。
    
    echo "build boost iphone dev"
    ./bjam -j16 --with-date_time --with-filesystem --with-system --with-thread --build-dir=iphone-build --stagedir=iphone-build/stage toolset=darwin architecture=arm target-os=iphone macosx-version=iphone-${IPHONE_SDKVERSION} define=_LITTLE_ENDIAN link=static stage
    
    echo "build boost iphone sim"
    ./bjam -j16 --with-date_time --with-filesystem --with-system --with-thread --build-dir=iphonesim-build --stagedir=iphonesim-build/stage --toolset=darwin-${IPHONE_SDKVERSION}~iphonesim architecture=ia64 target-os=iphone macosx-version=iphonesim-${IPHONE_SDKVERSION} link=static stage
    
    echo "lipo"
    # 把各架构下的库文件合一,以便在xcode里可以少设置些搜索路径。做得更彻底些是各个分库合成一个大库。不过除非是把静态库加入到代码仓库,否则是浪费时间了。要合成的大库话请参考https://gist.github.com/rsobik/7513324原文。
    mkdir -p stage/lib
    lipo -create iphone-build/stage/lib/libboost_date_time.a iphonesim-build/stage/lib/libboost_date_time.a -output stage/lib/libboost_date_time.a
    lipo -create iphone-build/stage/lib/libboost_filesystem.a iphonesim-build/stage/lib/libboost_filesystem.a -output stage/lib/libboost_filesystem.a
    lipo -create iphone-build/stage/lib/libboost_system.a iphonesim-build/stage/lib/libboost_system.a -output stage/lib/libboost_system.a
    lipo -create iphone-build/stage/lib/libboost_thread.a iphonesim-build/stage/lib/libboost_thread.a -output stage/lib/libboost_thread.a
    # 库文件最终放在./stage/lib/下
    
    echo "Completed successfully"

    集成到Xcode

    做iOS的同学还是习惯完全用Xcode的吧。所以可以把上面的脚本集成到xcode里。在某个工程中,Xcode菜单File->New->Target…->Other->Aggregate->取名boost,Finish->在这个target的属性中选择Build Phases->点击左边的+号->New Run Script Phase->填入bash ./build_boost.sh->自己再填好库文件搜索路径和链接各个boost库。主target还要设置依赖boost target,免得boost编译前就链接以致错误。
    xcode的target设置


    3.Android平台编译

    Android的编译方法有两种:一种是和iOS一样,自己覆盖project-config.jam引入NDK的编译工具设置,然后用bjam编译;另一种是自己写Android.mk。自己写project-config.jam因为要兼顾很多种CPU架构而(无论是写jam还是主工程的Android.mk都)较为麻烦,所以本文用后者。

    环境

    Ubuntu 14.04 64bit / Linux Mint 17 64bit
    NDK r10c
    boost 1.57/1.58

    步骤

    想要哪个库,自己把那个库下的cpp文件加到mk里,都在libs/xxxx/下。如果在libs找不到,说明这个库是不需要额外编译的。
    以下是编译四个库的Android.mk的内容:

    include $(CLEAR_VARS)
    LOCAL_PATH := $(ROOT_PATH)/third_party/boost_1_57_0
    LOCAL_MODULE := boost
    # 需要编译哪个库,自行把libs目录下的cpp加进来即可。
    LOCAL_SRC_FILES += \
      libs/filesystem/src/path.cpp \
      libs/filesystem/src/path_traits.cpp \
      libs/filesystem/src/operations.cpp \
      libs/filesystem/src/codecvt_error_category.cpp \
      libs/filesystem/src/portability.cpp \
      libs/filesystem/src/utf8_codecvt_facet.cpp \
      \
      libs/date_time/src/gregorian/date_generators.cpp \
      libs/date_time/src/gregorian/greg_month.cpp \
      libs/date_time/src/gregorian/greg_weekday.cpp \
      libs/date_time/src/gregorian/gregorian_types.cpp \
      libs/date_time/src/posix_time/posix_time_types.cpp \
      \
      libs/system/src/error_code.cpp \
      \
      libs/thread/src/future.cpp \
      libs/thread/src/pthread/once.cpp \
      libs/thread/src/pthread/once_atomic.cpp \
      libs/thread/src/pthread/thread.cpp
    # 如果要把boost集成到动态库里,-fPIC是必须的,不然会有链接错误。原因请自行Google
    LOCAL_CFLAGS += -fPIC -frtti -fexceptions
    include $(BUILD_STATIC_LIBRARY)

    Application.mk的内容:

    APP_PLATFORM := android-19
    APP_OPTIM := release
    APP_CFLAGS += -Wall
    APP_STL := gnustl_static
    APP_ABI := armeabi-v7a

    这是最普通的做法,如果要加编译参数,还得自己琢磨下。例如不要rtti,就得LOCAL_CFLAGS += -DBOOST_NO_RTTI

    还是想用boost原生的编译方法的话,可参考这里 http://stackoverflow.com/questions/30491158/compile-and-use-boost-for-android-ndk-r10e


    4.Windows平台编译

    环境

    Windows 7 旗舰版 64bit SP1
    Visual Studio Ultimate 2013
    boost 1.57/1.58

    步骤

    以下是build_boost.bat的内容,直接执行即可:

    cd ..\..\third_party\boost_1_57_0
    if not exist .\b2.exe (
        call .\bootstrap.bat
        .\b2.exe -j5 --with-date_time --with-filesystem --with-system --with-thread --with-regex link=static runtime-link=static
    )

    注意这里生成的是MTd和MT。MD的话runtime-link=shared。

    集成到VS

    工程属性->Configuration Properties->Build Events->Pre-Link Event->Command Line->填入build_boost.bat
    还有设置好库搜索路径和依赖的库。
    Windows的boost有个特点,代码里有#pragma comment(lib, "xxxx"),所以可以不设置依赖的库。但是如果工程设置不对而有link错误,那还是手动加进去吧。


    5.Linux平台编译

    环境

    Ubuntu 14.04 64bit / Linux Mint 17 64bit
    gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1)
    boost 1.57/1.58

    步骤

    直接编译。以下是终端命令

    cd boost_1_57_0
    bash bootstrap.sh
    ./b2

    这样就能在boost_1_57_0/stage/lib/下找到所有的库文件。

    如果用cmake来组织编译,以下是主工程的CMakeLists.txt里的部分内容:

    include(ExternalProject)
    ExternalProject_Add(boost
      SOURCE_DIR ${ROOT_DIR}/third_party/boost_1_57_0
      CONFIGURE_COMMAND bash ${ROOT_DIR}/third_party/boost_1_57_0/bootstrap.sh --with-libraries=date_time,thread,filesystem,system
      BUILD_COMMAND ${ROOT_DIR}/third_party/boost_1_57_0/b2 -j10 cflags=-fPIC cxxflags=-fPIC cxxflags=-fvisibility=hidden cxxflags=-fvisibility-inlines-hidden cxxflags=-fexceptions cxxflags=-DBOOST_NO_RTTI
      BUILD_IN_SOURCE 1
      INSTALL_COMMAND ""
    )
    set(
      BOOST_LIBRARIES
      ${ROOT_DIR}/third_party/boost_1_57_0/stage/lib/libboost_date_time.a
      ${ROOT_DIR}/third_party/boost_1_57_0/stage/lib/libboost_system.a
      ${ROOT_DIR}/third_party/boost_1_57_0/stage/lib/libboost_thread.a
      ${ROOT_DIR}/third_party/boost_1_57_0/stage/lib/libboost_filesystem.a
    )
    # ...
    # 下面是设置链接和依赖
    target_link_libraries(your_target ${BOOST_LIBRARIES})
    add_dependencies(your_target boost)

    可留意
    b2 -j10 cflags=-fPIC cxxflags=-fPIC cxxflags=-fvisibility=hidden cxxflags=-fvisibility-inlines-hidden cxxflags=-fexceptions cxxflags=-DBOOST_NO_RTTI
    如果要传递多个cflags,需要重复键名,而不是加双引号把多个值赋给同一个。红色的部分是隐藏符号。


    6.Mac OS X编译

    环境

    OS X Yosemite 10.10.3
    Xcode 6.3.1(6D1002)
    boost 1.57/1.58

    步骤

    和Linux相同。集成到Xcode的步骤和iOS类似。


    转载请注明出处:http://blog.csdn.net/hursing

    展开全文
  • boost编译步骤

    2011-12-07 00:22:54
    boost编译步骤
  • boost Windows 编译

    2018-01-09 13:14:17
    最近使用boost读取XML文件时遇到一个问题:boost在VS 64位编译工程里面使用boost总是说某些库无法使用,未定义标志符之类的。后来才明白,原来boost是区分32位编译和64位编译的,问题也出在这里。因此记下来,防止再...

    最近使用boost读取XML文件时遇到一个问题:boost在VS 64位编译工程里面使用boost总是说某些库无法使用,未定义标志符之类的。后来才明白,原来boost是区分32位编译和64位编译的,问题也出在这里。因此记下来,防止再出错。


    boost Windows 64位编译方法:如果32位已经编译完成,那么只需使用x64 vs编译窗口cd到boost文件目录下,运行b2.exe指令:b2.exe  --build-type=complete --stagedir=".\vc12_x64" address-model=64


    这里的64就是指明编译64位平台,如果不指明,默认情况下是32位的编译平台, ".\vc12_x64" 指明的是编译之后的库所放的路径,系统会在boost根目录下生成一个名字为vc12_x64的文件夹存放64位编译平台产生的依赖库,当然也可以自己指明路径。

    展开全文
  • boost源码编译

    2014-06-21 08:55:34
    详细信息可参考:http://blog.csdn.net/baiwfg2/article/details/32727791 用VS2012编译boost-1.53,不包括头文件。只要下载了源代码,boost文件夹里就是头文件
  • Boost1.42编译

    2015-10-11 01:05:03
    1. 首先在...注意要把boost库放在一个至少有6个g空间的硬盘编译。   2.下载后使用命令行进入boost库的根目录(我的为:G:/boost_1_42_0)。   3.在命令行窗口运行boost库的根目录的批处理文件:boo

    1. 首先在http://sourceforge.net/projects/boost/files/boost/1.42.0/ 下载boost库的最新版本boost_1_42。注意要把boost库放在一个至少有6个g空间的硬盘编译。

     
    2.下载后使用命令行进入boost库的根目录(我的为:G:/boost_1_42_0)。

     
    3.在命令行窗口运行boost库的根目录的批处理文件:bootstrap.bat生成bjam工具。 (直接在解压目录下双击bootstrap.bat即可)


    4.在命令行下进入boost_1_42_0文件夹目录,运行命令:bjam -sBOOST_ROOT=.-sTOOLS=msvc "--build-type=complete"

    如图:

    注意:这是完全编译boost库,包括单线程、多线程、unicode和非unicode版本。因为我觉得以后的需求是不确定的,干脆一次性编译好了。

    说明:
    “-sBOOST_ROOT=.”:表明boost库的根目录在当前目录。

    “-sTOOLS=msvc”:表示使用VC 编译器进行编译,如果你机子上装有多个版本的VC,那么会选择最高版本的编译器进行编译(如装有VC6.0、VC 8.0,那么肯定是选择VC 8.0的编译器进行编译)。

    “--build-type=complete”表明是完全编译,包括各种版本。

    开始编译,编译的时间长度视机器性能而定,我大概用了半个小时间,下图为编译过程截图:


    完成编译:


    5.使用

    编译完成后就是在VC或者VS中的设置问题了。

    我的boost路径是:d:/softwares/boost1_42_0/boost 1_42_0/*

    刚才编译的库文件在d:/softwares/boost1_42_0/boost 1_42_0/stage/lib中。

    进行如下设置:

    1.includedirectory 中包含根目录d:/softwares/boost 1_42_0/boost 1_42_0/。

    2.libraryinclude 中包含d:/softwares/boost 1_42_0/boost 1_42_0/stage/lib。

    3.sourceinclude 中包含d:/softwares/boost 1_42_0/boost 1_42_0/boost。

     

    展开全文
  • boost编译

    千次阅读 2018-09-05 13:56:50
    01 完全编译windows版本boost68, vs2015/vs2017 https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.7z –build-type=complete 完全编译,会同时编译出32位/64位/动态/静态库。 bootstrap.bat...

    01 完全编译windows版本boost68, vs2015/vs2017

    https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.7z
    –build-type=complete 完全编译,会同时编译出32位/64位/动态/静态库。

    bootstrap.bat
    bjam --help
    bjam install --toolset=msvc-14.0 --prefix="D:/install/boost/boost_1_68_0/msvc140" --build-type=complete --build-dir="../tmp/boost_1_68_0/complete/msvc140"
    bjam install --toolset=msvc-14.1 --prefix="D:/install/boost/boost_1_68_0/msvc141" --build-type=complete --build-dir="../tmp/boost_1_68_0/complete/msvc141"

    02 boost库生成文件命名和编译

    生成文件命名规则:boost中有许多库,有的库需要编译、而有的库不需要编译,只需包含头文件就可以使用。编译生成的文件名字普遍较长,同一个库根据编译链接选项不同,又可以生成多个不同名字的文件。生成的文件名字是很长,可是这样带的信息才多,也就容易识别出用途。其实生成文件的名字遵循一定的规则,有着固定的格式。识别这种格式,能帮助我们更高效地使用boost库。生成文件名字格式如:

    BOOST_LIB_PREFIX + BOOST_LIB_NAME + “-” + BOOST_LIB_TOOLSET + “-” + BOOST_LIB_THREAD_OPT + “-” + BOOST_LIB_RT_OPT + “-” + BOOST_LIB_VERSION

    这些定义为:
    BOOST_LIB_PREFIX: 静态库为 “lib” (否则无,是用动态链接库)
    BOOST_LIB_NAME: 库的基本名称 ( 比方说 boost_regex).
    BOOST_LIB_TOOLSET: 编译工具集名称 ( 比如:vc6, vc7, bcb5 )
    BOOST_LIB_THREAD_OPT: 多线程为 “-mt” ,否则为空
    BOOST_LIB_RT_OPT: 指示使用的运行库的后缀,
    组合下面的一个或者更多字符:
    s 静态运行库,指的是静态链接到运行时库(不出现表示动态).
    g 调试/诊断 runtime (release if not present).
    d 调试版本 (不出现表示 release 版 ).
    p STLPort 版本.
    注:对 vc 来说,gd 总是一起出现
    BOOST_LIB_VERSION: Boost 版本, Boost 版本 x.y 表示为 x_y形式.

    展开全文
  • boost交叉编译

    千次阅读 2017-06-21 10:49:32
    运行bootstrap.sh# ./bootstrap.sh生成b2、bjam和project-config.jam文件修改project-config.jamusing gcc : arm : arm-hisiv100nptl-linux-g++ ; (注意空格)运行bjam# ./bjam编译# ./b2安装# ./b2 install
  • boost VS 编译

    千次阅读 2015-11-25 16:25:05
    1,下载boost源码  直接到官网就可以下载(http://www.boost.org/)  写博客的时候最新版本为1.59  http://www.boost.org/users/history/version_1_59_0.html  2,找个容量足够大的盘,最好剩余容量超过10G,解...
  • boost编译选项(windows)

    千次阅读 2018-07-22 14:42:31
    boost编译过程如下: 1、下载boost库(本实例用的boost1.63)并解压 2、进入boost库解码目录,执行bootstrap.bat,生成b2或bjam可执行编译工具; 3、利用b2或bjam编译boost库(进入cmd命令行,然后进入boost...
  • vs2015编译boost1.71库_x64_x86全编译
  • VS2017下Boost编译

    2019-01-18 16:21:34
    本文档包含了以下内容: 一、下载Boost。 二、编译生成b2.exe。 三、编译开关。 四、b2.exe常见参数的详细使用说明。 输入b2.exe -–help回车可以看到详细帮助。
  • boost编译资料命令

    2016-08-09 16:36:30
    boost编译
  • BOOST编译错误记录

    2018-06-13 15:33:13
    1、编译BOOST动态库2、Cmake websocketpp,找不到BOOST位置,根据cmake错误提示,查看CMakeLists.txt,新建环境变量BOOST_ROOT_CPP11 3、Configure webscoketpp 项目完成后,Generate 即可; //参考路径&lt;相关...
  • boost编译选项

    千次阅读 2019-05-31 11:58:19
    编译的临时文件存放位置 --build-dir=<builddir> 存放编译后库文件的路径,默认stage --stagedir=<stagedir> 编译所有版本 --build-type=complete 不然只会编译一小部分(相当于:variant=...
  • Boost编译指南

    2013-06-22 18:09:33
    编译Boost库步骤: 1.在官方下载Boost源码包,解压缩。 2.运行根目录下的bootstap.bat,在当前目录将产生bjam.exe。(用来编译boost) 3.boost有很多库是不需要编译的,只要包含头文件即可,只有少数要编译。 4....
  • boost 1.56.0 编译及使用

    2015-07-23 09:45:30
    boost 1.56.0 编译及使用该文很好的介绍了boost的基本编译方法[如何编译成64位]2参考文献: [1]http://www.cnblogs.com/zhcncn/p/3950477.html [2] ...
  • boost的自动编译脚本。能将boost自动编译成vs2008、vs2010的32位和64位版本库。最好能配合great3779的博文《编译boost (boost_1_52_0)》一起使用。兼容1_52_0之前的各版本。
  • CentOS6.5上Boost编译安装记录

    千次阅读 2016-07-05 12:29:58
    下载boost 源码解压编译 安装 完结撒花资源准备由于具体安装编译内容很长,所以下面用…来表示首先得安装gcc,g++,等环境# yum install gcc g++ bzip2 bzip2-devel bzip2-libs Python-devel -y ... Installed: ...
  • Boost编译详解

    千次阅读 2015-04-13 23:25:04
    VS命令提示符窗口中先编译bjam编译工具,然后对需要的boost库进行编译编译调试版本加 debug 编译发布版本加 release 编译静态链接库:link=static runtime-link=static 编译动态库:link=shared ...
  • BOOST静态编译

    千次阅读 2013-03-07 17:45:28
    boost官网上下载编译之后发现仍然找不到该库。然后从网上找了一下资料,原来自带的bjam默认编译不带参数,不是静态库。  以“libboost_thread-vc80-mt-sgd-1_42.lib”为例:  libbo
  • Boost编译

    2019-04-21 01:32:58
    NULL 博文链接:https://wv1124.iteye.com/blog/1910620
  • windows 下vs2010编译boost静态库文件和头文件,可直接在vs工程中引用。
  • boost1.35.0编译日志

    千次阅读 2008-07-12 13:02:00
    boost1.35.0编译日志 经历了将近半年多的时间boost终于发布了1.35.0版本(前版本1.34.1发布于2007/7),其编译方法和原来的编译方法基本上是一致的,主要改变包括1.34.0以来bjam的toolset所提供的参数名称的改变...
  • boost编译64位

    千次阅读 2015-07-05 09:28:20
    boost大部分库只需要包含头文件即可使用,而有部分需要编译的,如下:E:\Qt\Qt3rdlib\boost_1_58_0>bjam --show-libraries The following libraries require building: - atomic - chrono - container - context...
  • boost 编译脚本

    2015-07-08 18:12:24
    快速的编译boost,让你能了解一些bat基本知识!
  • #include <iostream> #include <string> #include <boost/filesystem/path.hpp> using namespace std; int main() ... boost::filesystem::path path = "/home/jack/";... boost::filesy...
  • Linux下Boost交叉编译

    2012-07-07 14:42:54
    运行环境:ubuntu 12.04, boost 1.50.0 ...boost编译分两部:编译bjam,编译boost   编译bjam的工作比较简单,根据文档上来就可以: 进入下载下来的boost的根目录,进入tools/build/v2 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 46,488
精华内容 18,595
关键字:

boost全编译