Node-gyp无法编译nodejs扩展名('致命错误,未找到线程'文件)

Mas*_*iar 2 c++ gcc node.js node-gyp

我有一个由同事做的节点扩展,我正在尝试编译它node-gyp configure(一切都好)然后node-gyp build(fatal error, 'thread' file not found).现在,我相信这是gcc的一个问题,我在某处读到了我需要的标志-stdlib=libc+++.我的binding.gyp文件看起来像这样:

{
    "targets": [
    {
        "target_name": "overcpu",
        "sources": [ "overcpu.cpp" ],
        "cflags" : [ "-stdlib=libc++" ]
    }
    ]
}
Run Code Online (Sandbox Code Playgroud)

但我仍然得到错误.我安装了XCode和开发人员工具,而且我gcc通过安装不满意brew.不幸的是我一直收到同样的错误.通过gcc -v我得到以下输出:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.3.0
Thread model: posix
Run Code Online (Sandbox Code Playgroud)

我的问题是否有问题gcc,或者它node-gyp(v1.0.1)是否让我发疯?

非常感谢!

msc*_*dex 9

您还需要添加-std=c++11到cflags参数列表中以完全激活C++ 11支持.

更新:对于OSX(特别cflags适用于BSD和Linux),您还需要在targets设置中添加条件,如下所示:

{
    "targets": [
    {
        "target_name": "overcpu",
        "sources": [ "overcpu.cpp" ],
        "cflags" : [ "-std=c++1", "-stdlib=libc++" ],
        "conditions": [
          [ 'OS!="win"', {
            "cflags+": [ "-std=c++11" ],
            "cflags_c+": [ "-std=c++11" ],
            "cflags_cc+": [ "-std=c++11" ],
          }],
          [ 'OS=="mac"', {
            "xcode_settings": {
              "OTHER_CPLUSPLUSFLAGS" : [ "-std=c++11", "-stdlib=libc++" ],
              "OTHER_LDFLAGS": [ "-stdlib=libc++" ],
              "MACOSX_DEPLOYMENT_TARGET": "10.7"
            },
          }],
        ],
    }
    ]
}
Run Code Online (Sandbox Code Playgroud)