<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.gnustep.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sdw</id>
	<title>GNUstepWiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.gnustep.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Sdw"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php/Special:Contributions/Sdw"/>
	<updated>2026-06-23T02:55:39Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.7</generator>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=User_Guides&amp;diff=6554</id>
		<title>User Guides</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=User_Guides&amp;diff=6554"/>
		<updated>2013-06-03T12:54:47Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended as a collection of guides for users.&lt;br /&gt;
&lt;br /&gt;
== Installing GNUstep ==&lt;br /&gt;
&lt;br /&gt;
Installation can be easy or complex, depending on the system you use. If you encounter problems that aren't discussed here, please [[Get Help|ask for help on the mailing lists]].&lt;br /&gt;
&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto_toc.html GNUstep Installation] instructions or [[Installation | Simple Installation]] ([http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto.pdf PDF], [http://www.gnustep.org/resources/documentation/GNUstep-HOWTO-Italian.text Italian])&lt;br /&gt;
* Make sure you also check the [[Platform_compatibility|platform-specific]] instructions as well.&lt;br /&gt;
* Comprehensive [http://gnustep.made-it.com/BuildGuide/ build guide] for GNUstep on GNU/Linux.&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/Gui/KeyboardSetup.html User Keyboard Setup]&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/Gui/LanguageSetup.html Setup for East Asian Languages]&lt;br /&gt;
* User Defaults ([http://www.gnustep.org/resources/documentation/User/Gui/DefaultsSummary.html GUI]) ([http://www.gnustep.org/resources/documentation/Developer/Back/General/DefaultsSummary.html Back])&lt;br /&gt;
* [[GNUstep SVN Installation Guide]]&lt;br /&gt;
&lt;br /&gt;
* [http://svn.gna.org/svn/etoile/trunk/Etoile/INSTALL.Ubuntu GNUstep and Étoilé dependency list]&lt;br /&gt;
* [[Building GNUstep with Clang]]&lt;br /&gt;
* [http://artinamessage.wordpress.com/2013/06/03/gnustep-install-with-clang-blocks-and-grand-central-dispatch-gcd/ Building GNUstep with clang, blocks, and Grand Central Dispatch] &lt;br /&gt;
&lt;br /&gt;
== Using GNUstep ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Applications|User Applications]]&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/GNUstep/filesystem_toc.html Filesystem Layout] ([http://www.gnustep.org/resources/documentation/User/GNUstep/filesystem.pdf PDF])&lt;br /&gt;
* [[User_FAQ|GNUstep Users' FAQ]] ([http://www.gnustep.org/resources/documentation/User/GNUstep/userfaq.pdf PDF])&lt;br /&gt;
* [[Get Help|Mailing Lists, IRC and Newsgroups]]&lt;br /&gt;
* [[Cross Compiling]]&lt;br /&gt;
* [http://gnustep.files.wordpress.com/2010/11/objective-c_gnustep.pdf Manual de Objective-C y GNUstep (PDF en español)]&lt;br /&gt;
* [[Changing GNUStep Theme]]&lt;br /&gt;
&lt;br /&gt;
== Other Info ==&lt;br /&gt;
&lt;br /&gt;
* News and info:&lt;br /&gt;
** [http://freshmeat.net/browse/806/?topic_id=806 Freshmeat]&lt;br /&gt;
** [http://www.gnustep.wordpress.com/ GNUstep en español] - Noticias e información&lt;br /&gt;
* Projects:&lt;br /&gt;
** [[:Category:Desktop Environments|Desktop Environments]]&lt;br /&gt;
*** [http://www.nongnu.org/backbone/ Backbone] - GNUstep Desktop project&lt;br /&gt;
*** [http://www.etoile-project.org/ Étoilé] - GNUstep based user environment&lt;br /&gt;
*** [http://www.nongnu.org/gap/ GAP] - GNUstep Application Project&lt;br /&gt;
** Live CDs&lt;br /&gt;
*** [http://io.debian.net/~tar/gnustep/ GNUstep Live CD Project] - based on Debian&lt;br /&gt;
* Developer sites:&lt;br /&gt;
** [[For_Developers | Developers]] - List of developers&lt;br /&gt;
** [http://www.gnustep.it/ GNUstep.it] - Italian developer site&lt;br /&gt;
** [http://www.advogato.org/proj/GNUstep/ Advogato] - basic GNUstep project info and links to some developer diaries&lt;br /&gt;
** [http://www.collaboration-world.com/ Collaboration World] - home to GNUMail, Affiche and more&lt;br /&gt;
** [http://www.roard.com/docs/ GNUstep HelpCenter]&lt;br /&gt;
** [http://freshmeat.net/projects/gnustep-icons/ GNUstep Icons project]&lt;br /&gt;
* [[Success_Stories | GNUstep Success Stories]]&lt;br /&gt;
&lt;br /&gt;
== Stores ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cafepress.com/openlogic &amp;quot;Openlogic&amp;quot; GNUstep store] - A portion of these proceeds go to the FSF and GNUstep.&lt;br /&gt;
* The GNUstep project does not sponsor or benefit from these items:&lt;br /&gt;
** [http://www.cafepress.com/gnustep &amp;quot;GNUstep&amp;quot; store]&lt;br /&gt;
** [http://www.cafepress.com/opengnustep &amp;quot;OPENGNUstep&amp;quot; store]&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=User_Guides&amp;diff=6553</id>
		<title>User Guides</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=User_Guides&amp;diff=6553"/>
		<updated>2013-06-03T03:26:12Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended as a collection of guides for users.&lt;br /&gt;
&lt;br /&gt;
== Installing GNUstep ==&lt;br /&gt;
&lt;br /&gt;
Installation can be easy or complex, depending on the system you use. If you encounter problems that aren't discussed here, please [[Get Help|ask for help on the mailing lists]].&lt;br /&gt;
&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto_toc.html GNUstep Installation] instructions or [[Installation | Simple Installation]] ([http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto.pdf PDF], [http://www.gnustep.org/resources/documentation/GNUstep-HOWTO-Italian.text Italian])&lt;br /&gt;
* Make sure you also check the [[Platform_compatibility|platform-specific]] instructions as well.&lt;br /&gt;
* Comprehensive [http://gnustep.made-it.com/BuildGuide/ build guide] for GNUstep on GNU/Linux.&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/Gui/KeyboardSetup.html User Keyboard Setup]&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/Gui/LanguageSetup.html Setup for East Asian Languages]&lt;br /&gt;
* User Defaults ([http://www.gnustep.org/resources/documentation/User/Gui/DefaultsSummary.html GUI]) ([http://www.gnustep.org/resources/documentation/Developer/Back/General/DefaultsSummary.html Back])&lt;br /&gt;
* [[GNUstep SVN Installation Guide]]&lt;br /&gt;
&lt;br /&gt;
* [http://svn.gna.org/svn/etoile/trunk/Etoile/INSTALL.Ubuntu GNUstep and Étoilé dependency list]&lt;br /&gt;
* [[Building GNUstep with Clang]]&lt;br /&gt;
&lt;br /&gt;
== Using GNUstep ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Applications|User Applications]]&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/GNUstep/filesystem_toc.html Filesystem Layout] ([http://www.gnustep.org/resources/documentation/User/GNUstep/filesystem.pdf PDF])&lt;br /&gt;
* [[User_FAQ|GNUstep Users' FAQ]] ([http://www.gnustep.org/resources/documentation/User/GNUstep/userfaq.pdf PDF])&lt;br /&gt;
* [[Get Help|Mailing Lists, IRC and Newsgroups]]&lt;br /&gt;
* [[Cross Compiling]]&lt;br /&gt;
* [http://gnustep.files.wordpress.com/2010/11/objective-c_gnustep.pdf Manual de Objective-C y GNUstep (PDF en español)]&lt;br /&gt;
* [[Changing GNUStep Theme]]&lt;br /&gt;
&lt;br /&gt;
== Other Info ==&lt;br /&gt;
&lt;br /&gt;
* News and info:&lt;br /&gt;
** [http://freshmeat.net/browse/806/?topic_id=806 Freshmeat]&lt;br /&gt;
** [http://www.gnustep.wordpress.com/ GNUstep en español] - Noticias e información&lt;br /&gt;
* Projects:&lt;br /&gt;
** [[:Category:Desktop Environments|Desktop Environments]]&lt;br /&gt;
*** [http://www.nongnu.org/backbone/ Backbone] - GNUstep Desktop project&lt;br /&gt;
*** [http://www.etoile-project.org/ Étoilé] - GNUstep based user environment&lt;br /&gt;
*** [http://www.nongnu.org/gap/ GAP] - GNUstep Application Project&lt;br /&gt;
** Live CDs&lt;br /&gt;
*** [http://io.debian.net/~tar/gnustep/ GNUstep Live CD Project] - based on Debian&lt;br /&gt;
* Developer sites:&lt;br /&gt;
** [[For_Developers | Developers]] - List of developers&lt;br /&gt;
** [http://www.gnustep.it/ GNUstep.it] - Italian developer site&lt;br /&gt;
** [http://www.advogato.org/proj/GNUstep/ Advogato] - basic GNUstep project info and links to some developer diaries&lt;br /&gt;
** [http://www.collaboration-world.com/ Collaboration World] - home to GNUMail, Affiche and more&lt;br /&gt;
** [http://www.roard.com/docs/ GNUstep HelpCenter]&lt;br /&gt;
** [http://freshmeat.net/projects/gnustep-icons/ GNUstep Icons project]&lt;br /&gt;
* [[Success_Stories | GNUstep Success Stories]]&lt;br /&gt;
&lt;br /&gt;
== Stores ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cafepress.com/openlogic &amp;quot;Openlogic&amp;quot; GNUstep store] - A portion of these proceeds go to the FSF and GNUstep.&lt;br /&gt;
* The GNUstep project does not sponsor or benefit from these items:&lt;br /&gt;
** [http://www.cafepress.com/gnustep &amp;quot;GNUstep&amp;quot; store]&lt;br /&gt;
** [http://www.cafepress.com/opengnustep &amp;quot;OPENGNUstep&amp;quot; store]&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6552</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6552"/>
		<updated>2013-06-03T03:25:31Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6551</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6551"/>
		<updated>2013-06-03T03:18:15Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch on Linux.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. The library for Grand Central Dispatch is called libdispatch, and tasks can be submitted to GCD in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes down to the install instructions.&lt;br /&gt;
=== GNUstep runtime ===&lt;br /&gt;
So far as GNUstep, the runtime library for Objective C code used to be called libobjc until Apple released Objective C version 2, and then is called libobjc2. You can get the background here: http://wiki.gnustep.org/index.php/ObjC2_FAQ .  (Note Debian and Ubuntu libobjc3 and libobjc4 are  still based on libobjc and libobjc2 but numbered differently).&lt;br /&gt;
* libobjc2 built with GCC 4.6 and 4.7 has most of Objective C v2 supported, but doesn't have blocks support&lt;br /&gt;
* libobjc2 built with Clang does have block support: (use -fblocks flag when compiling your own code)&lt;br /&gt;
* GNUstep provides block support, whether the compiler does or not. So if using GNUstep, you can use blocks with a GCC libobjc2.&lt;br /&gt;
* libdispatch currently has some build requirements that necessitate using clang.&lt;br /&gt;
So we're going with a clang build since a working GCD is the aim here. &lt;br /&gt;
&lt;br /&gt;
Next, we observe that Debian wheezy and Ubuntu 13 have a libdispatch infrastructure built on clang (libobjc2 and libdispatch are built using clang). So there are some more decisions:-&lt;br /&gt;
Why not just run with what Debian provides instead of compiling from scratch, i.e. &lt;br /&gt;
* libobjc2, libdispatch, cblocksruntime compiled with erlang&lt;br /&gt;
* gnustep programs compiled with gcc&lt;br /&gt;
To make a decision, here is some background on GCD and blocks&lt;br /&gt;
* GCD: As far as I can make out, there are two implementations of GCD out there for Linux. One by [https://www.heily.com/trac/libdispatch/ Mark Heily] and one called [http://opensource.mlba-team.de/xdispatch/docs/current/index.html libxdispatch]. So far as using GCD with GNUstep, Mark's library is the one to use, and this is also the libdispatch library in Debian and Ubuntu.&lt;br /&gt;
* GCD is more than just a C library. It requires support from the kernel with light threads (libpthread), and an adptation of BSD signals for Linux (libkqueue).&lt;br /&gt;
* Blocks: Using blocks with GCD will often result in simpler and more elegant code, but blocks are not part of standard C. Mark provides a 'blocks' library called 'libblocksruntime', but even better, GNUstep has its own implementation of blocks. The two libarires are based on Apples blocks library and have the same API. However, what is not obvious is that the ABI of libblocksruntime is C, however the ABI of GNUstep is objective C. And mixing the two ABIs could lead to memory corruption under certain circumstances. ([https://github.com/nickhutchinson/libdispatch/issues/2 See xcvista's second comment].)&lt;br /&gt;
In fact, I did try to get libdispatch working on Kubuntu 13. I found that the gcc package must be installed in order to get the objc.h header to compile against, and I had to put the location of objc.h in &amp;lt;GNUstep root&amp;gt;/Makefiles/config.make, as well as adding clang in there. Being new to GNUstep I had a couple of other issues, and I started having the &amp;quot;bad smell&amp;quot; feeling that goes with graunching two ABIs. In addition, expert posts to the gnustep-discuss newsgroup this year consistently recommended installing from source, so to the the source we go.&lt;br /&gt;
&lt;br /&gt;
== libobjc2 and gnustep-base installation from source ==&lt;br /&gt;
Ivan Vucica has a handy install script for download: https://bitbucket.org/ivucica/&lt;br /&gt;
* I recommend you have a fresh Debian or Ubuntu installation. If not, you should remove all gnustep packages, libobjc* packages, libdispatch* packages, and libblocksruntime* packages.&lt;br /&gt;
* I ran installs on both Gentoo/Funtoo Linux and Kubuntu 13. Funtoo takes a while to setup, but c&lt;br /&gt;
And now with reference to Ivan's script, here are issues I found:-                               &lt;br /&gt;
* Kubuntu 13 doesn't seem to have an openssl-dev package so left it out.                         &lt;br /&gt;
* libobjc2 uses cmake now. I tried to &amp;quot;make&amp;quot; as per the script, and it failed. There were build i&lt;br /&gt;
* you can run &amp;quot;make check&amp;quot; at the end of the gnustep-base install to run the tests&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6550</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6550"/>
		<updated>2013-06-03T03:15:31Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch on Linux.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. The library for Grand Central Dispatch is called libdispatch, and tasks can be submitted to GCD in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes down to the install instructions.&lt;br /&gt;
=== GNUstep runtime ===&lt;br /&gt;
So far as GNUstep, the runtime library for Objective C code used to be called libobjc until Apple released Objective C version 2, and then is called libobjc2. You can get the background here: http://wiki.gnustep.org/index.php/ObjC2_FAQ .  (Note Debian and Ubuntu libobjc3 and libobjc4 are  still based on libobjc and libobjc2 but numbered differently).&lt;br /&gt;
* libobjc2 built with GCC 4.6 and 4.7 has most of Objective C v2 supported, but doesn't have blocks support&lt;br /&gt;
* libobjc2 built with Clang does have block support: (use -fblocks flag when compiling your own code)&lt;br /&gt;
* GNUstep provides block support, whether the compiler does or not. So if using GNUstep, you can use blocks with a GCC libobjc2.&lt;br /&gt;
* libdispatch currently has some build requirements that necessitate using clang.&lt;br /&gt;
So we're going with a clang build since a working GCD is the aim here. &lt;br /&gt;
&lt;br /&gt;
Next, we observe that Debian wheezy and Ubuntu 13 have a libdispatch infrastructure built on clang (libobjc2 and libdispatch are built using clang). So there are some more decisions:-&lt;br /&gt;
Why not just run with what Debian provides instead of compiling from scratch, i.e. &lt;br /&gt;
* libobjc2, libdispatch, cblocksruntime compiled with erlang&lt;br /&gt;
* gnustep programs compiled with gcc&lt;br /&gt;
To make a decision, here is some background on GCD and blocks&lt;br /&gt;
* GCD: As far as I can make out, there are two implementations of GCD out there for Linux. One by [https://www.heily.com/trac/libdispatch/ Mark Heily] and one called [http://opensource.mlba-team.de/xdispatch/docs/current/index.html libxdispatch]. So far as using GCD with GNUstep, Mark's library is the one to use, and this is also the libdispatch library in Debian and Ubuntu.&lt;br /&gt;
* GCD is more than just a C library. It requires support from the kernel with light threads (libpthread), and an adptation of BSD signals for Linux (libkqueue).&lt;br /&gt;
* Blocks: Using blocks with GCD will often result in simpler and more elegant code, but blocks are not part of standard C. Mark provides a 'blocks' library called 'libblocksruntime', but even better, GNUstep has its own implementation of blocks. The two libarires are based on Apples blocks library and have the same API. However, what is not obvious is that the ABI of libblocksruntime is C, however the ABI of GNUstep is objective C. And mixing the two ABIs could lead to memory corruption under certain circumstances. ([https://github.com/nickhutchinson/libdispatch/issues/2 See xcvista's second comment].)&lt;br /&gt;
In fact, I did try to get libdispatch working on Kubuntu 13. I found that the gcc package must be installed in order to get the objc.h header to compile against, and I had to put the location of objc.h in &amp;lt;GNUstep root&amp;gt;/Makefiles/config.make, as well as adding clang in there. Being new to GNUstep I had a couple of other issues, and I started having the &amp;quot;bad smell&amp;quot; feeling that goes with graunching two ABIs. In addition, expert posts to the gnustep-discuss newsgroup this year consistently recommended installing from source, so to the the source we go.&lt;br /&gt;
&lt;br /&gt;
== libobjc2 and gnustep-base installation from source ==&lt;br /&gt;
Ivan Vucica has a handy install script [https://bitbucket.org/ivucica/gnustep-ubuntu GNUstep libobjc2 on Ubuntu.sh]- click on the &amp;quot;source&amp;quot; link to get the script. &lt;br /&gt;
* I recommend you have a fresh Debian or Ubuntu installation. If not, you should remove all gnustep packages, libobjc* packages, libdispatch* packages, and libblocksruntime* packages.&lt;br /&gt;
* I ran installs on both Gentoo/Funtoo Linux and Kubuntu 13. Funtoo takes a while to setup, but can be simpler for something like this because there is no other cruft around. So far as clang on Funtoo, there is a guide for this, and I chose to use clang for all the programs related to this project and gcc for everything else, i.e. I used clang for libobjc2, gnustep-*, libdispatch. Gentoo config files at the end of this post.&lt;br /&gt;
And now with reference to Ivan's script, here are issues I found:-&lt;br /&gt;
* Kubuntu 13 doesn't seem to have an openssl-dev package so left it out.&lt;br /&gt;
* libobjc2 uses cmake now. I tried to &amp;quot;make&amp;quot; as per the script, and it failed. I&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6549</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6549"/>
		<updated>2013-06-03T03:02:08Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch on Linux.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. The library for Grand Central Dispatch is called libdispatch, and tasks can be submitted to GCD in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes down to the install instructions.&lt;br /&gt;
=== GNUstep runtime ===&lt;br /&gt;
So far as GNUstep, the runtime library for Objective C code used to be called libobjc until Apple released Objective C version 2, and then is called libobjc2. You can get the background here: http://wiki.gnustep.org/index.php/ObjC2_FAQ .  (Note Debian and Ubuntu libobjc3 and libobjc4 are  still based on libobjc and libobjc2 but numbered differently).&lt;br /&gt;
* libobjc2 built with GCC 4.6 and 4.7 has most of Objective C v2 supported, but doesn't have blocks support&lt;br /&gt;
* libobjc2 built with Clang does have block support: (use -fblocks flag when compiling your own code)&lt;br /&gt;
* GNUstep provides block support, whether the compiler does or not. So if using GNUstep, you can use blocks with a GCC libobjc2.&lt;br /&gt;
* libdispatch currently has some build requirements that necessitate using clang.&lt;br /&gt;
So we're going with a clang build since a working GCD is the aim here. &lt;br /&gt;
&lt;br /&gt;
Next, we observe that Debian wheezy and Ubuntu 13 have a libdispatch infrastructure built on clang (libobjc2 and libdispatch are built using clang). So there are some more decisions:-&lt;br /&gt;
Why not just run with what Debian provides instead of compiling from scratch, i.e. &lt;br /&gt;
* libobjc2, libdispatch, cblocksruntime compiled with erlang&lt;br /&gt;
* gnustep programs compiled with gcc&lt;br /&gt;
To make a decision, here is some background on GCD and blocks&lt;br /&gt;
* GCD: As far as I can make out, there are two implementations of GCD out there for Linux. One by [https://www.heily.com/trac/libdispatch/ Mark Heily] and one called [http://opensource.mlba-team.de/xdispatch/docs/current/index.html libxdispatch]. So far as using GCD with GNUstep, Mark's library is the one to use, and this is also the libdispatch library in Debian and Ubuntu.&lt;br /&gt;
* GCD is more than just a C library. It requires support from the kernel with light threads (libpthread), and an adptation of BSD signals for Linux (libkqueue).&lt;br /&gt;
* Blocks: Using blocks with GCD will often result in simpler and more elegant code, but blocks are not part of standard C. Mark provides a 'blocks' library called 'libblocksruntime', but even better, GNUstep has its own implementation of blocks. The two libarires are based on Apples blocks library and have the same API. However, what is not obvious is that the ABI of libblocksruntime is C, however the ABI of GNUstep is objective C. And mixing the two ABIs could lead to memory corruption under certain circumstances. ([https://github.com/nickhutchinson/libdispatch/issues/2 See xcvista's second comment].)&lt;br /&gt;
In fact, I did try to get libdispatch working on Kubuntu 13. I found that the gcc package must be installed in order to get the objc.h header to compile against, and I had to put the location of objc.h in &amp;lt;GNUstep root&amp;gt;/Makefiles/config.make, as well as adding clang in there. Being new to GNUstep I had a couple of other issues, and I started having the &amp;quot;bad smell&amp;quot; feeling that goes with graunching two ABIs. In addition, expert posts to the gnustep-discuss newsgroup this year consistently recommended installing from source, so to the the source we go.&lt;br /&gt;
&lt;br /&gt;
== libobjc2 and gnustep-base installation from source ==&lt;br /&gt;
Ivan Vucica has a handy install script [https://bitbucket.org/ivucica/gnustep-ubuntu GNUstep libobjc2 on Ubuntu.sh]for download. &lt;br /&gt;
* I recommend you have a fresh Debian or Ubuntu installation. If not, you should remove all gnustep packages, libobjc* packages, libdispatch* packages, and libblocksruntime* packages.&lt;br /&gt;
* I ran installs on both Gentoo/Funtoo Linux and Kubuntu 13. Funtoo takes a while to setup, but can be simpler for something like this because there is no other cruft around. Some Funtoo clang config files at the bottom.&lt;br /&gt;
And now with reference to Ivan's script, here are issues I found:-&lt;br /&gt;
* Kubuntu 13 doesn't seem to have an openssl-dev package so left it out.&lt;br /&gt;
*&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6548</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6548"/>
		<updated>2013-06-03T02:51:42Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch on Linux.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. The library for Grand Central Dispatch is called libdispatch, and tasks can be submitted to GCD in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes down to the install instructions.&lt;br /&gt;
=== GNUstep runtime ===&lt;br /&gt;
So far as GNUstep, the runtime library for Objective C code used to be called libobjc until Apple released Objective C version 2, and then is called libobjc2. You can get the background here: http://wiki.gnustep.org/index.php/ObjC2_FAQ .  (Note Debian and Ubuntu libobjc3 and libobjc4 are  still based on libobjc and libobjc2 but numbered differently).&lt;br /&gt;
* libobjc2 built with GCC 4.6 and 4.7 has most of Objective C v2 supported, but doesn't have blocks support&lt;br /&gt;
* libobjc2 built with Clang does have block support: (use -fblocks flag when compiling your own code)&lt;br /&gt;
* GNUstep provides block support, whether the compiler does or not. So if using GNUstep, you can use blocks with a GCC libobjc2.&lt;br /&gt;
* libdispatch currently has some build requirements that necessitate using clang.&lt;br /&gt;
So we're going with a clang build since a working GCD is the aim here. &lt;br /&gt;
&lt;br /&gt;
Next, we observe that Debian wheezy and Ubuntu 13 have a libdispatch infrastructure built on clang (libobjc2 and libdispatch are built using clang). So there are some more decisions:-&lt;br /&gt;
Why not just run with what Debian provides instead of compiling from scratch, i.e. &lt;br /&gt;
* libobjc2, libdispatch, cblocksruntime compiled with erlang&lt;br /&gt;
* gnustep programs compiled with gcc&lt;br /&gt;
To make a decision, here is some background on GCD and blocks&lt;br /&gt;
* GCD: As far as I can make out, there are two implementations of GCD out there for Linux. One by [https://www.heily.com/trac/libdispatch/ Mark Heily] and one called [http://opensource.mlba-team.de/xdispatch/docs/current/index.html libxdispatch]. So far as using GCD with GNUstep, Mark's library is the one to use, and this is also the libdispatch library in Debian and Ubuntu.&lt;br /&gt;
* GCD is more than just a C library. It requires support from the kernel with light threads (libpthread), and an adptation of BSD signals for Linux (libkqueue).&lt;br /&gt;
* Blocks: Using blocks with GCD will often result in simpler and more elegant code, but blocks are not part of standard C. Mark provides a 'blocks' library called 'libblocksruntime', but even better, GNUstep has its own implementation of blocks. The two libarires are based on Apples blocks library and have the same API. However, what is not obvious is that the ABI of libblocksruntime is C, however the ABI of GNUstep is objective C. And mixing the two ABIs could lead to memory corruption under certain circumstances. ([https://github.com/nickhutchinson/libdispatch/issues/2 See xcvista's second comment].)&lt;br /&gt;
In fact, I did try to get libdispatch working on Kubuntu 13. I found that the gcc package must be installed in order to get the objc.h header to compile against, and I had to put the location of objc.h in &amp;lt;GNUstep root&amp;gt;/Makefiles/config.make, as well as adding clang in there. Being new to GNUstep I had a couple of other issues, and I started having the &amp;quot;bad smell&amp;quot; feeling that goes with graunching two ABIs. In addition, expert posts to the gnustep-discuss newsgroup this year consistently recommended installing from source, so to the the source we go.&lt;br /&gt;
&lt;br /&gt;
== libobjc2 and gnustep-base installation from source ==&lt;br /&gt;
Ivan Vucica has a handy install script for download: https://bitbucket.org/ivucica/&lt;br /&gt;
* I recommend you have a fresh Debian or Ubuntu installation. If not, you should remove all gnustep packages, libobjc* packages, libdispatch* packages, and libblocksruntime* packages.&lt;br /&gt;
* I ran installs on both Gentoo Linux and Kubuntu 13. Gentoo takes a while to setup, but can be simpler for something like this because there is no other cruft around.&lt;br /&gt;
* A gentoo install note on clang: I chose to use clang for everyting related to GNUstep, and gcc for the rest of the system. See end of this article for the config files&lt;br /&gt;
&lt;br /&gt;
------------------------------------&lt;br /&gt;
Gentoo configuration&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
$ cat /etc/portage/package.env&lt;br /&gt;
gnustep-base/libobjc2   clang&lt;br /&gt;
dev-libs/boehm-gc       clang&lt;br /&gt;
dev-libs/libatomic_ops  clang&lt;br /&gt;
dev-libs/nettle         clang&lt;br /&gt;
gnustep-base/gnustep-make       clang&lt;br /&gt;
dev-libs/libtasn1       clang&lt;br /&gt;
net-libs/gnutls         clang&lt;br /&gt;
gnustep-base/gnustep-base       clang&lt;br /&gt;
app-arch/libarchive     clang&lt;br /&gt;
dev-util/cmake          clang&lt;br /&gt;
dev-libs/compiler-rt    clang&lt;br /&gt;
gnustep-base/gnustep-gui        clang&lt;br /&gt;
gnustep-base/gnustep-back-cairo clang&lt;br /&gt;
virtual/gnustep-back            clang&lt;br /&gt;
gnustep-apps/projectcenter      clang&lt;br /&gt;
&lt;br /&gt;
$ cat /etc/portage/env/clang &lt;br /&gt;
CC=clang&lt;br /&gt;
CXX=clang++&lt;br /&gt;
#CFLAGS=&amp;quot;-march=core2 -O2 -pipe &amp;quot;&lt;br /&gt;
CFLAGS=&amp;quot;-march=core2 -O2 -pipe -fblocks &amp;quot;&lt;br /&gt;
#CFLAGS=&amp;quot;-march=core2 -O2 -pipe -pthread -fblocks&amp;quot;&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
�&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6547</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6547"/>
		<updated>2013-06-03T02:40:34Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch on Linux.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. The library for Grand Central Dispatch is called libdispatch, and tasks can be submitted to GCD in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes down to the install instructions.&lt;br /&gt;
=== GNUstep runtime ===&lt;br /&gt;
So far as GNUstep, the runtime library for Objective C code used to be called libobjc until Apple released Objective C version 2, and then is called libobjc2. You can get the background here: http://wiki.gnustep.org/index.php/ObjC2_FAQ .  (Note Debian and Ubuntu libobjc3 and libobjc4 are  still based on libobjc and libobjc2 but numbered differently).&lt;br /&gt;
* libobjc2 built with GCC 4.6 and 4.7 has most of Objective C v2 supported, but doesn't have blocks support&lt;br /&gt;
* libobjc2 built with Clang does have block support: (use -fblocks flag when compiling your own code)&lt;br /&gt;
* GNUstep provides block support, whether the compiler does or not. So if using GNUstep, you can use blocks with a GCC libobjc2.&lt;br /&gt;
* libdispatch currently has some build requirements that necessitate using clang.&lt;br /&gt;
So we're going with a clang build since a working GCD is the aim here. &lt;br /&gt;
&lt;br /&gt;
Next, we observe that Debian wheezy and Ubuntu 13 have a libdispatch infrastructure built on clang (libobjc2 and libdispatch are built using clang). So there are some more decisions:-&lt;br /&gt;
Why not just run with what Debian provides instead of compiling from scratch, i.e. &lt;br /&gt;
* libobjc2, libdispatch, cblocksruntime compiled with erlang&lt;br /&gt;
* gnustep programs compiled with gcc&lt;br /&gt;
To make a decision, here is some background on GCD and blocks&lt;br /&gt;
* GCD: As far as I can make out, there are two implementations of GCD out there for Linux. One by [https://www.heily.com/trac/libdispatch/ Mark Heily] and one called [http://opensource.mlba-team.de/xdispatch/docs/current/index.html libxdispatch]. So far as using GCD with GNUstep, Mark's library is the one to use, and this is also the libdispatch library in Debian and Ubuntu.&lt;br /&gt;
* GCD is more than just a C library. It requires support from the kernel with light threads (libpthread), and an adptation of BSD signals for Linux (libkqueue).&lt;br /&gt;
* Blocks: Using blocks with GCD will often result in simpler and more elegant code, but blocks are not part of standard C. Mark provides a 'blocks' library called 'libblocksruntime', but even better, GNUstep has its own implementation of blocks. The two libarires are based on Apples blocks library and have the same API. However, what is not obvious is that the ABI of libblocksruntime is C, however the ABI of GNUstep is objective C. And mixing the two ABIs could lead to memory corruption under certain circumstances. ([https://github.com/nickhutchinson/libdispatch/issues/2 See xcvista's second comment].)&lt;br /&gt;
In fact, I did try to get libdispatch working on Kubuntu 13. I found that the gcc package must be installed in order to get the objc.h header to compile against, and I had to put the location of objc.h in &amp;lt;GNUstep root&amp;gt;/Makefiles/config.make, as well as adding clang in there. Being new to GNUstep I had a couple of other issues, and I started having the &amp;quot;bad smell&amp;quot; feeling that goes with graunching two ABIs. In addition, expert posts to the gnustep-discuss newsgroup this year consistently recommended installing from source, so to the the source we go.&lt;br /&gt;
&lt;br /&gt;
== libobjc2 and gnustep-base installation from source ==&lt;br /&gt;
Ivan Vucica has a handy install script for download: https://bitbucket.org/ivucica/&lt;br /&gt;
* I recommend you have a fresh Debian or Ubuntu installation. If not, you should remove all gnustep packages, libobjc* packages, libdispatch* packages, and libblocksruntime* packages.&lt;br /&gt;
* I ran installs on both Gentoo Linux and Kubuntu 13. Gentoo takes a while to setup, but can be simpler for something like this because there is no other cruft around.&lt;br /&gt;
&lt;br /&gt;
�&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6546</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6546"/>
		<updated>2013-06-03T02:39:26Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch on Linux.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. The library for Grand Central Dispatch is called libdispatch, and tasks can be submitted to GCD in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes down to the install instructions.&lt;br /&gt;
=== GNUstep runtime ===&lt;br /&gt;
So far as GNUstep, the runtime library for Objective C code used to be called libobjc until Apple released Objective C version 2, and then is called libobjc2. You can get the background here: http://wiki.gnustep.org/index.php/ObjC2_FAQ .  (Note Debian and Ubuntu libobjc3 and libobjc4 are  still based on libobjc and libobjc2 but numbered differently).&lt;br /&gt;
* libobjc2 built with GCC 4.6 and 4.7 has most of Objective C v2 supported, but doesn't have blocks support&lt;br /&gt;
* libobjc2 built with Clang does have block support: (use -fblocks flag when compiling your own code)&lt;br /&gt;
* GNUstep provides block support, whether the compiler does or not. So if using GNUstep, you can use blocks with a GCC libobjc2.&lt;br /&gt;
* libdispatch currently has some build requirements that necessitate using clang.&lt;br /&gt;
So we're going with a clang build since a working GCD is the aim here. &lt;br /&gt;
&lt;br /&gt;
Next, we observe that Debian wheezy and Ubuntu 13 have a libdispatch infrastructure built on clang (libobjc2 and libdispatch are built using clang). So there are some more decisions:-&lt;br /&gt;
Why not just run with what Debian provides instead of compiling from scratch, i.e. &lt;br /&gt;
* libobjc2, libdispatch, cblocksruntime compiled with erlang&lt;br /&gt;
* gnustep programs compiled with gcc&lt;br /&gt;
To make a decision, here is some background on GCD and blocks&lt;br /&gt;
* GCD: As far as I can make out, there are two implementations of GCD out there for Linux. One by [https://www.heily.com/trac/libdispatch/ Mark Heily] and one called [http://opensource.mlba-team.de/xdispatch/docs/current/index.html libxdispatch]. So far as using GCD with GNUstep, Mark's library is the one to use, and this is also the libdispatch library in Debian and Ubuntu.&lt;br /&gt;
* GCD is more than just a C library. It requires support from the kernel with light threads (libpthread), and an adptation of BSD signals for Linux (libkqueue).&lt;br /&gt;
* Blocks: Using blocks with GCD will often result in simpler and more elegant code, but blocks are not part of standard C. Mark provides a 'blocks' library called 'libblocksruntime', but even better, GNUstep has its own implementation of blocks. The two libarires are based on Apples blocks library and have the same API. However, what is not obvious is that the ABI of libblocksruntime is C, however the ABI of GNUstep is objective C. And mixing the two ABIs could lead to memory corruption under certain circumstances. ([https://github.com/nickhutchinson/libdispatch/issues/2 See xcvista's second comment].)&lt;br /&gt;
In fact, I did try to get libdispatch on Kubuntu 13. I found that the gcc package must be installed in order to get the objc.h header to compile against, and I had to put the location of objc.h in &amp;lt;GNUstep root&amp;gt;/Makefiles/config.make, as well as adding clang in there. Being new to GNUstep I had a couple of other issues, and I started having the &amp;quot;bad smell&amp;quot; feeling that goes with graunching two ABIs. In addition, expert posts to the gnustep-discuss newsgroup this year consistently recommended installing from source, so to the the source we go.&lt;br /&gt;
&lt;br /&gt;
== libobjc2 and gnustep-base installation from source ==&lt;br /&gt;
Ivan Vucica has a handy install script for download: https://bitbucket.org/ivucica/&lt;br /&gt;
* I recommend you have a fresh Debian or Ubuntu installation. If not, you should remove all gnustep packages, libobjc* packages, libdispatch* packages, and libblocksruntime* packages.&lt;br /&gt;
* I ran installs on both Gentoo Linux and Kubuntu 13. Gentoo takes a while to setup, but can be simpler for something like this because there is no other cruft around.&lt;br /&gt;
&lt;br /&gt;
�&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6545</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6545"/>
		<updated>2013-06-03T02:37:15Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch on Linux.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. The library for Grand Central Dispatch is called libdispatch, and tasks can be submitted to GCD in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes down to the install instructions.&lt;br /&gt;
=== GNUstep runtime ===&lt;br /&gt;
* So far as GNUstep, the runtime library for Objective C code used to be called libobjc until Apple released Objective C version 2, and then is called libobjc2. You can get the background here: http://wiki.gnustep.org/index.php/ObjC2_FAQ .  (Note Debian and Ubuntu libobjc3 and libobjc4 are  still based on libobjc and libobjc2 but numbered differently).&lt;br /&gt;
** libobjc2 built with GCC 4.6 and 4.7 has most of Objective C v2 supported, but doesn't have blocks support&lt;br /&gt;
** libobjc2 built with Clang does have block support: (use -fblocks flag when compiling your own code)&lt;br /&gt;
** GNUstep provides block support, whether the compiler does or not. So if using GNUstep, you can use blocks with a GCC libobjc2.&lt;br /&gt;
** libdispatch currently has some build requirements that necessitate using clang.&lt;br /&gt;
So we're going with a clang build since a working GCD is the aim here. &lt;br /&gt;
&lt;br /&gt;
Next, we observe that Debian wheezy and Ubuntu 13 have a libdispatch infrastructure built on clang (libobjc2 and libdispatch are built using clang). So there are some more decisions:-&lt;br /&gt;
Why not just run with what Debian provides instead of compiling from scratch, i.e. &lt;br /&gt;
* libobjc2, libdispatch, cblocksruntime compiled with erlang&lt;br /&gt;
* gnustep programs compiled with gcc&lt;br /&gt;
To make a decision, here is some background on GCD and blocks&lt;br /&gt;
* GCD: As far as I can make out, there are two implementations of GCD out there for Linux. One by [https://www.heily.com/trac/libdispatch/ Mark Heily] and one called [http://opensource.mlba-team.de/xdispatch/docs/current/index.html libxdispatch]. So far as using GCD with GNUstep, Mark's library is the one to use, and this is also the libdispatch library in Debian and Ubuntu.&lt;br /&gt;
* GCD is more than just a C library. It requires support from the kernel with light threads (libpthread), and an adptation of BSD signals for Linux (libkqueue).&lt;br /&gt;
* Blocks: Using blocks with GCD will often result in simpler and more elegant code, but blocks are not part of standard C. Mark provides a 'blocks' library called 'libblocksruntime', but even better, GNUstep has its own implementation of blocks. The two libarires are based on Apples blocks library and have the same API. However, what is not obvious is that the ABI of libblocksruntime is C, however the ABI of GNUstep is objective C. And mixing the two ABIs could lead to memory corruption under certain circumstances. ([https://github.com/nickhutchinson/libdispatch/issues/2 See xcvista's second comment].)&lt;br /&gt;
In fact, I did try to get libdispatch on Kubuntu 13. I found that the gcc package must be installed in order to get the objc.h header to compile against, and I had to put the location of objc.h in &amp;lt;GNUstep root&amp;gt;/Makefiles/config.make, as well as adding clang in there. Being new to GNUstep I had a couple of other issues, and I started having the &amp;quot;bad smell&amp;quot; feeling that goes with graunching two ABIs. In addition, posts to the gnustep-discuss newsgroup this year consistently recommended installing from source, so to the the source I went.&lt;br /&gt;
&lt;br /&gt;
== libobjc2 and gnustep-base installation from source ==&lt;br /&gt;
Ivan Vucica has a handy install script for download: https://bitbucket.org/ivucica/&lt;br /&gt;
* I recommend you have a fresh Debian or Ubuntu installation. If not, you should remove all gnustep packages, libobjc* packages, libdispatch* packages, and libblocksruntime* packages.&lt;br /&gt;
* I ran installs on both Gentoo Linux and Kubuntu 13. Gentoo takes a while to setup, but can be simpler for something like this because there is no other cruft around.&lt;br /&gt;
&lt;br /&gt;
�&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6544</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6544"/>
		<updated>2013-06-03T02:29:02Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch on Linux.&lt;br /&gt;
&lt;br /&gt;
First some background as the information on this is scattered around the web.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. The library for Grand Central Dispatch is called libdispatch, and tasks can be submitted to GCD in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes and everything should just build.&lt;br /&gt;
=== GNUstep runtime ===&lt;br /&gt;
* So far as GNUstep, the runtime library for Objective C code used to be called libobjc until Apple released Objective C version 2, and then is called libobjc2. You can get the background here: http://wiki.gnustep.org/index.php/ObjC2_FAQ .  (Note Debian and Ubuntu libobjc3 and libobjc4 are  still based on libobjc and libobjc2 but numbered differently).&lt;br /&gt;
** libobjc2 built with GCC 4.6 and 4.7 has most of Objective C v2 supported, but doesn't have blocks support&lt;br /&gt;
** libobjc2 built with Clang does have block support: (use -fblocks flag when compiling your own code)&lt;br /&gt;
** GNUstep provides block support, whether the compiler does or not. So if using GNUstep, you can use blocks with a GCC libobjc2.&lt;br /&gt;
Now the aim of this exercise is to run GCD, and libdispatch has to be built with clang right now. &lt;br /&gt;
Having settled on a clang build, we observe that Debian wheezy and Ubuntu 13 have a libdispatch infrastructure built on clang (libobjc2 and libdispatch are built using clang). So there are some more decisions:-&lt;br /&gt;
Why not just run with what Debian provides, i.e. &lt;br /&gt;
* libobjc2, libdispatch, cblocksruntime compiled with erlang&lt;br /&gt;
* gnustep programs compiled with gcc&lt;br /&gt;
To make this decision, here is some background on GCD and blocks&lt;br /&gt;
* GCD: As far as I can make out, there are two implementations of GCD out there for Linux. One by [https://www.heily.com/trac/libdispatch/ Mark Heily] and one called [http://opensource.mlba-team.de/xdispatch/docs/current/index.html libxdispatch]. So far as using GCD with GNUstep, Mark's library is the one to use, and this is also the libdispatch library in Debian and Ubuntu.&lt;br /&gt;
* GCD is more than just a C library. It requires support from the kernel with light threads (libpthread), and an adptation of BSD signals for Linux (libkqueue).&lt;br /&gt;
* Blocks: Using blocks with GCD will often result in simpler and more elegant code, but blocks are not part of standard C. Mark provides a 'blocks' library called 'libblocksruntime', but even better, GNUstep has its own implementation of blocks. The two libarires are based on Apples blocks library and have the same API. However, what is not obvious is that the ABI of libblocksruntime is C, however the ABI of GNUstep is objective C. And mixing the two ABIs could lead to memory corruption under certain circumstances. ([https://github.com/nickhutchinson/libdispatch/issues/2 See xcvista's second comment].)&lt;br /&gt;
In fact, I did try to get libdispatch on Kubuntu 13. I found that the gcc package must be installed in order to get the objc.h header to compile against, and I had to put the location of objc.h in &amp;lt;GNUstep root&amp;gt;/Makefiles/config.make, as well as adding clang in there. Being new to GNUstep I had a couple of other issues, and it all started having a bad smell about the thing. In addition, posts to the gnustep-discuss newsgroup this year consistently recommended installing from source, so to the the source I went.&lt;br /&gt;
&lt;br /&gt;
libobjc2 and gnustep-base installation&lt;br /&gt;
Ivan Vucica has a handy install script for download: https://bitbucket.org/ivucica/&lt;br /&gt;
* I recommend you have a fresh Debian or Ubuntu installation. If not, I recommend you remove all gnustep packages, libobjc* packages, libdispatch* packages, and libblocksruntime* packages.&lt;br /&gt;
* I ran installs on both Gentoo Linux and Kubuntu 13. Gentoo takes a while to setup, but can be simpler for something like this because there is no other cruft around.�&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6543</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6543"/>
		<updated>2013-06-03T01:03:24Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch.&lt;br /&gt;
&lt;br /&gt;
First some background as the information on this is scattered around the web.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. The library for Grand Central Dispatch is called libdispatch, and tasks can be submitted to GCD in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes and everything should just build.&lt;br /&gt;
* As far as I can make out, there are two implementations of GCD out there. One by [https://www.heily.com/trac/libdispatch/ Mark Heily]&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6542</id>
		<title>Building GNUstep with Clang, Blocks, and Grand Central Dispatch</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=Building_GNUstep_with_Clang,_Blocks,_and_Grand_Central_Dispatch&amp;diff=6542"/>
		<updated>2013-06-03T01:02:06Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This guide shows how to install GNUstep-base with clang, blocks and Grand Central Dispatch.&lt;br /&gt;
&lt;br /&gt;
First some background as the information on this is scattered around the web.&lt;br /&gt;
&lt;br /&gt;
[http://en.wikipedia.org/wiki/Grand_Central_Dispatch Grand Central Dispatch] is a library to assist building apps on multi-core processors. Tasks can be submitted in blocks or with a C API. To understand the process below, some notes are in order. If you're in a hurry, you can probably skip the notes and everything should just build.&lt;br /&gt;
* The library for Grand Central Dispatch is called libdispatch &lt;br /&gt;
* As far as I can make out, there are two implementations of GCD out there. One by [https://www.heily.com/trac/libdispatch/ Mark Heily]&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.gnustep.org/index.php?title=User_Guides&amp;diff=6541</id>
		<title>User Guides</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.gnustep.org/index.php?title=User_Guides&amp;diff=6541"/>
		<updated>2013-06-03T00:36:21Z</updated>

		<summary type="html">&lt;p&gt;Sdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is intended as a collection of guides for users.&lt;br /&gt;
&lt;br /&gt;
== Installing GNUstep ==&lt;br /&gt;
&lt;br /&gt;
Installation can be easy or complex, depending on the system you use. If you encounter problems that aren't discussed here, please [[Get Help|ask for help on the mailing lists]].&lt;br /&gt;
&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto_toc.html GNUstep Installation] instructions or [[Installation | Simple Installation]] ([http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto.pdf PDF], [http://www.gnustep.org/resources/documentation/GNUstep-HOWTO-Italian.text Italian])&lt;br /&gt;
* Make sure you also check the [[Platform_compatibility|platform-specific]] instructions as well.&lt;br /&gt;
* Comprehensive [http://gnustep.made-it.com/BuildGuide/ build guide] for GNUstep on GNU/Linux.&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/Gui/KeyboardSetup.html User Keyboard Setup]&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/Gui/LanguageSetup.html Setup for East Asian Languages]&lt;br /&gt;
* User Defaults ([http://www.gnustep.org/resources/documentation/User/Gui/DefaultsSummary.html GUI]) ([http://www.gnustep.org/resources/documentation/Developer/Back/General/DefaultsSummary.html Back])&lt;br /&gt;
* [[GNUstep SVN Installation Guide]]&lt;br /&gt;
&lt;br /&gt;
* [http://svn.gna.org/svn/etoile/trunk/Etoile/INSTALL.Ubuntu GNUstep and Étoilé dependency list]&lt;br /&gt;
* [[Building GNUstep with Clang]]&lt;br /&gt;
* [[Building GNUstep with Clang, Blocks, and Grand Central Dispatch]]&lt;br /&gt;
&lt;br /&gt;
== Using GNUstep ==&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Applications|User Applications]]&lt;br /&gt;
* [http://www.gnustep.org/resources/documentation/User/GNUstep/filesystem_toc.html Filesystem Layout] ([http://www.gnustep.org/resources/documentation/User/GNUstep/filesystem.pdf PDF])&lt;br /&gt;
* [[User_FAQ|GNUstep Users' FAQ]] ([http://www.gnustep.org/resources/documentation/User/GNUstep/userfaq.pdf PDF])&lt;br /&gt;
* [[Get Help|Mailing Lists, IRC and Newsgroups]]&lt;br /&gt;
* [[Cross Compiling]]&lt;br /&gt;
* [http://gnustep.files.wordpress.com/2010/11/objective-c_gnustep.pdf Manual de Objective-C y GNUstep (PDF en español)]&lt;br /&gt;
* [[Changing GNUStep Theme]]&lt;br /&gt;
&lt;br /&gt;
== Other Info ==&lt;br /&gt;
&lt;br /&gt;
* News and info:&lt;br /&gt;
** [http://freshmeat.net/browse/806/?topic_id=806 Freshmeat]&lt;br /&gt;
** [http://www.gnustep.wordpress.com/ GNUstep en español] - Noticias e información&lt;br /&gt;
* Projects:&lt;br /&gt;
** [[:Category:Desktop Environments|Desktop Environments]]&lt;br /&gt;
*** [http://www.nongnu.org/backbone/ Backbone] - GNUstep Desktop project&lt;br /&gt;
*** [http://www.etoile-project.org/ Étoilé] - GNUstep based user environment&lt;br /&gt;
*** [http://www.nongnu.org/gap/ GAP] - GNUstep Application Project&lt;br /&gt;
** Live CDs&lt;br /&gt;
*** [http://io.debian.net/~tar/gnustep/ GNUstep Live CD Project] - based on Debian&lt;br /&gt;
* Developer sites:&lt;br /&gt;
** [[For_Developers | Developers]] - List of developers&lt;br /&gt;
** [http://www.gnustep.it/ GNUstep.it] - Italian developer site&lt;br /&gt;
** [http://www.advogato.org/proj/GNUstep/ Advogato] - basic GNUstep project info and links to some developer diaries&lt;br /&gt;
** [http://www.collaboration-world.com/ Collaboration World] - home to GNUMail, Affiche and more&lt;br /&gt;
** [http://www.roard.com/docs/ GNUstep HelpCenter]&lt;br /&gt;
** [http://freshmeat.net/projects/gnustep-icons/ GNUstep Icons project]&lt;br /&gt;
* [[Success_Stories | GNUstep Success Stories]]&lt;br /&gt;
&lt;br /&gt;
== Stores ==&lt;br /&gt;
&lt;br /&gt;
* [http://www.cafepress.com/openlogic &amp;quot;Openlogic&amp;quot; GNUstep store] - A portion of these proceeds go to the FSF and GNUstep.&lt;br /&gt;
* The GNUstep project does not sponsor or benefit from these items:&lt;br /&gt;
** [http://www.cafepress.com/gnustep &amp;quot;GNUstep&amp;quot; store]&lt;br /&gt;
** [http://www.cafepress.com/opengnustep &amp;quot;OPENGNUstep&amp;quot; store]&lt;/div&gt;</summary>
		<author><name>Sdw</name></author>
	</entry>
</feed>