споделена срещу динамична библиотека в PAM модул, изграден на OSX

OSX начинаещ тук. Имам персонализиран PAM модул, който работи добре на RedHat. Опитвам се да го пренеса към OSX. Блъснах се в стена. Знам, че OSX използва "OpenPam" вместо "LinuxPam". Всъщност мога да създам своя модул с помощта на eclipse [все пак трябваше да инсталирам Xcode и инструментите на командния ред на Xcode].

Когато инсталирам модула и се опитам да го използвам, получавам общо съобщение в регистрационните файлове, което просто казва, че openpam_load_module не успя да зареди моя модул. След ровене онлайн намерих малка dlopen "тестова" програма, която се опитва да зареди какъвто и обект да хвърлите към нея и ако не успее, дава много по-добри грешки. Моят модул разчита на съществуването на библиотеките "pam", "sqlite3" и "mysqlclient". Този тестов товарач се оплаква

   Library not loaded: libmysqlclient.18.dylib

Е, тази библиотека съществува. той е в пътя за изграждане на проекта на Eclipse. Опитах да "твърдо кодирам" пълния път в линията за връзка на eclipse. Също така се опитах да направя връзка срещу статичната версия на lib. Никаква радост.

Ако се свържа със статичната версия на lib, тогава получавам бележката:

    Undefined symbols for architecture x86_64:

последвано от тон недефинирани символи. Не съм сигурен накъде да отида от тук. идеи?


person 7 Reeds    schedule 12.07.2013    source източник


Отговори (1)


Ах глупости! Това е проблем с MySQL. Текущият Connector-C dylib е изграден без настройка на пътя на пълно зареждане [не съм сигурен дали това е правилният термин] за обекта libmysqlclient.18.dylib в библиотеката. Можете да използвате "otool -L /path/to/libmysqlclient.18.dylib"", за да видите проблема. Като се зарових, открих, че можете да използвате "install_name_tool", за да коригирате проблема с пътя... но не трябваше до. Докладвах грешката на MySQL

person 7 Reeds    schedule 16.07.2013