c++ - 如何使用 bjam 在 cygwin windows7 i686-w64-mingw32-g++ 中编译 Boost(和链接?)库

标签 c++ boost cygwin bjam poker

问题

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

环境和我的技能

首先感谢您阅读我的消息,我使用的是windows 7 pentium i3 cygwin i686-w64-mingw32-g++。我是一个初学者(10 000 行 c c++ 基本代码,当它很容易找到时能够在文档中找到或更经常在论坛中找到。在这里我在一周内失败了)我使用魔法 friend 给出的编译行: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(在 poker stove 的文档中他们说这在 Windows 中并不容易,我相信它 :o) ) 我正在尝试使用 bjam(信息来自论坛和官方文档) 我有 boost_1_54_0 的下载源 sourceforge.net/projects/boost/files/boost/1.54.0/ 将 boost_1_54_0 重命名为 boost 并放入 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 把它放在文件夹 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é = acess refused 法语 ^^ 而且我没有在本教程的这一步中预期的 dll 和 .lib

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

最好的问候,

巴泰勒米

最佳答案

有两个问题 一个与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 一起工作。 Build Boost 1.45 using MinGW

我在新文件夹“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 libboost_regex-gcc-d-1_44.dll.a

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

Will Success Spoil Rock Hunter?

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

关于c++ - 如何使用 bjam 在 cygwin windows7 i686-w64-mingw32-g++ 中编译 Boost(和链接?)库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19849828/

相关文章:

c++ - boost::asio::io_service::post 是原子的吗?

c++ - boost::container::vector 和 std::vector 有什么区别

c++ - 在坐标类型上对我的类进行模板化并使用 Boost Geometry 库时出现编译错误

windows - 使用 Cygwin 进行 FFMPEG 构建错误 cmp : command not found

windows - 为什么 Win32::ODBC 在 Perl 5.10 和 Cygwin 下找不到 ODBC.dll?

c++ - 尝试读取 4 字节无符号整数的二进制文件并转换为伏特

C++:使用io.post和bind命令从boost线程在主线程中执行函数

c++ - 修改 map 中的队列

c++ - 在 Visual Studio 2010 中使用 boost::test - 如何查看测试输出?

java - 在 Windows 上使用 Cygwin 排序时出现 "Input file specified two times."错误