Difference between revisions of "GNUstep under Ubuntu Linux"

From GNUstepWiki
Jump to navigation Jump to search
(Fixed missing quote)
 
(86 intermediate revisions by 4 users not shown)
Line 1: Line 1:
−
<pre>
+
Usually it is a good a idea to just use the package manager of your distribution to get a stable and well integrated GNUstep environment:
−
# Objective C 2.0 installation
 
−
# On fresh install of Ubuntu 12.10 Server
 
−
# Patryk Laurent (http://pakl.net/)
 
−
# Dec 27, 2012
 
  
−
sudo aptitude install build-essential git subversion ninja cmake
+
sudo apt-get install gnustep gnustep-devel
  
−
svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
+
If you want to develop new apps and try the newest features consider the approach described below.
−
cd llvm/tools
 
−
svn co http://llvm.org/svn/llvm-project/cfe/trunk clang
 
−
cd .. # Back to llvm directory
 
−
./configure --enable-optimized
 
−
make -j4  # Go off to prepare cup of coffee here.
 
  
−
export PATH=$PATH:~/llvm/Release+Asserts/bin # Add to .bashrc
+
= Compiling Everything from Scratch =
−
export CC=clang  # Add to .bashrc
 
−
clang -v
 
  
−
svn co http://svn.gna.org/svn/gnustep/modules/core
+
The following repo contains scripts that  compile and install everything needed for GNUstep Objective-C 2.0. The script uses clang and libobjc2 for all the awesome new features like ARC, blocks/Grand Central Dispatch, etc.
−
svn co http://svn.gna.org/svn/gnustep/libs/libobjc2/trunk libobjc2
 
−
cd core/make
 
−
./configure --enable-debug-by-default --with-layout=gnustep
 
−
make && sudo -E make install
 
−
. /usr/GNUstep/System/Library/Makefiles/GNUstep.sh # Add to .bashrc
 
  
−
sudo aptitude install gobjc  # Otherwise we get "cc1obj not found"
+
For example, to build GNUstep under Ubuntu 19.04, do:
−
cd ../../libobjc2
 
−
mkdir build
 
−
cd build
 
−
cmake ..
 
−
make
 
−
sudo -E make install
 
  
−
cat > blocktest.m << EOF
+
git clone https://github.com/plaurent/gnustep-build
−
#include <stdio.h>
+
cd gnustep-build/ubuntu-19.04-clang-8.0-runtime-2.0/
 +
./GNUstep-buildon-ubuntu1904.sh
  
−
int main() {
+
The demo.sh and demo-gui.sh scripts show example code and compilation examples (using command line as well as the recommended GNUmakefile approach.)
−
    void (^hello)(void) = ^(void) {
 
−
        printf("Hello, block!\n");
 
−
    };
 
−
    hello();
 
−
    return 0;
 
−
}
 
−
EOF
 
  
−
clang `gnustep-config --objc-flags` `gnustep-config --objc-libs` -fobj-arc -fobjc-nonfragile-abi -fblocks  -lobjc  blocktest.m
+
Reference manuals for GNUStep, including available APIs, etc, are available at http://www.gnustep.org/developers/documentation.html
−
</pre>
+
 
 +
General Note: When compiling your own code, it is generally good to tell clang both the family and version of the runtime: -fobjc-runtime=gnustep-2.0
 +
(The current version number can be had by looking at the latest ANNOUNCE filename in https://github.com/gnustep/libobjc2 (e.g., ANNOUNCE.1.8.1))

Latest revision as of 21:05, 17 April 2022

Usually it is a good a idea to just use the package manager of your distribution to get a stable and well integrated GNUstep environment:

sudo apt-get install gnustep gnustep-devel

If you want to develop new apps and try the newest features consider the approach described below.

Compiling Everything from Scratch

The following repo contains scripts that compile and install everything needed for GNUstep Objective-C 2.0. The script uses clang and libobjc2 for all the awesome new features like ARC, blocks/Grand Central Dispatch, etc.

For example, to build GNUstep under Ubuntu 19.04, do:

git clone https://github.com/plaurent/gnustep-build
cd gnustep-build/ubuntu-19.04-clang-8.0-runtime-2.0/
./GNUstep-buildon-ubuntu1904.sh

The demo.sh and demo-gui.sh scripts show example code and compilation examples (using command line as well as the recommended GNUmakefile approach.)

Reference manuals for GNUStep, including available APIs, etc, are available at http://www.gnustep.org/developers/documentation.html

General Note: When compiling your own code, it is generally good to tell clang both the family and version of the runtime: -fobjc-runtime=gnustep-2.0 (The current version number can be had by looking at the latest ANNOUNCE filename in https://github.com/gnustep/libobjc2 (e.g., ANNOUNCE.1.8.1))