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 <[email protected]> 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 <[email protected]> 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 >> [email protected] >> https://lists.gnu.org/mailman/listinfo/discuss-gnustep > > > > > -- Sent from my brain > _______________________________________________ Discuss-gnustep mailing list [email protected] https://lists.gnu.org/mailman/listinfo/discuss-gnustep
