macos - Xerces-C dylib 的 Mac OSX 兼容版本 (10.5-10.8)

标签 macos xerces-c

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

我正在使用一个外部(命令行)程序(即不是一个我 控制),需要但不包括 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

有什么想法吗?

最佳答案

找到了!

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

关于macos - Xerces-C dylib 的 Mac OSX 兼容版本 (10.5-10.8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17102409/

相关文章:

linux - 在多个文件上运行命令并保持相同的名称

c++ - 在使用 Xerces C++ 进行 XML 解析期间集成模式元数据

c++ - Xerces C++ XML : escape is really hard to do?

c++ - xerces - 处理标签名称中的命名空间

linux - 在 OSX 下设置特定命令的路径

macos - 让 openmpi-2.0.2 工作时出现问题。 (MacOS 塞拉利昂)

java - 如何区分应用程序退出和系统关闭

c++ - Xerces-c断言错误

c++ - 如何从核心转储遍历 xerces-c DOMDocument?

git - MacOS:使用 Bitbucket 和 Github、SSH key ?