我正在尝试编译Windows的Boost库(作为构建比特币客户端的先决条件),使用MinGW编译器工具链(而不是Visual Studio)并运行错误。
在线查看各种指南后,我有一个有效的bjam
应用程序和boost_1_55_0
源文件。我试过在windows shell中做:
path/to/bjam.exe toolset=gcc --build-type=complete stage
(比特币提供的说明),但获得mingw.jam: No such file or directory
错误
bootstrap mingw
成功运行,但.\b2
发出了一堆'cl' is not recognized as an internal or external command, operable program or batch file
错误,暗示它并未真正设置为使用gcc / mingw,因为它要求使用Microsoft编译器。
bootstrap.sh --with-toolset=mingw
(建议here,它创建的日志文件没有那么多错误,但在导致{./b2
之后运行mingw.jam no such file
{1}}错误,mingw.init unknown
错误。
从http://sourceforge.net/projects/boost/files/boost-binaries/1.55.0/(boost_1_55_0-msvc-12.0-64.exe)下载已编译的二进制文件。在提取并引用lib
和头文件之后,编译最终的可执行文件会引发一大堆undefined reference to 'boost::system::generic_category()'
以获得各种提升功能,这意味着库文件实际上并不包含正确的定义?是因为他们是Visual Studio库吗?
从http://www.boost.org/users/history/version_1_55_0.html(boost_1_55_0.7z)下载档案,文档中暗示的是带有预编译的lib
目录,但实际上并非如此。
所以,我立刻在几面墙上撞了我的脑袋。任何人都可以帮我解决任何这些障碍吗?
答案 0 :(得分:0)
我使用以下步骤在MinGW / MSYS环境中成功构建boost版本1.54:
构建bjam.exe
和b2.exe
:
boost_1_54_0\tools\build\v2\engine>build.bat mingw
将构建工具复制到根目录:
cp boost_1_54_0\tools\build\v2\engine\bin.ntx86\*.exe boost_1_54_0
运行bjam.exe
:
bjam --toolset=gcc --build -type=complete install > boost_build.log
我使用这个过程略有不同的升级版本,所以它很好的猜测它也适用于1.55