Thank you for the suggestions, Niels. I will give them a try.  Good idea to 
post on the Wiki-- I've now done so:

http://wiki.gnustep.org/index.php/GNUstep_under_Ubuntu_Linux

(The page is not yet linked from anywhere on the site.) I look forward to any 
improvements you or others may contribute.  

Best,
Patryk

On Aug 12, 2012, at 2:44 PM, Niels Grewe <[email protected]> wrote:

> Hi Patryk,
> 
> Am 11.08.2012 18:52, schrieb Patryk Laurent:
>> Below are some step-by-step instructions on installing libobjc2 and 
>> libdispatch on Ubuntu 12.04 server.
> 
> Many thanks for the write-up. I didn't try it out, put from looking over
> it, it does seem like it should work ;-). I have two remarks, though:
> 
>> # --------------------------------------------------------------------
>> # 1) Install GNUstep Make a first time.
>> # --------------------------------------------------------------------
> 
> 
> I do seem to recall that this shouldn't be necessary anymore. If you
> build libobjc2 using `make -f Makefile', it should build fine and you
> can skip right to step 3.
> 
> 
>> # --------------------------------------------------------------------
>> # Testing
>> # --------------------------------------------------------------------
>> # Plain C: When not compiling with libobjc2 (just plain C) on Ubuntu you 
>> must add -lBlocksRuntime
>> # --------------------------------------------------------------------
>> 
>> clang -o hi helloGCD.c -fblocks -ldispatch -lBlocksRuntime
>> ./hi
>> 
>> clang -o hi helloGCD.c -fblocks -ldispatch
>> # /usr/bin/ld: /tmp/helloGCD-eXxFYY.o: undefined reference to symbol 
>> '_NSConcreteGlobalBlock'
>> # /usr/bin/ld: note: '_NSConcreteGlobalBlock' is defined in DSO 
>> /usr/lib/libBlocksRuntime.so.0 
>> # so try adding it to the linker command line
>> # /usr/lib/libBlocksRuntime.so.0: could not read symbols: Invalid operation
>> # clang: error: linker command failed with exit code 1 (use -v to see 
>> invocation)
>> 
>> 
>> 
>> # --------------------------------------------------------------------
>> # Compiling Objective C with ARC and blocks and libdispatch
>> # --------------------------------------------------------------------
>> # Note: do not use -lBlocksRuntime here since Apple on is not 
>> # compatible with the libobjc2 one which has its own. (Note from 
>> # David Chisnall)
>> # --------------------------------------------------------------------
>> 
>> clang `gnustep-config --objc-flags` `gnustep-config --objc-libs` -fobj-arc 
>> -fobjc-nonfragile-abi -fblocks  helloGCD_objc.m Fraction.m -o test -lobjc 
>> -lgnustep-base -ldispatch
>> ./test
> 
> 
> The way you're building libdispatch is a bit rotten, since -- as you
> mention in passing -- you can either link it with libBlocksRuntime or
> with libobjc2 but not both at the same time. This will cause you trouble
> if you're trying to link a C library that uses libdispatch (and
> libBlocksRuntime) with Objective-C code using libobjc2. There are two
> possible workarounds for this problem. You can a) apply my patch from
> [0] to libdispatch in order for it to use libobjc2 as its native blocks
> runtime (and never even bother to install libBlocksRuntime), or you can
> use Mark Heily's branch of libBlocksRuntime [1] that turns all the
> exported symbols into weak symbols so that libobjc2 can override them
> (he somewhat promised that this would be merged into trunk, but it
> doesn't seem that he got around to doing that yet).
> 
> 
> But anyways: Is there any chance that you could put your howto up on the
> wiki, so that is accessible for collaborative editing?
> 
> Cheers,
> 
> Niels
> 
> 
> [0]
> http://www.halbordnung.de/~niels.grewe/gnustep/libdispatch-libobjc2.patch
> [1] svn://mark.heily.com/libBlocksRuntime/branches/objc2
> 
> 
> _______________________________________________
> Discuss-gnustep mailing list
> [email protected]
> https://lists.gnu.org/mailman/listinfo/discuss-gnustep
_______________________________________________
Discuss-gnustep mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/discuss-gnustep

Reply via email to