Qt 5 nie może zostać wdrożony na SnowLeopard
Mam problem, w którym moja aplikacja nie działa na 10.6 Snow Leopard.
Kompiluję z tymi parametrami:
qmake LSPRO.pro -r -spec macx-clang CONFIG+=release CONFIG+=x86_64
w moim pliku Pro mam następujące elementy:
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
Ale nawet z prostym Hello World lub przykładowymi plikami nie działa ...
Dodaję biblioteki ze skryptem macdeployqt. Podczas pracy na 10.6 otrzymuję to jako błąd w raporcie:
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
Pytanie jest proste: Jak mogę celować w 10.6 z czystego Qt5 w 10.8?
Aktualizacja 1:Dzięki komentarzom wygląda na to, że 10.6 nie został jeszcze dostarczony z obsługą c ++ 11, powodując awarię aplikacji podczas wyszukiwania. Próbowałem 2 rozwiązań:
Nieudane rozwiązanie1 : Przebudowuję Qt5 za pomocą flagi noc ++ 11, wynikowa aplikacja uruchamia się na snowleopard, ale zawiesza niektóre wewnętrzne elementy Videoplayera brakującego w Qwebkit, nie można wywołać zewnętrznego polecenia binary / execute (aplikacja ulega awarii z EXC_BAD_ACCESS), chociaż plik binarny działa poprawnie, gdy jest wywoływany bezpośrednio i prawdopodobnie bardziej nieodkryty.
Nieudane rozwiązanie2 : Próbowałem naiwnie umieścić brakujące dylibs (libc ++. 1.dylib i libc ++ abi.dylib) w snowleopard, ale aplikacja nadal ulega awarii z komunikatem:
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 kompilacji rc1 5.1.0@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)
ROZWIĄZANIE:ok, wreszcie udało się. Skompilowany Qt5 (5.1.2) na snowleopard z git (mieć xcode 4.2 z 10.6 sdk) w moim przypadku po prostu z tymi konfiguracjami:
./configure -developer-build -opensource -nomake examples -nomake tests -qt-sql-mysql
Musiałem naprawić małe elementy w moim kodzie, powodując awarię aplikacji bez powodu (nazwy zmiennych ..), a potem wszystko było w porządku.
Po prostu nie zapomnij użyć narzędzia mac deploy w wersji 10.6, a aplikacja działa poprawnie w 10.8 (niesprawdzona w wersji 10.7, ale zakładam, że jest w porządku).
Mam nadzieję, że to pomoże każdemu.