在构建Boost 1.63.0期间避免失败 - 线程

时间:2017-03-16 14:55:28

标签: multithreading boost boost-thread

嘿希望你们中的一些熟练的人可以帮忙..

(我已经google了很多,从其他有类似问题的人那里读了许多文章和问题,但找不到我的问题的好答案/解决方案)

通过 VS2013 x64原生工具命令 尝试构建提升线程

b2.exe --with-thread --build-type=complete toolset=msvc-12.0 architecture=x86 address-model=64 stage
  • Win7 64位
  • 安装了Update 5的VS2013
  • 在C:\ boost_1_63_0
  • 上提升1.63.0文件

问题:如何避免失败?(来自 .. \ bin.v2 \ config.log

...found 10 targets...
...updating 5 targets...
common.mkdir libs\config\checks\architecture\bin
common.mkdir libs\config\checks\architecture\bin\msvc-12.0
common.mkdir libs\config\checks\architecture\bin\msvc-12.0\debug
common.mkdir libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi
compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\32.obj
32.cpp
...updated 5 targets...
...found 2 targets...
...updating 1 target...
compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\arm.obj
arm.cpp
libs\config\checks\architecture\arm.cpp(13) : fatal error C1189: #error :  "Not ARM"

    call "C:\Users\..\AppData\Local\Temp\b2_msvc_12.0_vcvarsall_x86.cmd" >nul
cl /Zm800 -nologo @"libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\arm.obj.rsp" 

...failed compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\arm.obj...
...failed updating 1 target...
...found 2 targets...
...updating 1 target...
compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\mips1.obj
mips1.cpp
libs\config\checks\architecture\mips1.cpp(10) : fatal error C1189: #error :  "Not MIPS1"

    call "C:\Users\..\AppData\Local\Temp\b2_msvc_12.0_vcvarsall_x86.cmd" >nul
cl /Zm800 -nologo @"libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\mips1.obj.rsp" 

...failed compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\mips1.obj...
...failed updating 1 target...
...found 2 targets...
...updating 1 target...
compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\power.obj
power.cpp
libs\config\checks\architecture\power.cpp(13) : fatal error C1189: #error :  "Not PPC"

    call "C:\Users\..\AppData\Local\Temp\b2_msvc_12.0_vcvarsall_x86.cmd" >nul
cl /Zm800 -nologo @"libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\power.obj.rsp" 

...failed compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\power.obj...
...failed updating 1 target...
...found 2 targets...
...updating 1 target...
compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\sparc.obj
sparc.cpp
libs\config\checks\architecture\sparc.cpp(10) : fatal error C1189: #error :  "Not SPARC"

    call "C:\Users\..\AppData\Local\Temp\b2_msvc_12.0_vcvarsall_x86.cmd" >nul
cl /Zm800 -nologo @"libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\sparc.obj.rsp" 

...failed compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\sparc.obj...
...failed updating 1 target...
...found 2 targets...
...updating 1 target...
compile-c-c++ libs\config\checks\architecture\bin\msvc-12.0\debug\threading-multi\x86.obj
x86.cpp
...updated 1 target...
...found 3 targets...
...updating 3 targets...
common.mkdir bin.v2
link.touch bin.v2\test-symlink-source
link.mklink bin.v2\test-symlink
You do not have sufficient privilege to perform this operation.

    if exist "bin.v2\test-symlink" del "bin.v2\test-symlink"
    mklink "bin.v2\test-symlink" "test-symlink-source"

...failed link.mklink bin.v2\test-symlink...
...failed updating 1 target...
...updated 2 targets...
...found 2 targets...
...updating 2 targets...
common.mkdir bin.v2\test-junction-source
link.junction bin.v2\test-junction
Junction created for bin.v2\test-junction <<===>> bin.v2\test-junction-source
...updated 2 targets...
...found 3 targets...
...updating 3 targets...
common.mkdir bin.v2\symlink
link.touch bin.v2\test-hardlink-source
link.hardlink bin.v2\symlink\test-hardlink
Hardlink created for bin.v2\symlink\test-hardlink <<===>> bin.v2\test-hardlink-source
...updated 3 targets...
...found 1 target...
...updating 1 target...
config-cache.write bin.v2\project-cache.jam
...updated 1 target...

我发现在运行上面提到的构建命令后,失败与b2的输出相关,其中包括:

  • 手臂:没有
  • mips1:没有
  • ...
  • 支持符号链接:否

C:\boost_1_63_0>b2.exe --with-thread --build-type=complete toolset=msvc-12.0 architecture=x86 address-model=64 stage
Performing configuration checks

- 32-bit : yes - arm : no - mips1 : no - power : no - sparc : no - x86 : yes - symlinks supported : no - junctions supported : yes - hardlinks supported : yes

这是什么意思?

为什么b2产生那个输出?为什么这些组件导致日志失败?

任何帮助都将不胜感激。

PS:我知道可以找到binaris precompiled,但我想了解这个问题。

1 个答案:

答案 0 :(得分:1)

我知道这个问题已经过时了,但它可以帮助别人。

构建系统(boost build,jam的一种变体)执行一些配置检查,以确定系统的体系结构,平台,操作系统,要使用的工具集,某些实用程序的功能等。这些测试失败,并不意味着所请求的库将无法编译,在某些情况下可能不存在某些功能,例如ICU库未找到ICU后端将无法在boost语言环境中使用。特别是你提到的一些测试:

import UIKit

func check(_ sudoku:[[Int]]) -> Bool {

    var groups = Array(repeating: 0, count: 27)

    for x in 0...8 {
        for y in 0...8 {
            groups[x] += 1 << sudoku[x][y] // Column (group 0 - 8)
            groups[y + 9] += 1 << sudoku[x][y] // Row (group 9 - 17)
            groups[(x + y * 9) / 9 + 18] += 1 << sudoku[x][y] // Box (group 18 - 27)
        }
    }

    return groups.filter{ $0 != 1022 }.count == 0
}

let sudoku = [
    [7, 5, 1,  8, 4, 3,  9, 2, 6],
    [8, 9, 3,  6, 2, 5,  1, 7, 4],
    [6, 4, 2,  1, 7, 9,  5, 8, 3],
    [4, 2, 5,  3, 1, 6,  7, 9, 8],
    [1, 7, 6,  9, 8, 2,  3, 4, 5],
    [9, 3, 8,  7, 5, 4,  6, 1, 2],
    [3, 6, 4,  2, 9, 7,  8, 5, 1],
    [2, 8, 9,  5, 3, 1,  4, 6, 7],
    [5, 1, 7,  4, 6, 8,  2, 3, 9]
]

if check(sudoku) {
    print("Pass")
} else {
    print("Fail")
}

如果要查看执行的测试结果,可以根据“b2 - ”传递选项“--debug-configuration”和“-dn”(其中n是调试级别)。帮助“:

arm : no                   
===> An ARM processor was not detected.

mips1 : no                 
===> A MIPS processor was not detected.

symlinks supported : no    
===> Those are supported in Windows starting with Windows Vista, but admin privileges are required.

您可以检查“bin.v2 \ config.log”以查看执行的测试及其结果。要进行更深入的检查,您需要在boost构建系统中学习jam文件的语法。

可以在此处找到从源(boost 1_65_1)构建的官方帮助:Build Binaries From Source

可以在此处找到boost构建系统的官方帮助:Boost.Build