在OSX上构建PAM模块中的共享vs动态库

时间:2013-07-12 21:56:21

标签: macos eclipse-cdt mysql-connector pam

OSX新手在这里。我有一个定制的PAM模块,适用于RedHat。我正在尝试将其移植到OSX。我碰到了一堵墙。我知道OSX使用“OpenPam”而不是“LinuxPam”。我实际上可以使用eclipse构建我的模块[必须安装Xcode和Xcode命令行工具]。

当我安装模块并尝试使用它时,我在日志中得到一条通用消息,只是说openpam_load_module无法加载我的模块。在线挖掘后,我发现了一个小小的“测试”程序,试图加载你抛出的任何对象,如果失败则会产生更好的错误。我的模块依赖于“pam”,“sqlite3”和“mysqlclient”库的存在。这个测试加载器抱怨

   Library not loaded: libmysqlclient.18.dylib

那么,lib确实存在。它是在eclipse项目构建路径中。我试过“硬编码”eclipse链接行中的完整路径。我也试过链接lib的静态版本。没有快乐。

如果我链接到lib的静态版本,那么我会得到注释:

    Undefined symbols for architecture x86_64:

接着是大量未定义的符号。我不知道从哪里开始。想法?

1 个答案:

答案 0 :(得分:0)

啊,坚果!这是一个MySQL问题。构建当前的Connector-C dylib时没有为库中的libmysqlclient.18.dylib对象设置完整的加载路径[不确定这是否是正确的术语]。您可以使用“otool -L /path/to/libmysqlclient.18.dylib”来查看问题。进行一些挖掘我发现您可以使用“install_name_tool”来修复路径问题...但我不应该我已经向MySQL报告了这个错误