• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Distribution of QT application for Mac
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Distribution of QT application for Mac


  • Subject: Distribution of QT application for Mac
  • From: email@hidden
  • Date: Thu, 31 May 2007 17:24:40 +0400
  • Resent-date: Thu, 31 May 2007 06:23:56 -0700 (PDT)
  • Resent-from: email@hidden
  • Resent-message-id: <email@hidden>

I used qt-mac-commercial-src-4.2.2.tar.gz for installing QT.
I compiled it and installed using commands:

./configure -universal -qt-libjpeg -qt-libpng
make
sudo make install

I built my application.

I explored http://doc.trolltech.com/4.2/deployment-mac.html and run
script for my emap.app:

install_name_tool -id @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore
build/release/emap.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore
install_name_tool -id @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui
build/release/emap.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui
install_name_tool -change /usr/local/Trolltech/Qt-4.2.2/lib/QtCore.framework/Versions/4/QtCore
@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore build/release/emap.app/Contents/MacOS/emap
install_name_tool -change /usr/local/Trolltech/Qt-4.2.2/lib/QtGui.framework/Versions/4/QtGui
@executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui build/release/emap.app/Contents/MacOS/emap
install_name_tool -change /usr/local/Trolltech/Qt-4.2.2/lib/QtCore.framework/Versions/4/QtCore
@executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore build/release/emap.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui

After this, if i remove QT, program working.

But if i test with otool what libraries and frameworks are needed, i
find out that many additional frameworks and libraries are used by
application and by Qt frameworks:

nightmares-computer:~/SVN/19 home$ otool -L ./emap.app/Contents/MacOS/emap
./emap.app/Contents/MacOS/emap:
        @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.2.0, current version 4.2.2)
        /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
        /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 5.0.0)
        /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 824.41.0)
        @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.2.0, current version 4.2.2)
        /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.6)
        /usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

nightmares-computer:~/SVN/19 home$ otool -L ./emap.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui
./emap.app/Contents/Frameworks/QtGui.framework/Versions/4/QtGui:
        @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.2.0, current version 4.2.2)
        /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
        /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 5.0.0)
        /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 824.41.0)
        @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.2.0, current version 4.2.2)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.6)
        /usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
        /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

nightmares-computer:~/SVN/19 home$ otool -L ./emap.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore
./emap.app/Contents/Frameworks/QtCore.framework/Versions/4/QtCore:
        @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.2.0, current version 4.2.2)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.6)
        /usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
        /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

nightmares-computer:~/SVN/19 home$ otool -L ./emap.app/Contents/Plugins/imageformats/libTiffIO.dylib
./emap.app/Contents/Plugins/imageformats/libTiffIO.dylib:
        @executable_path/../Plugins/imageformats/libTiffIO.dylib (compatibility version 1.0.0, current version 1.0.0)
        @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.2.0, current version 4.2.2)
        /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
        /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 63.0.0)
        /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 824.34.0)
        @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.2.0, current version 4.2.2)
        /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.3)
        /usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

nightmares-computer:~/SVN/19 home$ otool -L ./emap.app/Contents/Plugins/imageformats/libqjpeg.dylib
./emap.app/Contents/Plugins/imageformats/libqjpeg.dylib:
        @executable_path/../Plugins/imageformats/libqjpeg.dylib (compatibility version 0.0.0, current version 0.0.0)
        @executable_path/../Frameworks/QtGui.framework/Versions/4/QtGui (compatibility version 4.2.0, current version 4.2.2)
        /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
        /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 63.0.0)
        /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 824.34.0)
        @executable_path/../Frameworks/QtCore.framework/Versions/4/QtCore (compatibility version 4.2.0, current version 4.2.2)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.3)
        /usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
        /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)


As i understand, if on client machine will absent any of these
libraries or frameworks, or they will be in different location, my application will not run?
For example all these files are needed on target machine in specified
locations:

        /System/Library/Frameworks/Carbon.framework/Versions/A/Carbon (compatibility version 2.0.0, current version 128.0.0)
        /System/Library/Frameworks/QuickTime.framework/Versions/A/QuickTime (compatibility version 1.0.0, current version 63.0.0)
        /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit (compatibility version 45.0.0, current version 824.34.0)
        /usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
        /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 88.1.3)
        /usr/lib/libiconv.2.dylib (compatibility version 5.0.0, current version 5.0.0)
        /System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 22.0.0)
        /usr/lib/libstdc++.6.dylib (compatibility version 7.0.0, current version 7.4.0)
        /usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)

So i also need to include them into bundle and to call
install_name_tool -change for them? Am i right?

If include them, in what directories of bundle i must place *.dylib
files?

And perhaps some of them also need another frameworks which are not in
current list? Must i run recursively "otool -L ..." for all
frameworks, libraries, executables, which are added to my bundle, to detect entire list of
needed frameworks and dylib to add?

If this is true, is there some way to automate this process?
And bundle will have size about 200mb or more. Is it normal for mac
application?


---------
Serge





 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Xcode-users mailing list      (email@hidden)
Help/Unsubscribe/Update your Subscription:

This email sent to email@hidden

  • Follow-Ups:
    • Re: Distribution of QT application for Mac
      • From: David Alger <email@hidden>
    • Re: Distribution of QT application for Mac
      • From: Joshua McKinnon <email@hidden>
  • Prev by Date: Re: More File Paths for dylibs
  • Next by Date: RE: Cross-project Reference and Targets
  • Previous by thread: GenerateDSYMFile randomly failing when nothing needs compiling
  • Next by thread: Re: Distribution of QT application for Mac
  • Index(es):
    • Date
    • Thread