dyld: привязка ленивого символа не удалась: символ не найден - нм сообщает, что символ найден
Здесь довольно абстрактный вопрос, так как я не знаю, с чего начать собственное расследование.
У меня есть пакет 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
Когда я смотрю в библиотеку, NM сообщает:
000000000000ea40 T _RPDB_RuntimeStorageController_sharedInstance
Таким образом, кажется, что символ действительно находится в библиотеке. Почему же тогда сбой связывания?
1 ответ
Решение
Проще говоря, связывание не происходило на уровне первой библиотеки, хотя и не так много сообщало, потому что заголовки были найдены соответствующим образом.
Подробнее о том, почему это происходило в моих обстоятельствах, здесь