Qt 5 не может быть развернут на SnowLeopard

У меня проблема с тем, что мое приложение не работает на 10.6 Snow Leopard.

Я компилирую с этими параметрами:

qmake LSPRO.pro -r -spec macx-clang CONFIG+=release CONFIG+=x86_64

в моем Pro файле у меня есть эти элементы:

TEMPLATE = app
HEADERS = \
mainwindow.h \
app_mediamanager.h \
api.h \
tool_htmleditor.h \
tool_videoencoder.h \
tool_thumbnaileditor.h
SOURCES = \
main.cpp \
mainwindow.cpp \
app_mediamanager.cpp \
api.cpp \
tool_htmleditor.cpp \
tool_videoencoder.cpp \
tool_thumbnaileditor.cpp

QT += network webkitwidgets widgets concurrent sql

QMAKE_CXXFLAGS_X86_64 += -mmacosx-version-min=10.6
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6

ICON = icon.icns

RESOURCES = lspro.qrc

Но даже с простым Hello World или примерами файлов, это не работает …

Я добавляю библиотеки с помощью скрипта macdeployqt.
При работе на 10.6 я получаю это как сообщение об ошибке в отчете:

Dyld Error Message:
Library not loaded: /usr/lib/libc++.1.dylib
Referenced from: /Users/username/Desktop/LSPRO.app/Contents/MacOS/../Frameworks/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets
Reason: image not found

Вопрос прост: как я могу нацелиться на 10.6 из чистого Qt5 в 10.8?


Обновление 1:

Благодаря комментариям, похоже, что 10.6 еще не поставляется с поддержкой c ++ 11, что приводит к сбою приложения при поиске. Я пробовал 2 решения:

Неудачное решение1 : Я перестраиваю Qt5 с флагом noc ++ 11, результирующее приложение запускается на snowleopard, но не может работать с некоторыми внутренними элементами Videoplayer, отсутствующий в Qwebkit, не может вызвать внешнюю команду binary / execute (приложение аварийно завершает работу с EXC_BAD_ACCESS), хотя двоичный файл работает нормально при вызове непосредственно и, вероятно, более неоткрытый.

Неудачное решение2 Я наивно пытался включить отсутствующие dylibs (libc ++. 1.dylib и libc ++ abi.dylib) в snowleopard, но приложение по-прежнему вылетает с сообщением:

Dyld Error Message:
Symbol not found: _NSPreferredScrollerStyleDidChangeNotification
Referenced from: /Volumes/SANS TITRE/tests/LSPRO1.app/Contents/MacOS/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets
Expected in: /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit

otool -L сборки 5.1.0 rc1

@executable_path/../Frameworks/QtWebKitWidgets.framework/Versions/5/QtWebKitWidgets (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtQuick.framework/Versions/5/QtQuick (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtQml.framework/Versions/5/QtQml (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtNetwork.framework/Versions/5/QtNetwork (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtCore.framework/Versions/5/QtCore (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtGui.framework/Versions/5/QtGui (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtOpenGL.framework/Versions/5/QtOpenGL (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtWidgets.framework/Versions/5/QtWidgets (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtPrintSupport.framework/Versions/5/QtPrintSupport (compatibility version 5.1.0, current version 5.1.0)
/System/Library/Frameworks/Cocoa.framework/Versions/A/Cocoa (compatibility version 1.0.0, current version 19.0.0)
@executable_path/../Frameworks/QtWebKit.framework/Versions/5/QtWebKit (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtSql.framework/Versions/5/QtSql (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtSensors.framework/Versions/5/QtSensors (compatibility version 5.1.0, current version 5.1.0)
@executable_path/../Frameworks/QtConcurrent.framework/Versions/5/QtConcurrent (compatibility version 5.1.0, current version 5.1.0)
/System/Library/Frameworks/OpenGL.framework/Versions/A/OpenGL (compatibility version 1.0.0, current version 1.0.0)
/System/Library/Frameworks/AGL.framework/Versions/A/AGL (compatibility version 1.0.0, current version 1.0.0)
/usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 56.0.0)
/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 169.3.0)

РЕШЕНИЕ:

хорошо, наконец, получил его на работу.
Скомпилирован Qt5 (5.1.2) на снежном барде из git (есть xcode 4.2 с 10.6 sdk)
в моем случае просто с этим конфигом:

./configure -developer-build -opensource -nomake examples -nomake tests -qt-sql-mysql

Мне пришлось исправить небольшие элементы в моем коде, чтобы приложение без сбоев (имена переменных ..), а затем все было в порядке.

Только не забудьте использовать инструмент развертывания Mac на 10.6, и приложение работает нормально на 10.8 (не проверено на 10.7, но я предполагаю, что это нормально.)

Надеюсь, это кому-нибудь поможет.

5

Решение

Уведомление NSPreferredScrollerStyleDidChangeNotification доступно только в OSX 10.7 и более поздних версиях, как указано в нижней части этой страницы:

https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSScroller_Class/Reference/Reference.html

Qt условно скомпилирует API OS X 10.7, если MAC_OS_X_VERSION_MAX_ALLOWED> = MAC_OS_X_VERSION_10_7. Смотрите, например:

http://qt.gitorious.org/qt/qtbase/blobs/b9826799405293ee5969015eed37957daad198ee/src/widgets/styles/qmacstyle_mac.mm

Возможно, используемая вами версия Qt не была скомпилирована с 10.6 SDK.

Существует известная проблема: «Чтобы использовать Qt на или для 10.6, вам нужно собрать Qt самостоятельно на машине с 10.6»:

http://qt-project.org/wiki/Qt500KnownIssues

2

Другие решения

Если вы используете Qt 5.1, это известная проблема с macdeployqt, он не исправляет пути связанных библиотек в исполняемом файле, вы можете увидеть его самостоятельно с помощью

otool -L <executable>

Вы можете переключиться обратно на Qt 5.1.0-rc1 или в эта тема Существует обходной путь со скриптом, который решит проблему для вас.

1

Единственный способ запустить ваше приложение в Mac OS 10.6 с Qt 5 — это настроить Qt с параметром -no-c ++. Компиляция Qt на 10.6 для меня не вариант, потому что не будет никакой поддержки Retina.

Правильный обходной путь:

Mac OS 10.7 + Qt 5.2.0 + xcode 4.6 + настроить с параметром -no-c ++ 11

PS. Используйте Vmware с 10.7 для компиляции Qt. Разработка и развертывание приложения на любой Mac OS X (10.9.1)

0
По вопросам рекламы [email protected]