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))