首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

构建用于静态链接的Boost(MinGW)

构建用于静态链接的Boost(MinGW)

Boost是一个广泛使用的C++库,它提供了许多实用的功能和算法,以帮助开发人员更轻松地编写高质量的代码。Boost库包含了许多模块,例如:Asio、Filesystem、Program Options、Regex等。

在MinGW环境下,可以使用Boost库进行静态链接。静态链接是指在编译时将Boost库直接链接到应用程序中,从而生成一个独立的可执行文件。这样,在其他计算机上运行应用程序时,就不需要安装Boost库。

要在MinGW环境下构建用于静态链接的Boost库,可以按照以下步骤进行:

  1. 下载Boost源代码:访问Boost官方网站(https://www.boost.org/),下载最新版本的Boost源代码。
  2. 解压Boost源代码:将下载的Boost源代码解压到一个目录中。
  3. 打开MinGW命令行窗口:在Windows系统中,打开MinGW命令行窗口,进入到Boost源代码所在的目录。
  4. 编译Boost库:在MinGW命令行窗口中,执行以下命令:
代码语言:txt
复制
bootstrap.bat mingw

这个命令将生成一个b2.exe的可执行文件,用于编译Boost库。

  1. 指定编译选项:在MinGW命令行窗口中,执行以下命令:
代码语言:txt
复制
./b2.exe --prefix=<安装目录> --layout=system link=static threading=multi runtime-link=static

其中,<安装目录>是Boost库的安装目录,可以根据实际情况进行指定。

  1. 编译Boost库:在MinGW命令行窗口中,执行以下命令:
代码语言:txt
复制
./b2.exe install

这个命令将编译Boost库,并将其安装到指定的目录中。

  1. 在应用程序中使用Boost库:在应用程序中,可以使用Boost库提供的各种功能和算法。例如,可以使用Boost.Asio库进行网络编程,使用Boost.Filesystem库进行文件系统操作等。
  2. 静态链接:在编译应用程序时,需要使用-static选项进行静态链接。例如,可以使用以下命令进行编译:
代码语言:txt
复制
g++ -o <应用程序名称> <源代码文件> -static -L<Boost库安装目录>/lib -lboost_system -lboost_filesystem -lboost_thread

其中,<应用程序名称>是应用程序的名称,<源代码文件>是应用程序的源代码文件,<Boost库安装目录>是Boost库的安装目录。

通过以上步骤,可以在MinGW环境下构建用于静态链接的Boost库,并在应用程序中使用Boost库提供的各种功能和算法。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Boost自动链接功能

那个采用Boost Build来编译LuaBind我最后完成了,但是很是蛋疼。 现在又出现了Boost链接问题,经过多方搜索,以及尝试。...个人对Boost 自动链接机制如下: Boost默认启用自动链接功能,而且是静态链接。...其中lib代表着是静态LIB库文件,vc100指编译器版本(在VS2008中它会自动链接vc90这样文件),gd代表debug,release,没有gd选项。...这样自动链接功能非常烦恼,当升级了VS时,要重新用新编译器编译Boost库。 如果要开启自动链接功能,而且是动态链接的话,定义 BOOST_ALL_DYN_LINK。...在附加预定义宏 加 BOOST_ALL_NO_LIB ,这样就关闭了BOOST自动链接LIB功能。然后把需要lib库在附加库里手动加入。

27520

cgo构建引用c静态链接

背景 项目中免不了要使用c/c++工程代码,因此使用cgo引入c静态库也是不可避免(虽然官方要求尽量使用go构建项目,而不是偷巧导入c代码,尽量保持go项目的纯粹,毕竟go和cgo是两码事)。...1 例子 github上有代码例子 1.1 windows上应用 windows下引用.lib形式静态库是不可行,go build时候,会出现错误: # command-line-arguments...但是可以通过MinWG版本gcc/g++将代码编译成libxxx.a形式静态库,即可完美引用,要求所生成静态库名称必须以lib开头。...LDFLAGS 用来指定链接选项,比如链接位置,以及使用哪些链接库。...$(CC) $(CPPFLAGS) $(CFLAGS) $(LDFLAGS) main.c -o main 2.2 ${SRCDIR}变量 ${SRCDIR}变量用来指代原文件所在文件夹绝对路径,可以将预先编译好静态库放在

4.5K10
  • 静态链接库和动态链接区别

    面对比一下两者:静态链接库:当要使用时,连接器会找出程序所需函数,然后将它们拷贝到执行文件,由于这种拷贝是完整,所以一旦连接成功,静态程序库也就不再需要了。...); //my_fini为自定义析构函数名在编译共享库时,不能使用"-nonstartfiles"或"-nostdlib"选项,否则构建与析构函数将不能正常执行(除非你采取一定措施)。...函数dlopen:打开指定动态链接库文件原型为: void *dlopen (const char *filename, int flag);dlopen用于打开指定名字(filename)动态链接库...*/add(89,369); /* 带两个参数89和369调用add函数 */函数dlclose : 关闭动态链接库原型为: int dlclose (void *handle);dlclose用于关闭指定句柄动态链接库...如果强制使用静态库则需要加-static选项支持,即:gcc-static -o main main.c -L. -lmymath链接静态可执行程序明显比链接动态库可执行文件大。

    8.3K21

    MFC 调用静态链接 MFC 规则 DLL

    简语: 最近学习了生成静态链接dll及其调用,写一下笔录和大家分享,有错误地方欢迎大家指出来 开发环境 VS2015 开发语言 C++ 开发步骤 以mfcdll创建为例,先说明一下win32dll...构建MFCDLL项目 新建MFC DLL项目 ? 这边选择带静态链接MFC规则DLL ? 默认生成了,头文件和源文件,右键def文件 ?...然后再配置库名称,项目属性->链接器-->输入,配置附加依赖项,即把要添加lib,名称加进去 ? 到此依赖静态链接库都配置好了。...void OnBnClickedButton1(); CMyDLLApp MyDllApp; afx_msg void OnBnClickedButton2(); //因为静态方法无法使用非静态成员...void CMFCTestDLLDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制设备上下文

    2.5K20

    conan入门(二十六):使用make编译erpcerpcgen(makefile)

    conan 使用make编译erpc/erpcgen(makefile) conan是个包管理工具,不仅仅支持cmake编译,还支持很多常用构建工具如configure/make,msbuild,VisualStudo...,meson,本文以NXPEmbedded RPC为例说明conan中如何使用make来构建项目。...NXPeRPC (Embedded RPC) 是用于多芯片嵌入式系统和异构多核 SoC 开源远程过程调用 (RPC) 框架。...目前只支持make构建,我一个项目中用到了它,因为访问github比较慢,我fork了一份代码到国内码云仓库:https://gitee.com/l0km/erpc.git 以下python脚本是为编译...=x86_64-w64-mingw32 [settings] compiler=gcc # MinGW编译器版本号,需要根据你MinGW编译器实际版本号来修改 compiler.version=5.2

    1K30

    【Android NDK 开发】Android Studio 使用 CMake 导入静态库 ( CMake 简介 | 构建脚本路径配置 | 引入静态库 | 指定静态库路径 | 链接动态库 )

    CMake 构建脚本 CMakeList.txt 引入静态库 : # 引入静态库 # ① 参数 1 ( add ) : 设置引入静态库名称 # ② 参数 2 ( SHARED...CMake 构建脚本 CMakeList.txt 设置静态库路径 : # 设置上述静态导入路径 # 设置目标属性参数 : # ① 参数 1 ( add ) : 要设置哪个函数库属性...CMake 构建脚本 CMakeList.txt 链接静态库 : # 链接函数库 # 参数 1 : 本构建脚本要生成动态库目 标 # 参数 2 ~ ... : 后面是之前预编译动态库或静态库...链接函数库 ---- 链接函数库 : 这里注意第一个参数必须是要生成动态库模块 ; # 链接函数库 # 参数 1 : 本构建脚本要生成动态库目标 # 参数 2 ~ ... :.../jniLibs/armeabi-v7a") # 链接函数库 # 参数 1 : 本构建脚本要生成动态库目 标 # 参数 2 ~ ... : 后面是之前预编译动态库或静态

    2.8K40

    cmake:vs2015MinGW静态编译leveldb

    leveldb是google开源项目(https://github.com/google/leveldb), 在linux下编译很方便,然而官方版本却没有提供在windows下编译方式,好麻烦。...安装路径 rem 注意这个版本leveldb需要 boost 支持,编译前请确保有安装boost rem (我用boost版本是 1.62) rem BOOST_ROOT 用于指定 boost...安装位置 rem 如果你boost是默认安装到C:\boost,不指定BOOST_ROOT,cmake也能找到boost位置 cmake .....#if判断语句有漏洞,只考虑了MSVC编译情况,却没有考虑MinGW情况。...所以要做如下修改 // 原来判断只考虑了MSVC,当用MinGW编译时 _MSC_VER < 1900条件也成立,所以就出错了, // 所以这里多加一个条件限制 defined(_MSC_VER),MinGW

    2.4K60

    Linux交叉编译Windows静态

    因此,以跨平台方式构建软件以确保与多种操作系统兼容性非常重要。在本文中,我们将介绍Linux交叉编译Windows静态库。 unsetunset什么是静态库?...unsetunset 静态库是一个包含预编译代码文件,可以与可执行程序链接以创建单个自包含可执行文件。静态库中代码直接链接到可执行文件中,这使得它比动态库更快、更高效。...unsetunset从 Linux 交叉编译适用于 Windows 静态库unsetunset 从 Linux 交叉编译 Windows 静态库是一个相当简单过程。...交叉编译 Linux 上静态库以用于 Windows 是开发人员必备一项技能。它可以帮助您创建兼容多个平台软件,提高您工作效率,并从长远来看节省您时间和金钱。...这可以包括记录使用交叉编译器、用于编译静态命令以及任何特定于平台注意事项。 总体而言,从 Linux 交叉编译静态库到 Windows 是开发人员必备一项技能。

    30310

    4.5 C++ Boost 文件目录操作库

    Boost 库是一个由C/C++语言开发者创建并更新维护开源类库,其提供了许多功能强大程序库和工具,用于开发高质量、可移植、高效C应用程序。...Boost库可以作为标准C库后备,通常被称为准标准库,是C标准化进程重要开发引擎之一。使用Boost库可以加速C应用程序开发过程,提高代码质量和性能,并且可以适用于多种不同系统平台和编译器。...Boost库中也提供了一些方便函数和类来实现文件属性操作,这些操作可以用于读取和修改文件属性等操作。...Boost库中,我们可以使用文件流来计算文件大小。文件流提供了读取文件字节流功能,可以用于读取文件中内容并计算文件大小。...目录下所有文件拷贝到 d:\\MinGW my_copy_file("c:\\MinGW", "d:\\MinGW"); std::system("pause"); return 0;

    43910

    【Linux操作系统】程序编译和动静态链接

    (动静态)链接 1.动态链接 2.静态链接 3.静态链接下载安装 4.windows下动静态后缀 一.编译 写在前面 编译这整个过程都只是在编译你自己写代码,直到链接才让你代码和库代码关联起来...(动静态)链接 链接目的:把自己写并且编译好二进制代码和库里二进制代码关联起来,形成可执行程序!...)//动态库->位置(代码地址) 2.静态链接 静态链接方式:在链接时直接将函数实现拷贝一份到我程序中,运行时不用找!...优点:不依赖第三方库 缺点:形成可执行程序体积大 gcc test.c -o test -static//指明采用静态链接链接方式 file test statically linked//...静态链接方式 3.静态链接下载安装 动态库一般系统自带,因为系统运行时需要用到动态库 静态库在Linux中一般要自行安装 sudo yum install glibc-static//安装C

    1.2K30

    4.5 C++ Boost 文件目录操作库

    Boost 库是一个由C/C++语言开发者创建并更新维护开源类库,其提供了许多功能强大程序库和工具,用于开发高质量、可移植、高效C应用程序。...Boost库可以作为标准C库后备,通常被称为准标准库,是C标准化进程重要开发引擎之一。使用Boost库可以加速C应用程序开发过程,提高代码质量和性能,并且可以适用于多种不同系统平台和编译器。...Boost库中也提供了一些方便函数和类来实现文件属性操作,这些操作可以用于读取和修改文件属性等操作。...Boost库中,我们可以使用文件流来计算文件大小。文件流提供了读取文件字节流功能,可以用于读取文件中内容并计算文件大小。...目录下所有文件拷贝到 d:\\MinGW my_copy_file("c:\\MinGW", "d:\\MinGW"); std::system("pause"); return 0;}5.10

    32620

    Qt框架简介

    Qt Creator自带MinGW编译器可以编译C、C++。但不是所有从Qt官网下载安装包,都带有MinGW编译器,下载时需特别注意。 新建工程时,使用以下工程模板即可。...14、怎样使用Qt静态编译代码? 请参考《Qt5.9.0 MingGW静态编译》,建议下载现成静态库。 静态编译出来文件非常大,建议使用UPX压缩壳。...使用第14点静态编译。 30、C++有哪些第三方库? 除了C++自带库(如STL库)以外,还有第三方库。 较为出名Boost库,推荐《Boost程序库完全开发指南》。...此外,QAxObject有方法generateDocumentation(),可以生成文档,有一些类型和枚举等说明,可用于VBA转QAxObject时参考。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/145838.html原文链接:https://javaforall.cn

    5.1K20

    c语言里面静态链接制作和使用

    今天在交流群里面看到有一个网友问了一个内联函数问题,原本想写这个文章;由于已经提前说写静态链接制作和使用,所以内联函数文章,明天来写!...这时候解决方案就是以库(主要有2种:静态库和动态库)形式来提供。 (3)比较早出现静态链接库。...(4)动态链接库比静态链接库出现晚一些,效率更高一些,是改进型。现在我们一般都是使用动态库。...静态库在用户链接自己可执行程序时就已经把调用库中函数代码段链接进最终可执行程序中了,这样好处是可以执行,坏处是太占地方了。...从中我们可以发现使用静态链接库生成可执行程序比较占用内存大小。 4.库函数使用: (1)gcc中编译链接程序默认是使用动态库,要想静态链接需要显式用-static来强制静态链接

    1.5K30

    聊聊用于构建微服务工具和技术

    这是一种将应用程序构建为一系列松耦合服务架构风格。它具有许多好处,例如通过简化开发,测试和调试步骤来改进模块化并使开发人员工作变得轻松。它在CI/CD上也有帮助。...为了构建和运行测试,我们需要像Maven,Ant等软件项目管理工具。有像Nexus和Artifactory这样开源工具用于存储生成文件。...为了使构建和测试自动化,我们需要使用像Jenkins或Bamboo这样自动化工具。 代码审查:代码审查是对用任何语言编写源代码进行系统审查。...SmartBearCollaborator(10人团队免费)是支持几乎所有VCS(SCM)(如Git,Subversion,Perforce和ClearCase)软件,可用于Windows,Linux...除此之外,我们还应该重点关注代码质量持续检查,以静态分析代码来执行自动检查,以检测错误,代码异常,这些可以通过Sonarqube和PMD等工具进行帮助检查。

    1.5K60

    如何构建用于垃圾分类图像分类器

    构建图像分类器 训练一个卷积神经网络,用fastai库(建在PyTorch上)将图像分类为纸板,玻璃,金属,纸张,塑料或垃圾。使用了由Gary Thung和Mindy Yang手动收集图像数据集。...忽略.DS_Store 2.将图像组织到不同文件夹中 现在已经提取了数据,把图像分成训练,验证和测试图像文件夹,分成50-25-25。定义了一些帮助快速构建函数,可以在笔记本中查看。...有了更多时间,相信进一步调查可以帮助减少这些错误。 ?...5.后续步骤 如果有更多时间,会回去减少玻璃分类错误。还会从数据集中删除过度曝光照片,因为这些图像只是坏数据。...这只是一个快速而肮脏迷你项目,表明训练图像分类模型速度非常快,但是使用fastai库创建最先进模型速度非常快。 这个项目的Github。

    3.3K31
    领券