Ошибки ссылок на Snow Leopard

Я создаю небольшое настольное приложение, используя Qt и Poco на Mac OS X Snow Leopard.

Qt работает нормально, но как только я начал связываться с Poco, я получаю следующее предупреждение:

ld: warning: in /Developer/SDKs/MacOSX10.6.sdk/usr/local/lib/libPocoFoundation.8.dylib, file is not of required architecture

Также, когда я ссылаюсь на SDK 10.5:

ld: warning: in /Developer/SDKs/MacOSX10.5.sdk/usr/local/lib/libPocoFoundation.8.dylib, file is not of required architecture

Любые подсказки о том, как решить эту проблему?

Решено!

Вот мой обходной путь (кстати, я также разместил его на форумах Poco):

Проблема в том, что если архитектура не указана, Snow Leopard по умолчанию использует 64-разрядную версию, тогда как более старые версии ОС по умолчанию используют 32-разрядную версию. В системе сборки Poco файл конфигурации Darwin не указывает архитектуру, поэтому он выбирает 32-разрядную версию. Мое решение состояло в том, чтобы скопировать файл конфигурации Darwin_x86_64 поверх файла Darwin и заменить текстовые экземпляры «x86_64» на «i386». Это приводит к 32-битной сборке.

Однако несколько хакерское решение, дайте мне знать, можно ли это сделать более чистым способом...


person StackedCrooked    schedule 13.11.2009    source источник


Ответы (1)


Вы откуда-то стащили библиотеки? Poco поставляется со всеми источниками. Перекомпилируйте его.

person Duck    schedule 13.11.2009
comment
Точнее, перекомпилировать его под нужную архитектуру и выбрать нужную при компиляции с -arch. - person Georg Fritzsche; 14.11.2009
comment
Вы можете проверить архитектуру бинарного файла с помощью команды lipo. (lipo -info /path/to/binary) - person Dan; 14.11.2009
comment
@gf: я вытащил ветку SVN и построил ее с нуля. @Дэн: Спасибо! Архитектура: x86_64. Мне наверное нужно сделать 386 билд, я думаю.. - person StackedCrooked; 14.11.2009
comment
@Duck: запуск configure с config=Darwin по-прежнему вызывает создание сборок x86_64. Я писал об этом на форумах Poco. - person StackedCrooked; 14.11.2009