Macos Xerces-C动态库的Mac OSX兼容版本(10.5-10.8)

Macos Xerces-C动态库的Mac OSX兼容版本(10.5-10.8),macos,xerces-c,Macos,Xerces C,是否可以构建一个能与多个版本的OSX配合使用的xerces-c-3.1.dylib版本?理想情况下,10.4+,但10.5+,甚至10.6+都可以。怎么做 我正在使用一个外部(命令行)程序(即不是一个我 控件),需要但不包括动态库,目标是 不必在每台机器上重建它 没有针对的预编译二进制文件 因此,我尝试通过以下方式从源代码(在OSX 10.8.4下)构建一个: 下载最新版本(我使用xerces-c-3.1.1.tar.gz) 运行/configure CFLAGS=“-arch x86\u 64

是否可以构建一个能与多个版本的OSX配合使用的xerces-c-3.1.dylib版本?理想情况下,10.4+,但10.5+,甚至10.6+都可以。怎么做

我正在使用一个外部(命令行)程序(即不是一个我 控件),需要但不包括动态库,目标是 不必在每台机器上重建它

没有针对的预编译二进制文件 因此,我尝试通过以下方式从源代码(在OSX 10.8.4下)构建一个:

  • 下载最新版本(我使用xerces-c-3.1.1.tar.gz)

  • 运行
    /configure CFLAGS=“-arch x86\u 64-mmacosx version min=10.4”cxflags=“-arch x86\u 64-mmacosx version min=10.4”

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

  • 将此文件复制到/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
    
    有什么想法吗?

    找到了

    要构建libxerces-c-3.1.dylib的兼容版本,请执行以下操作:

  • 从下载并扩展Xerces 3.1源代码tarball

  • 从生成的目录中,使用以下选项运行配置脚本: ./configure--enable netaccessor socket CFLAGS=“-arch x86_64-mmacosx version min=10.5” CXXFLAGS=“-arch x86_64-mmacosx版本最小值=10.5”

  • 切换到
    src
    目录

  • 运行
    make

  • 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。特别是使用“套接字”netaccessor似乎是可行的。这是必要的,因为10.6中包含的libcurl.4.dylib版本最多只支持6.0.0,但在较新系统上构建时预期的版本是7.0.0。有关其他选项,请参见以下目录中的net accessor表: