discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: incompatible ABI when using the GUI


From: Lloyd Sargent
Subject: Re: incompatible ABI when using the GUI
Date: Tue, 22 Oct 2013 08:44:20 -0500

On Oct 22, 2013, at 02:41 , David Chisnall <theraven@sucs.org> wrote:

> On 21 Oct 2013, at 21:01, Lloyd Sargent <lloyd.sargent@gmail.com> wrote:
> 
>> Okay, much of you answer is clear as mud to me as I don't know what they 
>> mean:
>> 
>> 1. non-fragile ABI is indicated by the -fobjc-nonfragile-abi if I'm not 
>> correct. I have compiled the sample program and get the same issue.
> 
> That's the legacy mechanism for doing it.  Now, it's largely subsumed by the 
> -fobjc-runtime= flag.  If you specify gnustep then it will generate code 
> understandable by ANY version of the GNUstep runtime.  This version of the 
> ABI is incompatible with the version required by ARC.  If you specify 
> -fobjc-nonfragile-abi, then it will use the pre-ARC modern ABI, which is 
> compatible with ARC.

This was far more helpful than the previous post and clarifies much.

>> 2. If the issue is that EVERYTHING needs to be compiled with the 
>> -objc-nonfragile-abi, then I'm at a loss at how to do this - nor does the 
>> GNUstep website indicate how to do so.
> 
> Everything must be compiled with an ABI that is compatible with the ABI that 
> is required for ARC.

Yes. The error message implied as such.

I understood what the message meant, what I didn't understand was how to get 
all the pieces aligned correctly. I figured it out on my own yesterday (my 
time).

>> 3. What does gnustep-1.7 mean? Is that the legacy (non-ARC) or the (ARC) or 
>> GC or something altogether different?
> 
> -fobjc-runtime=gnustep-1.7 means generate code that will work on version 1.7 
> (or later) of the GNUstep Objective-C runtime.  This will generate object 
> code with an ABI that is compatible with ARC.

So is gnustep-1.7 the latest? Is this documented somewhere (other than the 
bowels of the mail list)?

>> 4. I appreciate your answer, but it still doesn't suggest a way for me to 
>> get from where I am (code not running) to where I want to be. BTW, 
>> libdispatch and base appear to work just fine, it is the gui that crashes 
>> and burns.
> 
> Well, the easiest way is to use FreeBSD, where you have out-of-the-box 
> packages that Just Work, but in the absence of that:

To which I would say "if I had a choice of OS's I would have picked OS X and be 
done with it as it Just Works". Telling me to use a different OS is not very 
helpful.

> Configure -make with --enable-objc-nonfragile-abi 
> --enable-native-objc-exceptions

Okay, this is helpful. I did not enable native OBJ exceptions, so I will change 
my script. Thanks.

> I'd also recommend configuring -base with --disable-mixedabi (this isn't 
> essential, but if you're building everything with the non-fragile ABI then it 
> will save some memory).

Yes, I finally figured this one out.

> For good measure, I generally set OBJCFLAGS='-fobjc-runtime=gnustep-1.7 
> -fblocks'  GNUstep-make ought to do this automatically, I think, but it 
> doesn't seem to.

I do not build .app because under Linux they are a) poor implementations that 
vaguely mimick OS X and b) 99.9% of the time no one is using a resource that 
needs to change. The goal is a single file.

I would really LIKE to use the .app mechanism, but it appears that neither KDE 
nor GNOME are going to implement it. Using open-app is also pretty silly.

Hence, I do not use GNUstep-make. Not because it isn't a good piece of 
software, but because the result does not meet my end criteria: an executable 
where the resources reside in the executable. The requirement to use open-app 
just makes it even clunkier.

Thank you for the helpful information regarding exceptions.

Cheers,

Lloyd





reply via email to

[Prev in Thread] Current Thread [Next in Thread]