Libsass: Node-gyp g++ 和 libsass 错误

创建于 2016-04-14  ·  21评论  ·  资料来源: sass/libsass

我一直在按照指南安装 Zurb 基础,但遇到了一个一致的问题。
$ npm install Foundation-cli --global
成功但是
:foundation Fivedoor$ Foundation new
提出:

g++: error: unrecognized command line option '-stdlib=libc++'
make: *** [Release/obj.target/libsass/src/libsass/src/ast.o] Error 1
gyp ERR! build error 
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/Users/fivedoor/Documents/development/zurb/foundation/test130416-2/node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:87:13)
gyp ERR! stack     at ChildProcess.emit (events.js:172:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:200:12)
gyp ERR! System Darwin 10.8.0
gyp ERR! command "/usr/local/bin/node" "/Users/fivedoor/Documents/development/zurb/foundation/test130416-2/node_modules/gulp-sass/node_modules/node-sass/node_modules/node-gyp/bin/node-gyp.js" "rebuild" "--verbose" "--libsass_ext=" "--libsass_cflags=" "--libsass_ldflags=" "--libsass_library="
gyp ERR! cwd /Users/fivedoor/Documents/development/zurb/foundation/test130416-2/node_modules/gulp-sass/node_modules/node-sass
gyp ERR! node -v v4.4.2
gyp ERR! node-gyp -v v3.3.1
gyp ERR! not ok 
Build failed

我在 node-gyp 问题论坛上被告知他不是 node-gyp 错误,而可能是 libsass 问题。 我在其他 github 帖子中看到过类似的错误。

老实说,对于 node 来说还很陌生,我敢肯定我可能在实施一些建议的各种解决方案方面无能为力。

我已经尝试了很多没有任何快乐的事情:

  • 完成卸载/重新安装最新节点 & npm;
  • 清理 npm 缓存; 使用 nvm 安装,brew;
  • 将 git 更新到支持雪豹的最新版本;
  • npm --可选安装;
  • 安装 macports,然后更新 GCC 和 G++;
  • 删除 .node-gyp 文件夹并重新安装;
  • 卸载并重新安装基础-cli。

我一直在保持不断扩大的故障排除日志。 https://github.com/fivedoor/foundation-records/blob/master/my_installation_log_post_reinstall100416上的最新资料

如果没有灵丹妙药的解决方案,有人可以建议升级到更高版本的操作系统是否有帮助? (我知道雪豹已经老了,但为了稳定性我一直坚持使用它。)我确实从 brew 那里得到了一些警告,即“我们(和苹果)不提供对 OS 10.6 的支持”

令人沮丧的是在这个阶段我并没有尝试做任何比安装我需要开始的包更“高级”的事情。

  • MACOS X 版本 10.6.8
  • npm 3.8.6
  • 节点 v4.4.2
  • Xcode 3.2.6
  • GCC 4.8.5
  • g++ 4.8.5
  • 非虚拟机 0.31.0
  • git 版本 1.8.4.2
  • 卷曲 7.19.7

谢谢

最有用的评论

只是为了更新帖子最终让我完成的事情......
我试过了
brew install --with-clang llvm
clang --version仍然返回 1.7 版

然后我尝试了以下方法:

$ port search clang
$ sudo port install clang-3.6
$ port select --list clang
$ sudo port select --set clang mp-clang-3.6

这似乎是这样做的
$ clang --version返回clang version 3.6.2 (tags/RELEASE_362/final)

然后我更新了路径:

$ export CC=/opt/local/bin/clang
$ export CXX=/opt/local/bin/clang++

这次安装成功了:)

非常感谢您的帮助并引导我朝着正确的方向前进——这是无价的!

一篇后记——
在安装过程中,我似乎确实收到了很多警告。
https://github.com/fivedoor/foundation-records/blob/master/installation_log_190416

我从 brew 收到了很多关于 10.6.8 支持的警告。 在上述工作即将放弃并安装 el capitan 版本之前(作为分区驱动器运行,因此我可以为其他应用程序保留雪豹)

我想知道这是否仍然是一个更明智的选择,因为我觉得我可能会遇到更多与使用雪豹/旧操作系统相关的问题?

无论如何,再次感谢您对这个问题的支持!

所有21条评论

这实际上属于https://github.com/sass/node-sass/issues ,但我先问你:如果你使用 clang 而不是 gcc 会发生什么?

感谢您的输入。

这对我来说都是全新的领域,所以我可能需要做一些研究来切换编译器。

从 Xcode 4.2 看起来,Clang 是 Mac OS X 的默认编译器。

我正在使用 Xcode 3.2.6,这是我可以为雪豹下载的最新版本。
通过运行“clang --version”,我看到我安装了 clang 1.7 版。

从快速搜索看来,我可以通过以下方式进行更改:
option(USE_CLANG "build application with clang" ON)

但我认为我需要在http://clang.llvm.org/get_started.html正确阅读并在今晚进行测试,然后我可以反馈。

再次感谢!

关闭以保持问题跟踪器整洁,因为这应该下游到 node-sass。
@fivedoor如果您可以使用 clang,请随时在此处报告您的发现。

重新访问报告我尝试切换到clang,但仍然遇到几乎相同的错误。

除了这次而不是行:
g++: error: unrecognized command line option '-stdlib=libc++'
我有
make: clang++: No such file or directory

这可能表明我用来切换到 clang 的命令是不够的:

fivedoors-MacBook-Pro:~ fivedoor$ export CC=clang
fivedoors-MacBook-Pro:~ fivedoor$ export CXX=clang++

安装过程非常缓慢,这次是最糟糕的。 安装运行它的过程大约需要 3.5 小时(并且失败)。

我将在 node-sass 论坛上查看我可以得到什么输入来解决错误,如果我得到一个解决方案,我会报告一个解决方案。

@fivedoor make: clang++: No such file or directory还不错,命令行调用找不到您的编译器-您可以尝试找出 clang 和 clang++ 的完整路径并改用它吗? export CC=/full/path/to/clang export CXX=/full/path/to/clang++

谢谢 saper

所以我尝试了:
五门-MacBook-Pro:~ 五门$ 出口 CC=/usr/bin/clang
五门-MacBook-Pro:~ 五门$ export CXX=/usr/bin/clang++

这再次导致相同的错误,但有区别:
make: /usr/bin/clang++: No such file or directory

再次检查:
$ which clang
返回:
/usr/bin/clang


which clang++
不返回任何东西

从最初的搜索中,我假设有 clang 我也意味着 clang++ 可用?
我在安装 clang++ 时能找到的所有东西都是针对 ubuntu 的。
您对下一步要尝试什么有进一步的建议吗?
谢谢!

试试export CXX=/usr/bin/clang你能仔细检查一下/usr/bin/clang --version以确保你使用的是新安装的clang,而不是Apple 的旧版本吗?

/usr/bin/clang --version
返回:

Apple clang version 1.7 (tags/Apple/clang-77) (based on LLVM 2.9svn)
Target: x86_64-apple-darwin10
Thread model: posix

是的,看起来那是我认为 10.6.8 附带的版本

在收到以前的错误消息之前,我确实尝试过export CXX=/usr/bin/clang
谢谢

看起来我可以使用 brew 来安装更高版本
brew install --with-clang llvm
我会考虑试一试

完美的!

只是为了更新帖子最终让我完成的事情......
我试过了
brew install --with-clang llvm
clang --version仍然返回 1.7 版

然后我尝试了以下方法:

$ port search clang
$ sudo port install clang-3.6
$ port select --list clang
$ sudo port select --set clang mp-clang-3.6

这似乎是这样做的
$ clang --version返回clang version 3.6.2 (tags/RELEASE_362/final)

然后我更新了路径:

$ export CC=/opt/local/bin/clang
$ export CXX=/opt/local/bin/clang++

这次安装成功了:)

非常感谢您的帮助并引导我朝着正确的方向前进——这是无价的!

一篇后记——
在安装过程中,我似乎确实收到了很多警告。
https://github.com/fivedoor/foundation-records/blob/master/installation_log_190416

我从 brew 收到了很多关于 10.6.8 支持的警告。 在上述工作即将放弃并安装 el capitan 版本之前(作为分区驱动器运行,因此我可以为其他应用程序保留雪豹)

我想知道这是否仍然是一个更明智的选择,因为我觉得我可能会遇到更多与使用雪豹/旧操作系统相关的问题?

无论如何,再次感谢您对这个问题的支持!

typeid 警告是无害的,稍后修复 - 请参阅https://github.com/sass/libsass/issues/1523

configure: error: installation or configuration problem: assembler cannot create object files.

这是更严重的事情,您可能想向维护 jpeg-tran 的人员报告。

很可能您需要以某种方式指向有效的汇编程序; 这里发生了一些奇怪的事情。

只需安装开发依赖项并尝试针对 node-sass 运行npm test ,我希望它可以工作!

@fivedoor我正在经历完全相同的问题。 试图将编译器切换到铿锵声。 你能告诉我如何做的步骤。 谢谢!

还尝试使用安装更高版本的clang
brew install --with-clang llvm

但我收到以下错误。 我是新手,真的需要帮助!

shyam-molugus-macbook-5:pulses Shyam$ brew install --with-clang llvm
警告:您使用的是 OS X 10.6。
我们(和 Apple)不对这个旧版本提供支持。
您可能会遇到构建失败或其他损坏。
==> 下载 http://llvm.org/releases/3.6.2/llvm-3.6.2.src.tar.xz
已经下载:/Users/Shyam/Library/Caches/Homebrew/llvm-3.6.2.tar.xz
==> 下载 http://llvm.org/releases/3.6.2/cfe-3.6.2.src.tar.xz
已经下载:/Users/Shyam/Library/Caches/Homebrew/llvm--clang-3.6.2.tar.xz
==> cmake -G Unix Makefiles /private/tmp/llvm-20160602-48463-1r6cqk/llvm-3.6.2.src
/Users/Shyam/Library/Logs/Homebrew/llvm/01.cmake 的最后 15 行:

