Не могу собрать Firebreath при включении libgpgme

Undefined symbols for architecture x86_64:   "_libintl_dgettext", referenced from:
      _gpg_strerror in libgpg-error.a(libgpg_error_la-strerror.o)
      _gpg_strerror_r in libgpg-error.a(libgpg_error_la-strerror.o)
      _gpg_strsource in libgpg-error.a(libgpg_error_la-strsource.o) ld: symbol(s) not found for architecture x86_64 collect2: ld returned 1 exit status

Как указано в вопросе, при попытке собрать мой проект firebreath, для которого требуется libgpgme на MacOSX 10.6 с использованием Xcode, я получаю указанную выше ошибку. Мои пути включения/поиска действительны, так как я могу запустить следующую команду из консоли, и она работает нормально.

 g++ -o test test.cpp `gpgme-config --libs`

Вывод формы gpgme-config: -L/opt/local/lib -lgpgme -lassuan -lgpg-error. Не уверен, какая еще информация нужна, прокомментируйте, и я буду обновлять по мере необходимости.


person RC1140    schedule 02.05.2012    source источник


Ответы (1)


Ваша проблема в том, что вы создаете универсальный двоичный файл как для 32, так и для 64 бит, а библиотека, которую вы включаете, не создана для 64 бит. Вы можете собрать i386, только добавив -D CMAKE_OSX_ARCHITECTURES="i386" в командную строку вашего prepmac.sh.

Обязательно удалите каталог сборки перед запуском prepmac.sh с новым аргументом, иначе он может не выполниться.

Дополнительную информацию см. на странице Prep Scripts на сайте firebreath.org.

person taxilian    schedule 02.05.2012
comment
Спасибо, мне нужно получить библиотеки i386, в настоящее время у меня установлены только библиотеки x64, поэтому сборка была в порядке для x64, но не для i386. - person RC1140; 02.05.2012
comment
по вашему сообщению все наоборот; эта ошибка говорит о том, что ваших библиотек x86_64 нет. - person taxilian; 02.05.2012
comment
это может быть даже не конкретно gpgme, в котором его не хватает; посмотрите на символы, которые он говорит, что не может найти, и которые отсутствуют в 64-битной версии - person taxilian; 02.05.2012
comment
да, кажется, это библиотека gettext, пытаюсь понять, как ее скомпилировать для архитектуры i386. - person RC1140; 02.05.2012