是否可以构建适用于多个OSX版本的xerces-c-3.1.dylib
版本?理想情况下,10.4 +,但10.5 +,甚至10.6+都可以。怎么样?
我正在使用外部(命令行)程序(即不是我的程序) 控制)需要但不包括dylib和目标是 不必在每台机器上重建它。
Xerces-C++ project没有预先编译的二进制文件 OSX所以我试图通过以下方式在源代码(在OSX 10.8.4下)构建一个:
下载最新的source code(我用的是xerces-c-3.1.1.tar.gz)
运行./configure CFLAGS="-arch x86_64 -mmacosx-version-min=10.4" CXXFLAGS="-arch x86_64 -mmacosx-version-min=10.4"
运行make
。可以在隐藏文件夹libxerces-c-3.1.dylib
中找到src/.lib
文件。
将此文件复制到/ 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
有什么想法吗?
答案 0 :(得分:3)
发现它!
构建libxerces-c-3.1.dylib的兼容版本:
从http://xerces.apache.org/xerces-c/download.cgi下载并展开Xerces 3.1源代码tarball
从生成的目录中使用以下选项运行configure脚本: ./configure --enable-netaccessor-socket CFLAGS =“ - arch x86_64 -mmacosx-version-min = 10.5” CXXFLAGS =“ - arch x86_64 -mmacosx-version-min = 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替代互联网访问。特别是使用“套接字”netaccessor似乎工作。这是必要的,因为10.6中包含的libcurl.4.dylib版本仅支持最高6.0.0,但在较新系统上构建时预期的版本是7.0.0。有关其他选项,请参阅以下网络访问者表:the xerces-c build guide