在Windows下 Build Boost线程库

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

在Windows下 Build Boost线程库

作者:伐木工

    Boost库中许多都是在.hpp中实现的,只要包含路径就可以直接就拿来使用。但是仍然有一些需要build为目标库才能够使用,包括Python,正则表达式和多线程库。

    折腾了几天,终于将Boost的多线程库搞定了,现在就将我得方法写出来,希望能给遇到麻烦的朋友一些参考。

   环境

   下面是我的一些安装路径,在安装过程中需要根据实际情况调整:

     操作系统:Win2000

      VC6:      F:/Microsoft Visual Studio/VC98

      BOOST:    F:/boost_1_27_0

    安装Jam

    Build Boost线程库需要使用工具Boost.Jam。工欲善其事,必先利其器。现在先来看看如何安装Jam。

    命令行:

    F:/boost_1_27_0> set VISUALC=""F:/Microsoft Visual Studio/VC98""

    F:/boost_1_27_0> set JAM_TOOLSET=VISUALC

    F:/boost_1_27_0/tools/jam_src>nmake -f bulids/win32-visualc.mk 

    说明:

    首先是设置环境变量VISUALC和JAM_TOOLSET。VISUALC中有两个双引号是为了能够识别空格。如果你的VC安装路径不含空格就不必加上双引号了: set VISUALC=F:/visual/VC98。

    接着就是使用nmake命令编译了。不同的操作系统和不同的开发工具对应不同的mk文件,都在tools/jam_src/builds/目录下。

    如果你使用的VC7的话就会有问题,由于编译过程中要使用到advapi32.lib这个文件,VC6中是在vc98/lib/目录下,而VC7是在platformsdk/lib/,这样就会找不到路径。由于没有仔细研究Jam,不知道在哪里修改这个路径,只好请大家自己动手了。

    如果不想让系统的环境变量变得杂乱不堪,可以用set VISUAL=命令将变量清除。

    完成之后,就可以在/tools/build/jam_src下看见一个新的目录,bin.ntx86,其中就包含了jam.exe。

    Build

    现在该开始创建Boost线程目标库了。

    命令行:

    f:/boost_1_27_0>set Path=%PAHT:~0%;F:/boost_1_27_0/tools/build/jam_src/bin.ntx86

    f:/boost_1_27_0> set VISUALC="F:/Micors~1/VC98"

    f:/boost_1_27_0> jam -sBOOST_ROOT=. -sTOOLS=msvc

    说明:

    首先将jam.exe的路径加入Path变量中。

    接着设置VISUALC,这里和安装Jam时不同,请注意,用的DOS文件名。

    最后就是执行jam,-sBOOST_ROOT=.表示Boost的根目录是当前目录,-sTOOLS=msvc指明了工具名称,这些名称都是特定的,具体可以访问boost网站查询。

    build需要花些时间,可能还会有不少错误,但可以不必管他。

    完成之后,就会发现/libs/thread/build/bin/目录下多了多了两个文件夹,libboost_thread和libboost_threadmon,其中就可以找到完成lib文件和dll文件。

    使用

    首先在VC中加入路径:

    tools->option中Directories属性页中加入:    

F:/BOOST_1_27_0/LIBS/THREAD/BUILD/BIN/LIBBOOST_THREADMON/MSVC/RELEASE/RUNTIME-LINK-DYNAMIC/THREADING-MULTI

    F:/BOOST_1_27_0/LIBS/THREAD/BUILD/BIN/LIBBOOST_THREAD/MSVC/RELEASE/RUNTIME-LINK-DYNAMIC/THREADING-MULTI

    在工程中加入lib文件:

    在project->setting中link属性页加入使用的lib:libboost_thread.lib libboost_threadmon.lib

    定义BOOST_HAS_THREADS宏,不然就会有如下错误:Thread support is unavailable!

    选择多线程运行库

    在project->setting->C/C++->Code Generation中Use run-time library下拉框中选Multithreaded DLL

     好了,现在就可以体会Boost线程库带给我们的全新感受了。

     由于我也是刚刚才接触Boost,对Boost和Jam工具还不是很了解,不敢妄加评论,以免贻笑大方,所以只是简单的列出了我方法,如果有什么不对的地方请大家指出。

