Как мне создать консольное приложение QT в 64-битной системе Mac OSX? - PullRequest
1 голос
/ 13 июля 2009

Мне нужно собрать консольное приложение QT как 64-битное. т.е. x86_64

Мой конфигурационный файл выглядит так:

CONFIG += qt console debug x86_64
CONFIG -= app_bundle

HEADERS = HelperClass.h
SOURCES = HelperClass.cpp \
            main.cpp

Компиляция идет без проблем. Но когда сборка доходит до шага ссылки, она жалуется, что у меня нет архитектуры Qt x86_64.

Выдержка из сборки:

ld: warning in /Library/Frameworks/QtGui.framework/QtGui, missing required architecture x86_64 in file
ld: warning in /Library/Frameworks/QtCore.framework/QtCore, missing required architecture x86_64 in file
Undefined symbols:
  "QIODevice::getChar(char*)", referenced from:
...

Нужно ли загружать исходный код Qt и создавать необходимую архитектуру для этого? Моя установка производится из предоставленных двоичных файлов для Mac OSX - Qt 4.5.2 на сайте QT. Я предполагаю, что сборка не идет с 64-битными версиями библиотек. Я прав?

Ответы [ 3 ]

1 голос
/ 20 сентября 2010

QT SDK по умолчанию НЕ включает 64-битные библиотеки в Mac OS X (я думаю, что это странно, но это так). Для компиляции моих приложений в x86_64 я просто загружаю автономные библиотеки с Cocoa (32/64 бита) и устанавливаю их после установки SDK.

Тогда все работает как шарм.

0 голосов
/ 22 февраля 2010

Вы можете проверить библиотеки, используя "файл":

$ file /Library/Frameworks/QtGui.framework/QtGui /Library/Frameworks/QtGui.framework/QtGui: универсальный двоичный файл Mach-O с 4 архитектурами /Library/Frameworks/QtGui.framework/QtGui (для архитектуры ppc64): 64-битная динамически связанная общая библиотека Mach-O ppc64 /Library/Frameworks/QtGui.framework/QtGui (для архитектуры ppc7400): динамически связанная общая библиотека Mach-O ppc /Library/Frameworks/QtGui.framework/QtGui (для архитектуры x86_64): 64-битная динамически связанная общая библиотека Mach-O x86_64 /Library/Frameworks/QtGui.framework/QtGui (для архитектуры i386): динамически связанная общая библиотека Mach-O i386

Я вижу те же ошибки "ld warning: ... Отсутствует необходимая архитектура x86_64 в файле", поэтому сообщение об ошибке вводит в заблуждение.

0 голосов
/ 13 июля 2009

На странице Qt для разработки с открытым исходным кодом C ++ для Mac OS X видно, что 32 и 64-битные библиотеки должны включать :

Двоичный пакет Mac с использованием Cocoa для Mac OS X 10.5 (32-разрядная и 64-разрядная версия) http://get.qtsoftware.com/qt/source/qt-mac-cocoa-opensource-4.5.2.dmg

Если у вас все еще есть проблемы, вы можете попробовать загрузить исходный код с той же страницы:

http://get.qtsoftware.com/qt/source/qt-mac-opensource-src-4.5.2.tar.gz

и настроить с помощью:

-arch x86_64

См. http://doc.trolltech.com/4.5/developing-on-mac.html#universal-binaries

Обратите внимание, что в приведенной выше ссылке упоминается, что если арка не указана, для текущей платформы создается 32-битная версия.

...