【问题标题】:Symbol not found: _libintl_gettext未找到符号:_libintl_gettext
【发布时间】:2012-12-07 07:53:40
【问题描述】:

我正在尝试使用 C++ 和 node-gyp 创建一个 NodeJS 模块。该软件包依赖于 GNU 的 Gettext 库。我目前正在使用 Mac OS X Mountain Lion。我尝试通过手动、Homebrew 甚至 Fink 自己安装包。

程序通过 Terminal.app 运行并且包编译。我可以很好地使用.node 模块,除非我使用库中使用gettext 的方法。我在 REPL 中收到以下错误,然后 REPL 退出。

dyld: lazy symbol binding failed: Symbol not found: _libintl_gettext
  Referenced from: /Users/KevinMartin/Dropbox/www/node-locale/build/Release/locale.node
  Expected in: dynamic lookup

dyld: Symbol not found: _libintl_gettext
  Referenced from: /Users/KevinMartin/Dropbox/www/node-locale/build/Release/locale.node
  Expected in: dynamic lookup

Trace/BPT trap: 5

提前致谢。

【问题讨论】:

  • 不确定您是否找到了解决方案,可能是 libedit 可以提供符号。
  • @Vishal 这对我不起作用。在过去的几天里,libintl 成了我最糟糕的噩梦。

标签: c++ macos node.js gettext dyld


【解决方案1】:

这可能是因为您没有将libintl 列为要动态链接的库。您需要添加如下内容:

{
  "targets": [
    {
      "target_name": "...",
      "sources": ["..."],
      "libraries": ["/path/to/gettext/lib/libintl.a"]
    }
}

到您的 binding.gyp 文件。 libintl 没有在您的应用程序中静态或动态链接,这就是您收到符号错误的原因。

编辑:

你也可以这样做:

{
    "targets": [{
        "target_name": "...",
        "sources": [
            "..."
        ],
        "link_settings": {
             "libraries": ["libintl.8.dylib"]
        }
     }]
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 2021-12-17
    • 2021-07-18
    • 2014-08-31
    • 2018-10-21
    • 2021-01-06
    • 2012-12-28
    • 2016-02-01
    相关资源
    最近更新 更多