利用vcpkg实现C++项目跨平台迁移:从Windows到Linux/macOS的实战指南 在C++开发中,跨平台移植常因编译器差异、库依赖和系统API不统一而面临巨大挑战,这本质上是依赖管理和ABI兼容性问题。为解决这一痛点,以vcpkg为代表的跨平台C/C++包管理器应运而生,它通过从源码构建和三元组(Triplet)机制,确保库与项目在同一环境下编译,从根本上保证了二进制兼容性。其技术价值在于提供了标准化、可复现的依赖管理方案,并与CMake等构建系统深度集成,自动化处理头文件和库路径,极大提升了开发效率。在工程实践中,vcpkg尤其适用于需要将Windows原生项目迁移至Linux或mac 阅读详情

相关推荐

vcpkg生态下C++第三方库性能深度测评:JSON、HTTP与并发队列实战对比

在C++项目开发中,第三方库的选型直接影响着应用性能与开发效率。理解库的核心原理,如JSON解析的SIMD指令加速、HTTP客户端的连接复用机制以及无锁队列的内存序模型,是进行技术选型的基础。这些底层技术通过优化数据序列化、网络I/O和线程间通信,为构建高性能、高并发的系统提供了关键支撑,广泛应用于后端服务、实时数据处理和微服务架构等场景。本次测评聚焦于vcpkg包管理器生态,通过严谨的基准测试,量化对比了RapidJSON、simdjson、cpp-httplib、Boost.Beast以及MoodyCa

aibi9196的博客 417

gcc 4.7 + 不能使用boost_thread的解决办法

在用gcc 4.7及以上的版本gcc编译boost_thread支持的程序时会提示: /usr/include/boost/config/requires_threads.hpp:29:4: error: #error "Threading support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREAD

linuxchyu的专栏 6714

从零搭建现代化C++开发环境:解决VS Code配置与智能指针多线程实践

C++作为系统级编程的核心语言,以其对硬件资源的直接控制能力和零成本抽象原则,在性能敏感领域如游戏引擎、高频交易中占据不可替代的地位。其核心原理在于通过RAII(资源获取即初始化)机制实现确定性资源管理,结合智能指针等现代特性提升内存安全性。在工程实践中,高效开发环境的搭建是首要门槛,尤其需要解决Windows平台下Microsoft Visual C++依赖缺失和VS Code环境配置等常见问题。通过集成CMake构建系统和包管理器,开发者可以快速创建支持多线程、STL容器和智能指针的项目模板,为算法学习

cuanji3287的博客 438

boost::thread的六种使用方法总结

转载自https://blog.csdn.net/jack_20/article/details/79892250 读后小结:第4,5,6中情况都是使用bind函数创造出来的函数用于执行线程。   boost::thread有两个构造函数:  (1)thread():构造一个表示当前执行线程的线程对象;  (2)explicit thread(const boost::function0&l...

wqfhenanxc的专栏 965

Boost---在Windows上的入门(2)

4 使用 Boost建立一个简单的程序 为简单起见,让我们开始使用仅有头文件的库。下面的程序从标准输入中读取一个整数序列,使用 Boost.Lambda,每个数字乘以三,和将它们写到标准输出︰ #include #include #include #include int main() { using namespace boost::lambda;

xinqingwuji的博客 1932

Windows编译安装boost

可以按如下方法修改b2的源码,运行bootstrap.bat重新编译b2.exe,再编译boost就可以了。注意:当你用vs2022最新工具编译老版本的boost时可能会出现b2程序识别不了vs编译器版本的问题。源码位置:boost_1_80_0\tools\build\src\tools\msvc.jam。行号不一定正确,建议搜索内容。boost版本:1.80.0。编译工具:MSVC-143。

