2

我正在尝试安装 boost 库(1.53)以在 Windows 下的 64 位应用程序中使用它。但是,在尝试以与 MinGW32 和较旧的 bo​​ost 版本相同的方式进行设置时,我遇到了一系列错误...

现在,我在第一步一直失败 - 执行 ./bootstrap.sh。返回以下错误:

mkdir bootstrap
gcc -o bootstrap/jam0 command.c compile.c constants.c debug.c function.c glob.c hash.c hdrmacro.c headers.c jam.c jambase.c jamgram.c lists.c make.c make1.c object.c option.c output.c parse.c pathunix.c regexp.c rules.c scan.c search.c subst.c timestamp.c variable.c modules.c strings.c filesys.c builtins.c pwd.c class.c native.c md5.c w32_getreg.c modules/set.c modules/path.c modules/regex.c modules/property-set.c modules/sequence.c modules/order.c execunix.c fileunix.c
function.c: In function ÔÇścheck_alignmentÔÇÖ:
function.c:222:5: warning: cast from pointer to integer of different size
builtins.c:33:23: fatal error: sys/wait.h: No such file or directory
compilation terminated.
execunix.c:17:26: fatal error: sys/resource.h: No such file or directory
compilation terminated.
fileunix.c:98:17: fatal error: ar.h: No such file or directory
compilation terminated. 

当我改为运行 bootstrap.bat 时,Boost.Build 会自行构建,但是稍后我会遇到奇怪的错误。起初,我尝试将 x86_64-w64-mingw32-gcc 等可执行文件符号链接到 gcc,但最终出现许多“拒绝访问”错误,所以我只是将 x86_64-w64-mingw32-XX 文件复制粘贴到简单的 XX 中.exe 的。现在我可以开始正确的构建,但最终得到:

...failed gcc.archive bin.v2\libs\thread\build\gcc-mingw-4.5.3\debug\address-model-64\link-static\threading-multi\libboost_thread-mgw45-mt-d-1_53.a...
gcc.archive bin.v2\libs\thread\build\gcc-mingw-4.5.3\release\address-model-64\link-static\threading-multi\libboost_thread-mgw45-mt-1_53.a
System cannot find the path specified.
System cannot find the path specified.

我发现它正在尝试使用类似 Win 的路径斜杠 (/vs\),并且可能因此而失败。

我不想使用 MSVC,因为我试图让我的代码尽可能地可移植,而且它是 64 位的也很重要。

提前致谢。

4

1 回答 1

1

这看起来像是 Cygwin 安装中缺少文件。尝试再次运行设置并确保为 gcc 编译器(Cygwin,而不是 MinGW64)安装了所有内容。我成功运行了 bootstrap.sh,bjam 使用默认的 Cygwin gcc 编译器编译得很好。之后,我遇到了一些减速带,但使用 MinGW64 编译一切正常。我在 tools\build\v2\user-config.jam 中添加了编译器可执行文件,如下所示:

using gcc : 4.5.3 : x86_64-w64-mingw32-gcc.exe ;

我最终得到了以下命令行:

./b2 --toolset=gcc target-os=windows --build-dir=/cygdrive/c/whatever/boost_build variant=debug,release link=static runtime-link=static architecture=x86 address-model=64 threadapi=win32 --layout=tagged --without-mpi --stagedir=lib/win64gcc -j4 stage

...然后我尝试了同样的link=shared runtime-link=shared方法,但是我有很多我还没有弄清楚的编译错误。

一些可能对您有所帮助的链接:

编辑:我最终使用了 MinGW64 TDM,它比 Cygwin MinGW64 容易得多,因为它不是交叉编译器。只需安装 MinGW64 TDM,添加 MSYS,完成!Boost 编译没有任何问题。

于 2013-04-28T15:30:57.123 回答