问题
编译 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/