2013-06-14 4 views
2

Возможно ли построить версию xerces-c-3.1.dylib, которая будет работать с несколькими версиями OSX? В идеале 10.4+, но 10.5+ или даже 10.6+ были бы в порядке. Как?Mac OSX Совместимость версии Xerces-C dylib (10.5-10.8)

Я работаю с внешней программой (командной строки) (т.е. не один я контроль), который требует, но не включает в себя dylib и цель не должны восстановить его на каждой машине.

Xerces-C++ project В не имеют предварительно скомпилированные двоичные файлы для OSX, так что я пытался построить один из источника (под OSX 10.8.4) по:

  1. Скачать последние source code (я использовал Xerces-с -3.1.1.tar.gz)

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

  3. Run make. Файл libxerces-c-3.1.dylib можно найти в скрытой папке src/.lib.

  4. Скопируйте этот файл в/USR/местные/Библиотека

Это 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 

Любые идеи?

ответ

2

Найденный!

Чтобы построить версию совместимости libxerces-с-3.1.dylib:

  1. Скачать и расширить Xerces 3.1 исходниками с http://xerces.apache.org/xerces-c/download.cgi

  2. из результирующего каталога запустить скрипт конфигурации с помощью следующие варианты: ./configure --enable-netaccessor-розетка CFLAGS = "- арка x86_64 -mmacosx-версия-мин = 10.5" CXXFLAGS = "- арка x86_64 -mmacosx-версия-мин = 10,5"

  3. Перейдите в каталог src

  4. Run make

  5. libxerces-c-3.1.dylib можно найти в .../src/.libs/ и (по крайней мере, для моего приложения) должны быть скопированы в /usr/local/lib/

я проверил это путем компиляции версию libxerces-c-3.1.dylib под OSX 10.8.4 с использованием инструментов командной строки из Xcode 4.6.3. Затем я смог использовать результат в 10.6, 10.7 и 10.8 (все версии, которые у меня были доступны). Решение потребовало двух изменений в настройках конфигурации Xerces:

  • Задание минимальной версии совместимости с ОС. Я выбрал 10.5, но смогли проверить только до 10.6

  • Использование альтернативы завиткам для доступа в Интернет. В частности, использование «сокетов» netaccessor, похоже, работает. Это было необходимо, так как версия libcurl.4.dylib, включенная в 10.6, поддерживает только до 6.0.0, но версия, ожидаемая при построении новой системы, - 7.0.0. Для других вариантов см. Таблицу сетевых аксессуаров от: the xerces-c build guide