qq_27322015的博客 2787

Boost C++库1.71.0源码编译与项目集成完整指南

C++标准库为开发者提供了基础功能,但其扩展能力有限。Boost C++库作为“准标准”库,通过提供大量经过实践检验的、高质量的组件,填补了这一空白。其核心原理在于提供可复用的、跨平台的C++组件,许多特性后来被纳入C++11/14/17标准。从技术价值看,源码编译能确保构建的可复现性,允许开发者根据特定平台(如嵌入式系统)和项目需求进行深度定制,避免了预编译二进制包的平台限制和潜在兼容性问题。在应用场景上,对于需要稳定依赖(如长期支持版本1.71.0)、特殊编译选项或调试库代码的C++项目,从源码构建是必

weixin_34293059的博客 372

boostwindows 安装

boost安装: 1 先下载boost,我的版本是boost_1_51_0 2 解压,我的目录是D:\Library\boost_1_51_0 3 支持 sltport(略),我们这里不支持.支持它太麻烦了 4 打开vs2008的命令行,来到D:\Library\boost_1_51_0下,输入bootstrap.bat ,等一下.. 5bjam--toolset=msvc-9.0

苦逼码农 902

避坑指南:在Windows/Linux上配置PCL点云库开发环境(含Boost、VTK依赖详解)

本文详细介绍了在Windows和Linux系统上配置PCL点云库开发环境的完整指南,包括Boost和VTK依赖的安装与问题解决。从版本选择、系统要求到具体安装步骤和常见错误排查,帮助开发者快速搭建稳定的3D点云处理环境。特别推荐PCL 1.11.1作为最稳定的生产环境版本。

weixin_30698297的博客 446

【编译人生】跨平台程序设计BOOST库以及编译方案的选择

boost库很方便,不用说,下面是编译方法。 1.在 boost解压缩文件路径下,/tools/build/v2/engine 下 2.在命令行下进入该目录输入 3.执行 build.bat gcc 4.在当前目录将会生成两个文件,里面包含两个exe文件b2.exe,bjam.exe 5.这两个文件拷贝到项目根目录,然后输入命令 bjam stage --toolset=gcc --stagedir="c:\boost" architecture=x86 address-model=32.

wter26的专栏 1355

C++ Boost库编译指南:从核心概念到实战配置

C++库的编译与链接是项目构建中的基础环节,涉及静态库与动态库的原理差异。静态库将代码直接嵌入可执行文件,实现独立部署;动态库则在运行时加载,便于多进程共享和更新。理解link=static/shared与runtime-link参数的组合,能优化程序体积与部署复杂度。在工程实践中,Boost作为C++的准标准库,其模块化设计使得Filesystem、System等组件需单独编译。通过B2构建系统配置工具链,开发者可针对Windows/Linux平台及交叉编译环境,定制化生成所需库文件,从而提升大型项目的依

weixin_30814329的博客 319

Boost库深度解析:现代C++开发中不可替代的高级工具与实战指南

在C++开发中,异步编程和高效数据管理是构建高性能系统的核心挑战。异步I/O模型通过事件驱动机制,允许单线程处理大量并发连接,显著提升服务器程序的吞吐量和可扩展性。其技术价值在于能够充分利用现代硬件资源,避免线程阻塞带来的性能损耗。这一原理在高并发网络服务器、实时通信后端等场景中尤为重要。Boost.Asio库作为异步网络编程的基石,提供了跨平台的前摄器模式实现,将复杂的底层系统调用封装为统一的C++接口,并深度集成了现代C++特性如lambda表达式和移动语义。同时,在数据检索方面,传统容器往往难以满足多

weixin_34226182的博客 310

C++ Boost库全面指南:从核心工具到网络编程实战

