gnustep-dev
[Top][All Lists]
Advanced

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

Re: Getting Objective-C 2.0 working


From: Eric Wasylishen
Subject: Re: Getting Objective-C 2.0 working
Date: Thu, 17 May 2012 23:09:32 -0400

Hi Laurent,

To use blocks in GNUstep you need to use the GNUstep Objective-C runtime, 
a.k.a. libobjc2, whose releases are available here: 
http://download.gna.org/gnustep/  

Unfortunately, I don't think this library is available in debian/ubuntu (though 
I could be wrong!). Confusingly, the package called "libobjc2" in debian/ubuntu 
is unrelated to the GNUstep Objective-C runtime and doesn't support blocks.

So, as far as I know, what you'll need to do is remove the Ubuntu packages for 
gnustep you installed, then install libobjc2 and GNUstep again from the source 
packages. (Latest gnustep releases are at: 
http://wwwmain.gnustep.org/resources/downloads.php)


The Etoile ObjectiveC2 framework no longer exists and isn't something you need 
to worry about. IIRC, the initial support in GNUstep for the modern Objective-C 
runtime api's was started in that framework in Etoile, but that code has since 
been merged into GNUstep and libobjc2.

Hope this helps,

Eric

On 2012-05-17, at 9:27 PM, Laurent Michel wrote:

> Dear All,
> 
> I develop on MaOS and would love to port my code to Linux. Essentially, I use 
> Objective-C 2.0 with clang as a compiler.
> I created an Ubuntu 12.04 VM under VMWare and installed GNUStep through that 
> channel. I compiled a silly hello world and that worked fine.
> My problems started when I tried to compile my own code which makes *heavy* 
> use of Objective-C blocks. I always end-up seeing this message:
> 
> clang -I/usr/GNUstep/System/Library/Headers  -fblocks -fobjc-nonfragile-abi 
> -c CPFactory.m 
> In file included from CPFactory.m:27:
> In file included from ./CPFactory.h:27:
> In file included from 
> /usr/GNUstep/System/Library/Headers/Foundation/Foundation.h:30:
> /usr/GNUstep/System/Library/Headers/GNUstepBase/GSVersionMacros.h:287:14: 
> fatal error: 'objc/blocks_runtime.h' file not found
> 
> 
> namely, it cannot find objc/blocks_runtime.h
> 
> I started googling around and I found lots of conflicting information on the 
> topic as well as reference to Etoile, and ObjectiveC2 (a framework) but it 
> seems largely incompatible with GNUStep. I'll looking for some directions to 
> get going with a simple code that uses blocks. For instance, a silly test 
> like:
> 
> #import <Foundation/NSObject.h>
> 
> int foo(int (^b)(int)) {
>   return b(5);
> }
> 
> int main() {
> 
>   int y = 10;
>   int z = foo(^(int x) {
>        return y + x; 
>      });
>   NSLog(@"result is %d\n",z);
> }
> 
> 
> Should compile and run when linked against the Foundation framework. 
> 
> Any pointer is greatly appreciated.
> 
> --
>  Laurent
> 
> 
> 
> 
> _______________________________________________
> Gnustep-dev mailing list
> address@hidden
> https://lists.gnu.org/mailman/listinfo/gnustep-dev




reply via email to

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