dyld: échec de la liaison du symbole paresseux: symbole introuvable – le symbole des rapports nm a été trouvé

Question assez abstraite ici, car je ne sais pas trop par où commencer mes propres enquêtes.

J’ai un paquet C construit avec CMake qui produit librpdb.so; J’ai une Ruby Gem configurée pour la même bibliothèque, qui produit rpdb.bundle.

Lorsqu’il est utilisé dans Ruby, je reçois ceci:

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 

Quand je regarde dans la bibliothèque, nm rapporte:

 000000000000ea40 T _RPDB_RuntimeStorageController_sharedInstance 

Il apparaît donc que le symbole est bien dans la bibliothèque. Pourquoi, alors, la liaison échouerait-elle?

En termes simples, les liens ne se produisaient pas au niveau de la première bibliothèque, bien qu’ils ne rapportent pas autant car les en-têtes ont été trouvés correctement.

Plus de détails sur la raison pour laquelle cela se produisait dans ma situation, ici

et aussi, ici