【问题标题】:Mac OSX Compatibility version of Xerces-C dylib (10.5-10.8)Mac OSX 兼容版本的 Xerces-C dylib (10.5-10.8)
【发布时间】:2013-06-14 06:30:34
【问题描述】:

是否可以构建适用于多个 OSX 版本的xerces-c-3.1.dylib 版本?理想情况下,10.4+,但 10.5+,甚至 10.6+ 都可以。怎么样?

我正在使用一个外部(命令行)程序(即不是一个我 control) 需要但不包括 dylib,目标是 不必在每台机器上重新构建它。

Xerces-C++ project 没有预编译的二进制文件 OSX,所以我尝试通过以下方式从源代码(在 OSX 10.8.4 下)构建一个:

  1. 下载最新的source code(我用的是xerces-c-3.1.1.tar.gz)

  2. 运行./configure CFLAGS="-arch x86_64 -mmacosx-version-min=10.4" CXXFLAGS="-arch x86_64 -mmacosx-version-min=10.4"

  3. 运行makelibxerces-c-3.1.dylib文件可以在隐藏文件夹src/.lib中找到。

  4. 将此文件复制到 /usr/local/lib

这个 dylab 在 10.8.4 和 10.7.5 机器上运行良好。问题是不起作用 在 10.6.8(可能更旧的)机器上。在 10.6.8 上,我收到以下错误:

dyld: Library not loaded: /usr/lib/libcurl.4.dylib
  Referenced from: /usr/local/lib/libxerces-c-3.1.dylib
  Reason: Incompatible library version: libxerces-c-3.1.dylib requires
version 7.0.0 or later, but libcurl.4.dylib provides version 6.0.0

有什么想法吗?

【问题讨论】:

    标签: macos xerces-c


    【解决方案1】:

    找到了!

    构建 libxerces-c-3.1.dylib 的兼容版本:

    1. http://xerces.apache.org/xerces-c/download.cgi 下载并展开 Xerces 3.1 源代码压缩包

    2. 使用以下选项从生成的目录运行配置脚本: ./configure --enable-netaccessor-socket CFLAGS="-arch x86_64 -mmacosx-version-min=10.5" CXXFLAGS="-arch x86_64 -mmacosx-version-min=10.5"

    3. 切换到src目录

    4. 运行make

    5. libxerces-c-3.1.dylib 可以在.../src/.libs/ 下找到,并且(至少对于我的应用程序)应该复制到/usr/local/lib/

    我通过使用 Xcode 4.6.3 中的命令行工具在 OSX 10.8.4 下编译 libxerces-c-3.1.dylib 版本对此进行了测试。然后我可以在 10.6、10.7 和 10.8(我拥有的所有版本)下使用结果。该解决方案需要对 Xerces 配置设置进行两项更改:

    • 指定最低 osx 兼容版本。我选择了 10.5,但只能测试回 10.6

    • 使用 curl 的替代方法访问 Internet。特别使用“套接字”网络访问器似乎有效。这是必要的,因为 10.6 中包含的 libcurl.4.dylib 版本仅支持最高 6.0.0,但在较新的系统上构建时预期的版本是 7.0.0。有关其他选项,请参阅网络访问器表:the xerces-c build guide

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-15
      • 2011-07-02
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 2012-07-31
      • 2013-09-20
      • 2013-11-24
      相关资源
      最近更新 更多