Re: Build on 10.5.1, run on 10.3.5, undefined symbols (solved, sort of)
Re: Build on 10.5.1, run on 10.3.5, undefined symbols (solved, sort of)
- Subject: Re: Build on 10.5.1, run on 10.3.5, undefined symbols (solved, sort of)
- From: Stevo Brock <email@hidden>
- Date: Sun, 6 Jan 2008 10:50:12 -0800
Hi Ken,
Thanks for your input. If only it was that simple. I suppose I
should have specified, but we have been doing cross development for
over a year and, as far as I understand it, have our development
environment set up properly, with 10.3 as our deployment target for
PPC and 10.4 for Intel.
The issue really has to do with moving our development environment
from 10.4 to 10.5, thus the reference to the HIShape issue (you can't
call HIShape APIs, build on 10.5 and run on 10.3/10.4 without going
through hoops radr://5626486).
The issue boils down to the fact that
__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ is not defined in gcc3.3
as it should be (as indicated in the headers that use it) (radr://
5626525). Our (workaround) solution is to define this in our
precomp. However, we had not gone far enough and we needed to include
it in our precomps for all our internally built libraries. What we
have added is:
#if defined(__ppc__) && !defined(__ppc64__)
#define __ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__
MAC_OS_X_VERSION_MIN_REQUIRED
#endif
However, even with this, and checking every object and library that is
linked, somehow we still have a mysterious reference to ___stderrp.
i.e. I have run "nm | grep stderr" on all the linked object files and
libraries and find no reference, however running the same on the final
app file reveals a reference. We have added the following line to
resolve the runtime error:
#if defined(__ppc__) && !defined(__ppc64__)
FILE *__stderrp;
#endif
If anyone has any additional insight or ideas, we would certainly
appreciate the input.
-Stevo Brock
Head of Development
Monkey Tools, LLC
www.monkey-tools.com
On Jan 5, 2008, at 2:19 AM, Ken Thomases wrote:
On Jan 4, 2008, at 9:00 PM, Stevo Brock wrote:
I wrote in about a month ago regarding HIShape API symbols not
being found when building on 10.5.x and running on 10.3.x and
10.4.x. Now I have more undefined symbols.
To make it easy, I have just copied the info from the crash log.
How do I go about getting this to go?
What you're trying to do is something which Apple calls "cross
development". See here:
http://developer.apple.com/documentation/DeveloperTools/Conceptual/cross_development/
At least, you will need to set the deployment target to the earliest
version of Mac OS X that you want your application to run on. In
addition, if your project really uses features from later versions
of the OS, you will need to write your code to handle the case where
those features are unavailable.
If you don't make use of any features later than a certain version
of the OS, you should set the SDK used by your project to that
version. That will prevent you from accidentally using features
more modern than you should.
-Ken
_______________________________________________
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