3

问题

编译 boost 以在带有 jam 的 cygwin 环境中使用它

环境和我的技能

首先感谢您阅读我的信息,我使用的是windows 7 pentium i3 cygwin i686-w64-mingw32-g++。我是一个初学者(10000行c c++基本代码,在文档中容易找到或在论坛中经常找到。我在这里失败了一个星期)我用朋友给的魔术线编译: i686-w64-mingw32-g++ -g -static main.cpp -I/usr/i686-w64-mingw32/include -L/usr/i686-w64-mingw32/lib -ltesseract -llept -lgdi32 -lws2_32 我只知道那 -l 是链接。

语境

我正在从事一个扑克项目。我有很多(10 ^ 7 的顺序)要计算的概率,它需要很多优化。我在这个名为Pokerstove的域中找到了参考程序的来源。他们建立了图书馆(我的梦想:o)) en.wikipedia.org/wiki/PokerStove 源代码在这里: https ://github.com/andrewprock/pokerstove

我做了什么和错误

为了拥有这些 boost 库,我在文档中写道: 我需要安装 boost(标题还不够,我需要库)并安装 boost(在扑克炉的文档中,他们说这在 windows 中并不容易,我相信它:o)) 我正在尝试使用bjam(信息来自论坛和官方文档)我有boost_1_54_0的下载源sourceforge.net/projects/boost/files/boost/1.54.0/重命名boost_1_54_0来提升并放入c:将所有内容都放在 c:\boost 的文件夹中,然后我遵循法语教程http://devtricks.wordpress.com/installer-boost-sous-windows-avec-mingw/ 我从 sourceforge.net/projects/boost/files/boost-jam/3.1.18/boost-jam-3.1.18-1-ntx86.zip/stats 下载 boost-jam-3.1.17-1-ntx86.zip /map 把它放在 foder c:\boost cd /cygdrive/c cd boost bjam stage --build-type=complete --build-dir="C:\Boost\build" --toolset=gcc --stagedir= “C:\Boost” 我有 bash: bjam : commande introuvable(法语中的未知命令),所以我在之前添加了“./”

我终于:

$ ./bjam stage --build-type=complete --build-dir="C:\Boost\build" --toolset=gcc
--stagedir="C:\Boost"
warning: mismatched versions of Boost.Build engine and core
warning: Boost.Build engine (C:\boost\bjam.exe) is 03.1.17
warning: Boost.Build core (at C:/boost/tools/build/v2) is 2011.12-svn
Accès refusé.
Accès refusé.
Accès refusé.
Accès refusé.
C:/boost/tools/build/v2/util\path.jam:458: in makedirs
rule MAKEDIR unknown in module path.
C:/boost/tools/build/v2/util\path.jam:456: in makedirs
C:/boost/tools/build/v2/util\path.jam:456: in path.makedirs
C:/boost/tools/build/v2/build\configure.jam:233: in configure.set-log-file
C:/boost/tools/build/v2\build-system.jam:695: in load
C:\boost\tools\build\v2/kernel\modules.jam:289: in import
C:\boost\tools\build\v2\kernel\bootstrap.jam:139: in boost-build
C:\boost\boost-build.jam:17: in module scope

Accés refusé = 法语中的访问被拒绝 ^^ 而且我没有教程中此步骤所期望的 dll 和 .lib

如果有人有解决方案或想法...谢谢 :) 如果需要,请随时询问更多信息或测试!如果主题不在正确的位置或不遵守标准,请随时告诉我。

祝贺你,

巴泰勒米

4

1 回答 1

1

有两个问题一个与windows 7有关文件保护

删除它:我已经完成了:

 $ chmod -R a+r bin
 $ chmod -R a+x bin

它已修复

"Accès refusé".

第二个问题是:它不适用于 boost 和 bjam 的所有组合。

bjam (3.1.18-1-ntx86) 与 Boost 1.44 作品。 使用 MinGW 构建 Boost 1.45

我在新文件夹“build”中有 14 个目录和 2613 个文件,其中包含以下行:

bjam install --prefix="C:\MinGW" --build-type=complete --build-dir="C:\Boost\build" --toolset=gcc --layout=system

要对其进行测试,您可以创建一个文件 example.cpp

#include <boost/regex.hpp>
#include <iostream>
#include <string>

int main()
{
    std::string line;
    boost::regex pat( "^Subject: (Re: |Aw: )*(.*)" );

    while (std::cin)
    {
        std::getline(std::cin, line);
        boost::smatch matches;
        if (boost::regex_match(line, matches, pat))
        std::cout << matches[2] << std::endl;
    }
}

和一个文件

邮件.txt

To: George Shmidlap
From: Rita Marlowe
Subject: Will Success Spoil Rock Hunter?
---
See subject.

然后做:

$ g++ exemple.cpp -o exemple.exe -I"C:\Boost" -L"C:\Boost\lib" -lboost_regex-gcc-d-1_44.dll
exemple.exe < mail.txt

我在 C:\Boost l ib boost_regex-gcc-d-1_44.dll .a中编译

只需从文件名中提取粗体部分即可编译/构建您将拥有:

Will Success Spoil Rock Hunter?

这些信息来自法语文档: http ://devtricks.wordpress.com/installer-boost-sous-windows-avec-mingw/

于 2013-11-08T21:54:20.870 回答