繁体   English   中英

使用MinGW和CodeBlocks安装Boost库

[英]Installing Boost libraries with MinGW and CodeBlocks

我正在第一时间使用Boost库,我选择了一个名叫Regex的漂亮女孩。

我已经在我的机器上安装了库(自动构建?),但是我收到了上述错误(找不到-lboost_regex )。 我正在使用Code :: Blocks with MinGW和C ++ 0X编译器标志。

我有

  • 将“搜索目录”指向安装目录
  • 向链接器添加了-lboost_regex标志

但没有运气。 有人可以帮我搞定吗?


更新

现在好起来了。 对于这个问题的新手,我在下面的答案中添加了一些进一步的注释。

(另外,改变了问题的标题,因为它比我刚开始时更广泛。)

从我的第一次构建体验开始,这里有一些可以帮助新手的链接和提示。 我直接从zip文件构建了库。 我在MinGW上构建,我使用CodeBlocks作为IDE。

  1. 下载Boost zip,在某个地方解压缩(我称之为$boostdir
    • 拉链时相当大,> 300MB
  2. 将MinGW bin添加到PATH var
    • 当Boost构建时,它将需要访问MinGW可执行文件
  3. 生成b2.exebjam.exe
    • Windows的文档巧妙地假设MSVC编译器可用。
    • 如果是,你可以像文档说的那样使用bootstrap.bat
    • 如果不是(像我的那样),你必须自己构建exe文件,在第4步和第5步中。
  4. 在CMD中,导航到$boostdir/tools/build/v2/engine
  5. 运行build.bat mingw (将构建b2.exebjam.exe
  6. 现在你已经根据你的系统规格定制了b2bjam 导航回$boostdir并准备开始构建库。
    • Boost将在当前目录中创建一个新的bin.v2目录。
    • 所有的lib都将进入bin.v2
    • 出于某种原因,这是一个“中间”目录
    • 这一步没什么可做的,只是一些额外的信息:)
  7. 运行b2 toolset=gcc --build-type=complete
    • 这需要很长时间,在1-2小时左右
    • 你会知道它是否有效。 如果你认为有些不对劲,那就不行了。
    • 构建可以使用各种标志

现在你们都建成了。 是时候设置CodeBlock了。

  1. 将编译器指向头文件
    • 右键单击您的项目 - >构建选项 - >搜索目录选项卡 - >编译器选项卡 - >添加$boostdir地址
  2. Boost根据您当前的系统规范为您想要的库构建了一个DLL。 查看$boostdirstage\\lib\\目录
    • 此DLL稍后将在链接器中使用,因此请勿关闭其资源管理器窗口
    • 我在C:\\Program Files\\Boost_1_52\\stage\\lib\\libboost_regex-mgw44-1_52.dll
    • 我认为文档有一个聪明的方法来做到这一点,但我还没有尝试过
    • 现在,构建完成后,可以删除步骤#6中的“中间”目录
  3. 将链接器指向该DLL的目录
    • 右键单击您的项目 - >构建选项 - >搜索目录选项卡 - >链接器选项卡 - >添加该目录地址( blah\\blah\\blah\\stage\\lib\\
  4. 将该DLL标志添加到链接器设置
    • 我的是-lboost_regex-mgw44-1_52
  5. 深呼吸,向你的上帝祈祷,并开始测试。

进一步的文档可能会有所帮助或混淆:

Code :: Blocks网站有一个版本,直到我的搜索结束时才找到。 这很有帮助,但有一些奇怪的事情。 这篇文章也很有帮助。

祝好运!

我不确定你自动构建的是什么意思。 大多数Boost库只是头文件,但需要将一些文件(如正则表达式)编译为共享/静态库。 编译步骤不是自动的,您需要调用Boost构建系统( bjam )来执行此操作。 当然,有源(例如BoostPro)为各种平台分发预构建的Boost二进制文件。

完成后,您需要将库所在的路径添加到链接器的搜索路径中。 对于MinGW,此选项为-L"path/to/library" Boost确实有指令允许自动链接所需的库,这似乎与MSVC很好地工作,但我从来没有让它与MinGW一起工作。 因此,您还必须列出要明确链接的库。 Boost库默认包含文件名中的目标和版本信息,因此对于MinGW gcc 4.7和Boost 1.51,典型的链接器命令行选项看起来像-lboost_regex-mgw47-mt-1_51

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM