macOS和dyld:未找到符号:_usdt_create_provider

时间:2019-01-03 00:37:28

标签: node.js macos macos-mojave dtrace

简而言之,我无法在开发计算机上安装@ pact-foundation / pact-node,从我的收集来看,这似乎与在macOS 10.14上存在松散的关系。松散地说,这不会影响我运行同一堆栈的其他非开发计算机。

在nvm中,除了系统Node也是11.6.0之外,我还尝试使用Node 8.14.0、8.15.0、94.0、10.14.2、10.15.0和11.6.0。不管我是在团队的项目目录中还是在其他空的沙箱目录中,每个版本都会产生相同的错误消息。

直到几分钟前,我一直在运行macOS 10.14.1,并且在10.14.2上看到了相同的问题。没有尚未安装的更新。

软件包安装输出如下。

$ npm install @pact-foundation/pact-node

> dtrace-provider@0.8.7 install /Users/andrewgould/www/sandbox/node_modules/dtrace-provider
> node-gyp rebuild || node suppress-error.js

  ACTION binding_gyp_ndtp_target_build_ndtp .
  TOUCH Release/obj.target/ndtp.stamp

> spawn-sync@1.0.15 postinstall /Users/andrewgould/www/sandbox/node_modules/spawn-sync
> node postinstall


> caporal@0.10.0 postinstall /Users/andrewgould/www/sandbox/node_modules/caporal
> (test -f ./node_modules/husky/bin/install.js && node ./node_modules/husky/bin/install.js) || exit 0


> @pact-foundation/pact-node@6.20.0 postinstall /Users/andrewgould/www/sandbox/node_modules/@pact-foundation/pact-node
> node postinstall.js

dyld: lazy symbol binding failed: Symbol not found: _usdt_create_provider
  Referenced from: /Users/andrewgould/www/sandbox/node_modules/dtrace-provider/src/build/Release/DTraceProviderBindings.node
  Expected in: flat namespace

dyld: Symbol not found: _usdt_create_provider
  Referenced from: /Users/andrewgould/www/sandbox/node_modules/dtrace-provider/src/build/Release/DTraceProviderBindings.node
  Expected in: flat namespace

Abort trap: 6

有人以前见过类似的错误吗?有解决方案吗?

1 个答案:

答案 0 :(得分:3)

事实证明,此问题是由我通过Homebrew安装的binutils引起的。卸载可以解决问题。

GNU binutils网站上,其中包含的主要软件包是GNU链接器ld和GNU汇编器as。这两个工具都包含在macOS中,但是这些工具的Homebrew版本导致了上述问题中显示的冲突。