【问题标题】:shared vs dynamic lib in PAM module build on OSX在 OSX 上构建的 PAM 模块中的共享与动态库
【发布时间】:2013-07-12 21:56:20
【问题描述】:

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

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

   Library not loaded: libmysqlclient.18.dylib

嗯,那个库确实存在。它位于 Eclipse 项目构建路径中。我已经尝试在 eclipse 链接行中“硬编码”完整路径。我也尝试过链接库的静态版本。不开心。

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

    Undefined symbols for architecture x86_64:

后面是大量未定义的符号。我不知道从这里去哪里。想法?

【问题讨论】:

    标签: macos eclipse-cdt mysql-connector pam


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-28
      • 1970-01-01
      • 1970-01-01
      • 2015-02-27
      • 2012-12-19
      • 2017-12-27
      • 2013-10-30
      • 1970-01-01
      相关资源
      最近更新 更多