制作:*** [cmTC_183c8/fast] 错误 2

CMake 将无法正确生成此项目。
调用堆栈(最近的调用优先):
CMakeLists。 txt:25 (项目)

-- 配置不完整,出现错误!
另请参见“/tmp/llvm-20160602-48463-l64qtc/CMakeFiles/CMakeOutput.log”。
另请参阅“/tmp/llvm-20160602-48463-l64qtc/CMakeFiles/CMakeError.log”。

阅读: https ://git.io/brew-troubleshooting
如果报告此问题,请在(不是 Homebrew/brew):
https://github.com/Homebrew/homebrew-core/issues

这些未解决的问题也可能有所帮助:
llvm 3.8.0 https://github.com/Homebrew/homebrew-core/pull/1593
llvm 和 openmp https://github.com/Homebrew/homebrew-core/issues/1254

@smolugu好吧,这与这个项目完全无关。 您几乎是靠自己的,因为消息说您的操作系统版本不受支持。 您可以尝试在 brew 社区寻求帮助。 升级你的 cmake 可能会有所帮助。

@saper谢谢! 我希望在这里得到帮助,因为@fivedoor遇到了同样的问题并使用了相同的 OS X。升级 cmake 后会再试一次。

@smologu
只是从我所做的笔记中回顾核心内容。
已经有一段时间了,所以希望它很清楚并有所帮助:

// 遵循https://github.com/nodejs/node-gyp/issues/906上的建议
// 安装 gcc48

$ sudo port install gcc48
$ sudo port select --set gcc mp-gcc48
Selecting 'mp-gcc48' for 'gcc' succeeded. 'mp-gcc48' is now active.

// 再次删除 node-gyp 文件夹

$ which clang
/usr/bin/clang

// 确认路径可用

$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/git/bin:/usr/X11/bin

// 找到 clang 和 clang++ 的完整路径并使用它
// https://github.com/sass/libsass/issues/1998#issuecomment -211099908

// 检查可用的 clang 版本
$ port search clang

//并安装
$ sudo port install clang-3.6

// 似乎工作,所以检查

$ port select --list clang

Available versions for clang:
    mp-clang-3.6
    none (active)

// 看起来不错,所以选择 3.6

$ sudo port select --set clang mp-clang-3.6

Password:
Selecting 'mp-clang-3.6' for 'clang' succeeded. 'mp-clang-3.6' is now active.

// 成功
//检查更新 - 成功

//尝试设置导出位置

$ export CC=/opt/local/bin/clang
$ export CXX=/opt/local/bin/clang++

// 成功

想想你@fivedoor ,这非常有用。 clang 3.6 太新了,不能用旧的 clang 构建,所以我们需要立即采取措施 - 首先构建 gcc48,然后使用它构建 clang-3.6。

实际上 gcc48 应该足以构建 node-sass,但是您使用的是 gcc48 附带的现代 libstdc++,当您从节点内运行我们的代码时可能会遇到麻烦,AFAIK 使用仍然由 Apple 提供的旧 C++ 库。

@fivedoor @saper谢谢! 真的很感激。 我几乎放弃并考虑购买新的Mac。 但会尝试你的建议。 会更新你。

问候,

看起来理查德斯托曼这次赢了苹果:)

我在 10.6.8 上取得了以下成功。

brew install gcc
CXX=gcc-5 brew install libsass

但是CXX=gcc-5 npm install node-sass失败并出现标志错误。 我看到 node-sass node-gyp 文件为 clang 添加了 c++11 标志,这与 gcc 的 c++ 标志冲突。 如果 node-sass 可以检测旧的 mac 是否真的在运行 clang,或者记录如何覆盖标志,那就太好了。

我还没有使用 gcc-5 成功brew clang,这在旧笔记本电脑上需要很长时间。 我提到这与使用端口形成对比。

可能值得补充的是,虽然我能够解决这篇文章中的原始问题,但我确实遇到了更多问题,这些问题似乎与运行旧操作系统有关。

我最终在外部驱动器上安装了 el-capitan,保留 10.6.8 以运行一些较旧的软件并作为后备。 只要您有一台运行雪豹或更高版本的机器,我相信您应该能够在该机器上免费更新到最新的操作系统。

// 兼容性检查:
http://www.everymac.com/mac-answers/os-x-el-capitan-faq/os-x-el-capitan-compatible-macs-system-requirements.html

这似乎是一个冗长的解决方法,但使用最新的操作系统,一切运行得更快,我遇到的需要解决的冲突要少得多,所以从长远来看,如果你没有特定的需求,它可能会节省时间留下奔跑的雪豹。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

Hint-ru picture Hint-ru  ·  5评论

xzyfer picture xzyfer  ·  9评论

bertusgroenewegen picture bertusgroenewegen  ·  6评论

JohnMica picture JohnMica  ·  3评论

Nimce picture Nimce  ·  4评论