Tiger gcc 4 builds apps that don't run on 10.2.8

  • Hi All,
    I've rebuilt my application on Tiger with gcc 4.0 and went to run it
    on 10.2.8 for a sanity check and it no longer launches.  I get a
    console message to the effect 'can't find library libmx'.  Is this a
    known issue or is there some magical way to get it to compile 10.2.8
    compatible binaries again?  It seems like a major oversight not to
    check this sort of thing.

    Thanks in advance!
    Will
  • On 1 maj 2005, at 19.18, Will Cosgrove wrote:

    > I've rebuilt my application on Tiger with gcc 4.0 and went to run
    > it on 10.2.8 for a sanity check and it no longer launches.  I get a
    > console message to the effect 'can't find library libmx'.  Is this
    > a known issue or is there some magical way to get it to compile
    > 10.2.8 compatible binaries again?  It seems like a major oversight
    > not to check this sort of thing.

    1) You *need* to use the Cross Development SDK if you're targeting a
    different OS!

    2) If you search the Xcode-Users archives, you'll find some
    information about this problem. For example, Nick had this to say:

    On 30 apr 2005, at 17.51, Nick Zitzmann wrote:

    > You must use GCC 3.3 to compile projects that will run on versions
    > of Mac OS X earlier than 10.3.9. GCC 4.0 insists on linking to
    > libmx, which doesn't exist in Jaguar, and I'm not sure if it
    > existed in Panther prior to 10.3.9.

    j o a r
  • on 2005-05-01 1:18 PM, Will Cosgrove at <will...> wrote:

    > I've rebuilt my application on Tiger with gcc 4.0 and went to run it
    > on 10.2.8 for a sanity check and it no longer launches.  I get a
    > console message to the effect 'can't find library libmx'.  Is this a
    > known issue or is there some magical way to get it to compile 10.2.8
    > compatible binaries again?  It seems like a major oversight not to
    > check this sort of thing.

    This has come as a surprise to many of us, who have now more or less
    unwittingly put Jaguar-crippled apps on the market. And it also apparently
    prevents an app from running on any version of Panther earlier than 10.3.9.

    Read the "About Xcode Tools" document. It explains that apps built with the
    gcc 4 compiler will only run on 10.3.9 and newer. You have to build with the
    gcc 3 compiler to get Jaguar and early-Panther compatibility, even though
    you have used the correct cross-development SDKs and build settings.

    I, for one, plan to release ".1" versions of my products with Jaguar and
    early-Panther compatibility restored -- at least after Apple releases Tiger
    10.4.1.

    --

    Bill Cheeseman - <wjcheeseman...>
    Quechee Software, Quechee, Vermont, USA
    http://www.quecheesoftware.com

    PreFab Software - http://www.prefab.com/scripting.html
    The AppleScript Sourcebook - http://www.AppleScriptSourcebook.com
    Vermont Recipes - http://www.stepwise.com/Articles/VermontRecipes
  • On 2005-05-02, at 11.32, Bill Cheeseman wrote:

    > Read the "About Xcode Tools" document. It explains that apps built
    > with the
    > gcc 4 compiler will only run on 10.3.9 and newer. You have to build
    > with the
    > gcc 3 compiler to get Jaguar and early-Panther compatibility, even
    > though
    > you have used the correct cross-development SDKs and build settings.

    Apple should release a 10.2.9 that supports apps compiled with GCC 4.x.

    j o a r
  • On 2005-05-02 05:32, Bill Cheeseman said:

    > Read the "About Xcode Tools" document. It explains that apps built with the
    > gcc 4 compiler will only run on 10.3.9 and newer. You have to build with the
    > gcc 3 compiler to get Jaguar and early-Panther compatibility, even though
    > you have used the correct cross-development SDKs and build settings.

    Oh yeah?... Why should this be?  I could understand for C++ that there
    could be ABI changes, but for C/Obj-C?

    --
    ____________________________________________________________
    Sean McBride, B. Eng                <sean...>
    Rogue Research                        www.rogue-research.com
    Mac Software Developer              Montréal, Québec, Canada
  • On May 2, 2005, at 8:51 AM, Sean McBride wrote:

    > Oh yeah?... Why should this be?  I could understand for C++ that there
    > could be ABI changes, but for C/Obj-C?

    As explained earlier, GCC 4 links the compiled code to a library
    titled "libmx", which did not exist in any version of Mac OS X prior
    to 10.3.9 (I think). GCC 3.3 doesn't do this.

    Nick Zitzmann
    <http://www.chronosnet.com/>
  • * Bill Cheeseman [2005/05/02 05:32 AM -0400] wrote:
    > on 2005-05-01 1:18 PM, Will Cosgrove at <will...> wrote:
    >
    >> I've rebuilt my application on Tiger with gcc 4.0 and went to run it
    >> on 10.2.8 for a sanity check and it no longer launches.  I get a
    >> console message to the effect 'can't find library libmx'.  Is this a
    >> known issue or is there some magical way to get it to compile 10.2.8
    >> compatible binaries again?  It seems like a major oversight not to
    >> check this sort of thing.
    >
    > This has come as a surprise to many of us, who have now more or less
    > unwittingly put Jaguar-crippled apps on the market. And it also
    > apparently prevents an app from running on any version of Panther
    > earlier than 10.3.9.
    >
    > Read the "About Xcode Tools" document. It explains that apps built
    > with the gcc 4 compiler will only run on 10.3.9 and newer. You have
    > to build with the gcc 3 compiler to get Jaguar and early-Panther
    > compatibility, even though you have used the correct cross-
    > development SDKs and build settings.

    What surprises me is that there aren't any warnings as one does this.

    gcc 4.0 is active, and I select a 10.2 deployment target, and the
    10.2 SDK -- why do I get a build?  why don't I get an alert error
    telling me that this just won't work out?

    gcc 4 is active, and I select a 10.3 deployment target, and the 10.3
    SDK -- why don't I get an alert telling me that this will only run
    on 10.3.9 and later?

    In each of these cases, I should get the alert noted, including some
    pointer to the relevant instructions to resolve the issue -- at least,
    if the Xcode team followed the HI guidelines....

    Be seeing you,

    Ted

    --
    A: Yes.                                      http://learn.to/attribute
    | Q: Are you sure?
    | | A: Because it reverses the logical flow of conversation.
    | | | Q: Why is top posting frowned upon?

    Ted Thibodeau, Jr.          //              voice +1-781-273-0900 x32
    Evangelism & Support        //        mailto:<tthibodeau...>
    OpenLink Software, Inc.      //              http://www.openlinksw.com/
                                    http://www.openlinksw.com/weblogs/uda/
    OpenLink Blogs              http://www.openlinksw.com/weblogs/virtuoso/
                                  http://www.openlinksw.com/blog/~kidehen/
        Universal Data Access and Virtual Database Technology Providers
  • I use gcc 4.0 in xcode to build our app and it runs fine on 10.3.0
    7B85. So that statement in the xcode help is not entirely true.

    ~J
    On May 2, 2005, at 11:07 AM, Nick Zitzmann wrote:

    >
    > On May 2, 2005, at 8:51 AM, Sean McBride wrote:
    >
    >
    >> Oh yeah?... Why should this be?  I could understand for C++ that
    >> there
    >> could be ABI changes, but for C/Obj-C?
    >>
    >
    > As explained earlier, GCC 4 links the compiled code to a library
    > titled "libmx", which did not exist in any version of Mac OS X
    > prior to 10.3.9 (I think). GCC 3.3 doesn't do this.
    >
    > Nick Zitzmann
    > <http://www.chronosnet.com/>
    >
    >
    > _______________________________________________
    > Do not post admin requests to the list. They will be ignored.
    > Cocoa-dev mailing list      (<Cocoa-dev...>)
    > Help/Unsubscribe/Update your Subscription:
    > http://lists.apple.com/mailman/options/cocoa-dev/<jolix...>
    >
    > This email sent to <jolix...>
    >
  • On 2 May 2005, at 16:07, Nick Zitzmann wrote:

    >
    > On May 2, 2005, at 8:51 AM, Sean McBride wrote:
    >
    >> Oh yeah?... Why should this be?  I could understand for C++ that
    >> there
    >> could be ABI changes, but for C/Obj-C?
    >
    > As explained earlier, GCC 4 links the compiled code to a library
    > titled "libmx", which did not exist in any version of Mac OS X prior
    > to 10.3.9 (I think). GCC 3.3 doesn't do this.

    Hmm...I am seeing different behavior, though it may be related:  I get
    no references to libmx in my shipped binary (just downloaded and dumped
    via otool -L to be sure).  What I get instead is:

    dyld:
    /Volumes/PdfCompress-4.4.2/PdfCompress.app/Contents/MacOS/PdfCompress
    Undefined symbols:
    MPWGraphRep undefined reference to _cosf expected to be defined in
    /usr/lib/libSystem.B.dylib

    Except of course that this symbol is present in libSystem...

    Marcel

    --
    Marcel Weiher                          Metaobject Software Technologies
    <marcel...>        www.metaobject.com
    The simplicity of power            HOM, IDEAs, MetaAd etc.
            1d480c25f397c4786386135f8e8938e4
  • On May 2, 2005, at 8:22 AM, Ted Thibodeau Jr wrote:

    > What surprises me is that there aren't any warnings as one does this.
    >
    > gcc 4.0 is active, and I select a 10.2 deployment target, and the
    > 10.2 SDK -- why do I get a build?  why don't I get an alert error
    > telling me that this just won't work out?
    >
    > gcc 4 is active, and I select a 10.3 deployment target, and the 10.3
    > SDK -- why don't I get an alert telling me that this will only run
    > on 10.3.9 and later?
    >
    > In each of these cases, I should get the alert noted, including some
    > pointer to the relevant instructions to resolve the issue -- at least,
    > if the Xcode team followed the HI guidelines....

    Possibly because a bug exists?

    Try filing a defect... <http://developer.apple.com/bugreporter/>

    -Shawn
  • on 2005-05-02 10:51 AM, Sean McBride at <sean...> wrote:

    > On 2005-05-02 05:32, Bill Cheeseman said:
    >
    >> Read the "About Xcode Tools" document. It explains that apps built with the
    >> gcc 4 compiler will only run on 10.3.9 and newer. You have to build with the
    >> gcc 3 compiler to get Jaguar and early-Panther compatibility, even though
    >> you have used the correct cross-development SDKs and build settings.
    >
    > Oh yeah?... Why should this be?  I could understand for C++ that there
    > could be ABI changes, but for C/Obj-C?

    I have no idea why Apple did it this way. Perhaps it was an accident.

    I do know that the "About" document is correct, having learned it the hard
    way a few days before releasing my upgraded products for Tiger. I've had to
    disclose on my Web site that they no longer run under Jaguar and that they
    require 10.3.9 to run under Panther. In an update in a few weeks, I will
    rebuild them with gcc 3 and see if that really restores Jaguar and
    early-Panther functionality.

    Based on private correspondence with other developers as well as postings on
    this and the Xcode list, it appears that a number of developers have been
    caught by surprise.

    The issue manifested itself, for me and several others, as my apps'
    inability to load the libmx.A.dylib library at run time, because this
    library does not exist under Jaguar. As far as I know, my app does not call
    any functions in libmx.A.dylib, directly or indirectly, and when built under
    Panther it runs just fine under Jaguar. Others have apparently encountered
    dyblib loading issues with other libraries running under early-Panther.

    --

    Bill Cheeseman - <wjcheeseman...>
    Quechee Software, Quechee, Vermont, USA
    http://www.quecheesoftware.com

    PreFab Software - http://www.prefab.com/scripting.html
    The AppleScript Sourcebook - http://www.AppleScriptSourcebook.com
    Vermont Recipes - http://www.stepwise.com/Articles/VermontRecipes
  • on 2005-05-02 5:32 AM, Bill Cheeseman at <wjcheeseman...> wrote:

    > Read the "About Xcode Tools" document. It explains that apps built with the
    > gcc 4 compiler will only run on 10.3.9 and newer. You have to build with the
    > gcc 3 compiler to get Jaguar and early-Panther compatibility, even though
    > you have used the correct cross-development SDKs and build settings.

    Many apologies and much embarrassment, but I read the "About Xcode Tools"
    document too fast. The 10.3.9 minimum requirement is ONLY for C++ and
    Objective-C++ applications. According to the document, plain Objective-C
    apps built with gcc 4.0 will run all the way back to Mac OS X 10.3.0 -- but
    not on 10.2 Jaguar, which was the original issue.

    --

    Bill Cheeseman - <wjcheeseman...>
    Quechee Software, Quechee, Vermont, USA
    http://www.quecheesoftware.com

    PreFab Software - http://www.prefab.com/scripting.html
    The AppleScript Sourcebook - http://www.AppleScriptSourcebook.com
    Vermont Recipes - http://www.stepwise.com/Articles/VermontRecipes
  • On May 2, 2005, at 9:37 AM, Julian wrote:

    > I use gcc 4.0 in xcode to build our app and it runs fine on 10.3.0
    > 7B85. So that statement in the xcode help is not entirely true.

    You're correct. I just took a look at the contents of the installer
    on my Panther discs, and it does install libmx. So it looks like all
    Panther users can use C and ObjC software compiled using GCC 4.

    However, it doesn't install libstdc++, so only 10.3.9 users can use C+
    + software compiled using GCC 4.

    Nick Zitzmann
    <http://www.chronosnet.com/>
  • on 2005-05-02 9:05 PM, Nick Zitzmann at <nick...> wrote:

    > On May 2, 2005, at 9:37 AM, Julian wrote:
    >
    >> I use gcc 4.0 in xcode to build our app and it runs fine on 10.3.0
    >> 7B85. So that statement in the xcode help is not entirely true.
    >
    > You're correct. I just took a look at the contents of the installer
    > on my Panther discs, and it does install libmx. So it looks like all
    > Panther users can use C and ObjC software compiled using GCC 4.
    >
    > However, it doesn't install libstdc++, so only 10.3.9 users can use C+
    > + software compiled using GCC 4.

    And only 10.3.9 and newer users can use Objective-C++.

    And that's exactly what the "About Xcode Tools" document says,
    notwithstanding my earlier mis-paraphase of it.

    --

    Bill Cheeseman - <wjcheeseman...>
    Quechee Software, Quechee, Vermont, USA
    http://www.quecheesoftware.com

    PreFab Software - http://www.prefab.com/scripting.html
    The AppleScript Sourcebook - http://www.AppleScriptSourcebook.com
    Vermont Recipes - http://www.stepwise.com/Articles/VermontRecipes
previous month may 2005 next month
MTWTFSS
            1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31          
Go to today