在C++开发中,第三方库是扩展标准库功能、提升开发效率的关键。Boost库作为C++社区的“准标准库”,其设计遵循RAII(资源获取即初始化)等核心编程范式,通过智能指针等组件实现了安全的资源管理。从技术价值看,Boost不仅提供了大量高质量、跨平台的组件,更是C++新特性的试验田,许多功能如智能指针、正则表达式、文件系统等均率先在此实现并最终被纳入C++11/17/20标准。在实际应用场景中,无论是处理网络通信、并发编程,还是解析命令行参数、管理复杂数据结构,Boost都能提供优雅的解决方案。本文聚焦于B

weixin_30274627的博客 393

从零到一:在Win10与VS2019中构建Boost开发环境(实战指南)

本文详细介绍了在Windows 10系统下使用Visual Studio 2019配置和编译Boost库的完整教程。从环境准备、Boost库下载、编译参数优化到VS2019项目配置,提供了实战经验和常见问题解决方案,帮助开发者快速搭建高效的C++开发环境。

weixin_30435261的博客 228

C++跨平台开发实战:从Windows到Linux的架构设计与避坑指南

跨平台开发是现代软件工程中的核心概念,旨在使同一套代码能够在多种操作系统和硬件架构上编译、运行并保持行为一致。其基本原理在于通过抽象层隔离平台相关的系统调用、API和工具链差异,向上提供统一的编程接口。这一技术价值在于显著提升代码的可维护性、可复用性,并降低多平台部署和维护的长期成本。在应用场景上,无论是需要同时支持Windows桌面端与Linux服务器端的商业软件,还是面向嵌入式Linux与通用操作系统的工业应用,跨平台能力都是保障项目成功的关键。本文聚焦于C++语言,深入探讨如何将成熟的Windows

weixin_33836874的博客 435

Windows C++开发实战:从环境搭建到性能优化的完整指南

C++作为高性能系统编程的核心语言,其内存管理、多线程和底层控制能力是构建高效软件的基础。在Windows平台上进行C++开发,需要深入理解其特有的运行时环境、编译链接机制和系统API。通过合理配置开发环境、管理依赖库和运行时,开发者可以充分发挥C++的性能优势,构建稳定可靠的桌面应用、系统服务和高性能计算程序。本文聚焦Windows C++开发中的**环境配置**和**调试技巧**,涵盖从Visual Studio与CMake工具链集成、vcpkg依赖管理,到多线程调试、内存泄漏检测等实战问题,为开发者提

afhu47033的博客 422

C++ Socket.IO客户端安装与配置全攻略:跨平台实战指南

实时双向通信是构建现代网络应用的核心需求,其原理基于WebSocket等协议实现全双工通信。在C++项目中集成Socket.IO客户端,能够高效处理命名空间、房间等复杂逻辑,对于游戏、实时数据可视化、物联网等场景具有重要技术价值。本文聚焦于socket.io-client-cpp库的安装与配置,针对microsoft visual c++ redistributable依赖和跨平台编译等常见痛点,详细解析了通过CMake、vcpkg、Conan及iOS/macOS专用方案进行集成的完整流程与避坑技巧,帮助开

weixin_34043301的博客 405

HElib同态加密库从零构建指南:解决依赖与跨平台编译难题

同态加密作为隐私计算的核心技术,允许在加密数据上直接进行计算,解决了数据利用与隐私保护的根本矛盾。其原理基于复杂的数学难题和密码学方案,如BGV和CKKS,能够在密文状态下执行加法和乘法等运算。这项技术的工程价值在于为联邦学习、安全多方计算等场景提供了基础隐私保障。在实际应用中,开发者常通过HElib这样的开源库进行原型验证和算法实现。然而,HElib的构建过程涉及NTL、GMP等多个数学库的复杂依赖,且对编译环境和跨平台支持要求较高,容易遇到链接错误和配置问题。本文聚焦于HElib的编译部署,详细解析了在

weixin_33713350的博客 350
上一篇: Boost线程库
famugong
博客等级 码龄26年 0粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值