[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: |
Mon, 21 Oct 2013 15:01:24 -0500 |
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.
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.
3. What does gnustep-1.7 mean? Is that the legacy (non-ARC) or the (ARC) or GC
or something altogether different?
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.
5. It's not that I don't appreciate you answer, but I fail to see how it gets
me any closer to where I want to be. Yes, I'm quite aware that things are not
working and there is an ABI mismatch. I think the question is more "how do I
get from this mismatch" to something that is NOT a mismatch.
Cheers,
Lloyd
On Oct 21, 2013, at 10:06 , David Chisnall <theraven@sucs.org> wrote:
> ARC is only supported with the non-fragile ABI. If you specify
> -fobjc-runtime=gnustep and -fobjc-arc, then it should default to the
> equivalent of -fobjc-runtime=gnustep-1.7. The rest of your code appears to
> be compiled with the legacy (GCC-compatible) ABI (-fobjc-runtime=gnustep,
> with no version, which is strongly discouraged).
>
> I'd recommend copying how the packages are built on FreeBSD. The GNUstep and
> libdispatch ports work out of the box in this configuration.
>
> David
>
> On 21 Oct 2013, at 15:16, Lloyd Sargent <lloyd.sargent@gmail.com> wrote:
>
>> Basically, I followed the instructions here:
>> http://wiki.gnustep.org/index.php/GNUstep_under_Ubuntu_Linux
>>
>> With the extra step of building the gui and back.
>>
>> If I build and run a non-gui program, all works well. Only when I add
>> something that uses the gui, like the following:
>>
>> // Created by Tobias Lensing on 2/22/13.
>> #import <Foundation/Foundation.h>
>> #import <AppKit/AppKit.h>
>> #import <dispatch/dispatch.h>
>>
>> int main(int argc, const char * argv[])
>> {
>> @autoreleasepool {
>> int multiplier = 7;
>> int (^myBlock)(int) = ^(int num) {
>> return num * multiplier;
>> };
>>
>> NSLog(@"%d", myBlock(3));
>>
>> dispatch_queue_t queue = dispatch_queue_create(NULL, NULL);
>>
>> dispatch_sync(queue, ^{
>> printf("Hello, world from a dispatch queue!\n");
>> });
>>
>> // dispatch_release(queue); // ARC takes care of this
>> }
>>
>> @autoreleasepool {
>> [NSApplication sharedApplication];
>> NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);
>> }
>>
>> return 0;
>> }
>>
>> I compile this with the following:
>>
>> clang `gnustep-config --objc-flags` `gnustep-config --objc-libs`
>> -fobjc-arc -fobjc-runtime=gnustep -fblocks -lobjc -ldispatch -lgnustep-gui
>> test.m
>>
>> It compiles and links with no errors.
>>
>> When I run it, however, it spits out the following ugly-gram:
>>
>> Hello, world from a dispatch queue!
>> Objective-C ABI Error: Loading modules from incompatible ABI's while
>> loading .GSBackend.m
>> a.out: /home/lloyd/projects/ThirdParty/BuildGnuStep/libobjc2/loader.c:53:
>> void __objc_exec_class(struct objc_module_abi_8 *): Assertion
>> `objc_check_abi_verion(module)' failed.
>> Aborted (core dumped)
>>
>> I have assured myself that there is no other version of libobjc (this is on
>> a virtual machine so I can go back redo my steps).
>>
>> Commenting out the following:
>>
>> // [NSApplication sharedApplication];
>> // NSRunAlertPanel(@"Test", @"Wow it works!", @"OK", nil, nil);
>>
>> and everything compiles and runs, aside from the GUI obviously.
>>
>> How can I have two ABI's when I build everything from scratch? Do I need to
>> configure the GUI differently? I've been puzzling over this for a couple of
>> weeks.
>>
>> My goal is to have ARC, the GUI and (optionally) blocks.
>>
>>
>> _______________________________________________
>> Discuss-gnustep mailing list
>> Discuss-gnustep@gnu.org
>> https://lists.gnu.org/mailman/listinfo/discuss-gnustep
>
>
>
>
> -- Sent from my brain
>