dyld: привязка ленивого символа не удалась: символ не найден - нм сообщает, что символ найден - PullRequest
2 голосов
/ 23 июля 2010

Здесь достаточно абстрактный вопрос, так как я не знаю, с чего начать собственное расследование.

У меня есть пакет C, созданный с помощью CMake, который создает librpdb.so; У меня есть Ruby Gem, настроенный для той же библиотеки, которая создает rpdb.bundle.

При использовании в Ruby я получаю следующее:

dyld: lazy symbol binding failed: Symbol not found: _RPDB_RuntimeStorageController_sharedInstance
  Referenced from: /usr/local/lib/ruby/gems/1.9.1/gems/rpdb-0.1.0/lib/rpdb/rpdb.bundle
  Expected in: flat namespace

Когда я смотрю в библиотеку, НМ сообщает:

000000000000ea40 T _RPDB_RuntimeStorageController_sharedInstance

Так что, похоже, символ действительно находится в библиотеке. Почему же тогда сбой привязки?

1 Ответ

2 голосов
/ 25 июля 2010

Проще говоря, связывание не происходило на уровне первой библиотеки, хотя и не так много сообщало, потому что заголовки были найдены соответствующим образом.

Подробнее о том, почему это происходило в моих обстоятельствах, здесь

, а также здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...