Difference between revisions of "Platform compatibility"

From GNUstepWiki
Jump to navigation Jump to search
(Updated with 0.26 mvs perl mediawiki client.)
Line 1: Line 1:
'''Note''': Anyone know how to convert [http://www.gnustep.org/resources/documentation/User/GNUstep/gnustep-howto_toc.html Platform Compatibility HowTO]source into wiki language, so we can work on others' effort?
+
[http://www.bjicp.org ICP代办]
 
+
[http://www.bjicp.org 代办ICP]
Following are procedures for installing GNUstep on different Operating Systems.<br>
+
[http://www.bjicp.org ICP]
 
+
[http://www.bjicp.org ICP办理]
 
+
[http://www.bjicp.org ICP证]
 
+
[http://www.bjicp.org 北京ICP]
=== AIX ===
+
[http://www.bjicp.org ICP经营许可证]
''To be provided.''
+
[http://www.bjicp.org 申请ICP经营许可证]
 
+
http://www.bjicp.org/image/s2.gif{nid GFY}
----
 
 
 
=== BSD ===
 
 
 
==== Darwin-based Systems ====
 
''To be provided.''
 
 
 
===== Intel =====
 
''To be provided.''
 
 
 
===== PowerPC =====
 
''To be provided.''
 
 
 
==== FreeBSD-based Systems ====
 
 
 
===== DragonFly =====
 
[http://www.dragonflybsd.org/main/ DragonFly] is an operating system and environment designed to be the logical continuation of the [[Platform_compatibility#FreeBSD|FreeBSD]]-4.x OS series.
 
 
 
I have mostly ported GNUstep to DragonFly, I just need to submit patches now for both GNUstep and DragonFly. To know more, you can contact me. ''[[user:Qmathe | Quentin Mathé]]''
 
 
 
===== FreeBSD =====
 
You can install GNUstep via ''/usr/ports/devel/gnustep''. However, not all required dependancies are installed.
 
 
 
If you install the following in advance, you should be fine: ''wmaker, libxml2, libxslt, libgmp4, libart_lgpl2, libaudiofile, ffcall, glitz''
 
 
 
You may also want to install ''/usr/ports/net/mDNSResponder''.
 
 
 
'''Note''':
 
There is a bug in libkvm that '''requires''' a mounted ''/proc''. Until this bug is fixed, make sure you have an entry for ''/proc'' in your ''/etc/fstab'':
 
 
 
proc                    /proc          procfs  rw              0      0
 
 
 
References:
 
[http://www.freebsd.org/cgi/ports.cgi?query=gnustep&stype=all FreeBSD GNUstep ports],
 
[http://www.freshports.org/search.php?query=gnustep&search=go&num=10&stype=name&method=match&deleted=excludedeleted&start=1&casesensitivity=caseinsensitive Freshports GNUstep]
 
 
 
===== Kernel of FreeBSD with GNU userland =====
 
It was reported that this runs GNUstep as well. For more details see the topic of
 
the IRC channel #gnu-kbsd on irc.gnu.org
 
 
 
===== PicoBSD =====
 
[http://people.freebsd.org/~picobsd/picobsd.html PicoBSD] is a one floppy version of [[Platform_compatibility#FreeBSD|FreeBSD]] 3.0-current.
 
 
 
===== PC-BSD =====
 
[http://www.pcbsd.org/ PC-BSD] has as its goals to be an easy to install and use desktop OS, which is built on the [[Platform_compatibility#FreeBSD|FreeBSD]] operating system.
 
 
 
==== Mac OS X ====
 
''To be provided.''
 
 
 
==== NetBSD ====
 
Installing GNUstep from pkgsrc is really straight-forward for NetBSD if you're using a recent pkgsrc distribution. NetBSD/i386 has no known problems right now, however there are reports of crashout problems for gdomap on NetBSD/sparc which may be related to ffi/ffcall issues.
 
 
 
In terms of pre-requisites, ensure you've got a working X11 environment on your system and preferrably are using WindowMaker as your window manager.
 
 
 
'''Build instructions'''
 
 
 
To install GNUstep, you need to cd to your pkgsrc tree and then cd to the right package directory, on my system:
 
 
 
  cd /usr/pkgsrc
 
 
 
then go to the package you wish to install, for example:
 
 
 
  cd meta-pkgs/gnustep
 
 
 
and issue the command:
 
 
 
  make install
 
 
 
This command will download source code and whatever dependencies and compile and install them. The version of the meta-packages I used (released with NetBSD 2.0 and called gnustep-1.10.0nb2) installs the following GNUstep components as parts of the meta-package:
 
 
 
* gnustep-make-1.10.0
 
* gnustep-base-1.10.1
 
* gnustep-ssl-1.10.1
 
* gnustep-gui-0.9.4
 
* gnustep-back-0.9.4
 
* gnustep-examples-1.0.0
 
* ImageViewer-0.6.3
 
* Pantomime-1.1.2
 
* Addresses-0.4.6
 
* GNUMail-1.1.2
 
* Gorm-0.8.0
 
* ProjectCenter-0.4.0
 
* GWLib-0.6.5
 
* Renaissance-0.8.0
 
* gworkspace-0.6.5
 
 
 
A number of dependency packages are also installed.
 
 
 
This may be overkill - if you don't need all the applications etc, you can install the packages individually.
 
 
 
==== OpenBSD ====
 
''To be provided.''
 
 
 
----
 
 
 
=== GNU/Hurd ===
 
GNUstep also runs on GNU/Hurd on the GNUMach kernel.
 
 
 
----
 
 
 
=== HP/UX  ===
 
* GNUstep-core-1.0, please see http://en.wikibooks.org/wiki/CPAM_with_TWW/References_Manual#GNUstep_and_CPAM. look for the gnustep-core-1.0.sb and gnustep-core-1.0.pb file for building and packaging information.
 
 
 
 
 
----
 
 
 
=== Irix ===
 
''To be provided.''
 
 
 
----
 
 
 
=== Linux ===
 
 
 
==== Debian ====
 
Since Debian "Sarge" you can just say
 
 
 
apt-get install x-window-system-core wmaker gnustep gnustep-devel gnustep-games
 
 
 
to get GNUstep, X11 and Window Maker installed.
 
 
 
But what happen if you are on Debian stable (3.0) release ?
 
 
 
Here is an answer from gnustep irc channel:
 
<pre>
 
<fsmunoz> change every occurence of "stable" for "testing"
 
<fsmunoz> remove the security.debian.org line
 
<fsmunoz> do apt-get update
 
<fsmunoz> apt-get dist-upgrade
 
<fsmunoz> repeat  this last one until nothing gets installed or removed.
 
<fsmunoz> the, replace "testing" with "unstable"
 
<fsmunoz> then, apt-get update
 
<fsmunoz> apt-get dist-upgrade
 
<fsmunoz> repeat, repeat.
 
<fsmunoz> done
 
</pre>
 
 
 
The above was a general guide to upgrade from Debian stable to unstable, not exactly the best way to install GNUstep packages. If one doesn't want to upgrade it is possible to simply add the unstable apt lines to the sources.list and specify the distribution when installing the packages, e.g.
 
<pre>
 
# apt-get install -t unstable gnumail.app
 
</pre>
 
 
 
This will probably upgrade some other packages to satisfy dependencies, but will have a much small impact on the system since only the packages on which GNUstep depends will be upgraded.
 
 
 
Yet another way is to add tarzeau's repository (powerpc and source); he packages a huge ammount of GNUstep packages. Just add this to your sources.list:
 
<pre>
 
deb http://www.linuks.mine.nu/debian/ ./ 
 
deb-src http://www.linuks.mine.nu/debian/ ./
 
</pre>
 
 
 
This repository contains packages made in unstable, so it's possible that the dependencies only are satisfied in unstable systems.
 
 
 
==== RedHat ====
 
''To be provided.''
 
 
 
===== Advance Server 3.0 =====
 
* GNUstep-core-1.0, please see http://en.wikibooks.org/wiki/CPAM_with_TWW#GNUstep_and_TWW_HPMS. look for the gnustep-core-1.0.sb and gnustep-core-1.0.pb file for building and packaging information.
 
 
 
===== FC 3 =====
 
''To be provided.''
 
 
 
==== Slackware ====
 
''To be provided.''
 
 
 
==== SuSE ====
 
''To be provided.''
 
 
 
----
 
 
 
=== Solaris ===
 
 
 
 
 
==== Intel ====
 
''To be provided.''
 
 
 
==== Sparc ====
 
 
 
* http://www.linuks.mine.nu/gnustep/solaris is one of package sources to create solaris packages for GNUstep.
 
* GNUstep-core-1.0, please see http://en.wikibooks.org/wiki/CPAM_with_TWW#GNUstep_and_TWW_HPMS. look for the gnustep-core-1.0.sb and gnustep-core-1.0.pb file for building and packaging information.
 
 
 
----
 
 
 
=== Windows ===
 
 
 
==== Cygwin ====
 
''To be provided.''
 
 
 
==== MingW ====
 
''To be provided.''
 
 
 
==== SFU ====
 
Microsfot's Service For Unix.
 
 
 
----
 
 
 
=== Others ===
 
 
 
==== LiveCD for Intel ====
 
Current version is 0.9.4.2
 
 
 
Find the instructions to install and the CD itself [http://livecd.gnustep.org/ here]
 
 
 
==== Linksys NSLU2 ====
 
* First thing need to happen is to gnerate a gcc cross compiler with objc enabled.
 
Current nslu2 supported gcc only has c and c++ enabled when building the crosstool-native package.
 
 
 
* check out unslung source using follow command.
 
 
 
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/nslu co unslung
 
 
 
* add in objc as language need to be enabled.
 
<pre>
 
perl -pi -e 's!^GCC_LANGUAGES=.*!GCC_LANGUAGES="c,c++,objc"!' toolchain/crosstool/nslu2-cross335.sh
 
perl -pi -e 's!^GCC_LANGUAGES=.*!GCC_LANGUAGES="c,c++,objc"!' sources/crosstool-native/nslu2-native335.sh
 
</pre>
 
** Compile cross-compiler for arm cpu using gcc compiler on debian 3.1 linux.
 
 
 
<pre>
 
tjyang@debian:~/unslung$ pwd
 
/home/tjyang/unslung
 
tjyang@debian:~/unslung$ rm toolchain/crosstool/.configured
 
tjyang@debian:~/unslung$ rm toolchain/crosstool/.built
 
tjyang@debian:~/unslung$ unset LD_LIBRARY_PATH
 
tjyang@debian:~/unslung$make toolchain
 
</pre>
 
 
 
* A arm gcc with objective-C enabled.
 
<pre>
 
/export/home/tjyang/slug/unslung/toolchain/armv5b-softfloat-linux/gcc-3.3.5-glibc-2.2.5/bin/armv5b-softfloat-linux-gcc -v
 
 
 
Reading specs from /export/home/tjyang/slug/unslung/toolchain/armv5b-softfloat-linux/gcc-3.3.5-glibc-2.2.5/lib/gcc-lib/armv5b-softfloat-linux/3.3.5/specs
 
Configured with: /export/home/tjyang/slug/unslung/toolchain/crosstool/build/armv5b-softfloat-linux/gcc-3.3.5-glibc-2.2.5/gcc-3.3.5/configure --target=armv5b-softfloat-linux --host=i686-host_pc-linux-gnu --prefix=/export/home/tjyang/slug/unslung/toolchain/armv5b-softfloat-linux/gcc-3.3.5-glibc-2.2.5 --with-float=soft --with-cpu=xscale --enable-cxx-flags=-mcpu=xscale --with-headers=/export/home/tjyang/slug/unslung/toolchain/armv5b-softfloat-linux/gcc-3.3.5-glibc-2.2.5/armv5b-softfloat-linux/include --with-local-prefix=/export/home/tjyang/slug/unslung/toolchain/armv5b-softfloat-linux/gcc-3.3.5-glibc-2.2.5/armv5b-softfloat-linux --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++,objc --enable-shared --enable-c99 --enable-long-long
 
Thread model: posix
 
gcc version 3.3.5
 
[tjyang@dual unslung]$
 
  </pre>
 
** A simple test of objc on host linux machine.
 
  <pre>
 
  [tjyang@dual bin]$ pwd
 
  /home/tjyang/slug/unslung/toolchain/armv5b-softfloat-linux/gcc-3.3.5-glibc-2.2.5/armv5b-softfloat-linux/bin
 
  [tjyang@dual bin]$
 
  [tjyang@dual bin]$ cat helloworld.m
 
  #include <stdio.h>
 
 
 
  int main(void)
 
  {
 
    printf("Hello World\n");
 
  }
 
  [tjyang@dual bin]$ ./gcc helloworld.m -lobjc -o helloworld
 
  [tjyang@dual bin]$ file helloworld
 
  hellow: ELF 32-bit MSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3, dynamically linked (uses shared libs), not stripped
 
  [tjyang@dual bin]$ uname -a
 
  Linux dual 2.4.21-9.ELsmp #1 SMP Thu Jan 8 17:08:56 EST 2004 i686 i686 i386 GNU/Linux
 
  [tjyang@dual bin]$
 
  </pre>
 
** Second step is to use this cross-compiler which generate binaries code for armb cpu to compile a native compiler. This complier can only be run on native machine nslu2 not on Intel linux.
 
<pre>
 
[tjyang@dual unslung]$ make crosstool-native;make crosstool-native-ipk
 
[tjyang@dual unslung]$ ls -lrt builds/*.ipk
 
-rw-rw-r--    1 tjyang  tjyang    5569523 Feb 17 13:32 builds/crosstool-native-bin_0.28-rc37-3_armeb.ipk
 
-rw-rw-r--    1 tjyang  tjyang  12677163 Feb 17 13:33 builds/crosstool-native-lib_0.28-rc37-3_armeb.ipk
 
-rw-rw-r--    1 tjyang  tjyang    1722660 Feb 17 13:33 builds/crosstool-native-inc_0.28-rc37-3_armeb.ipk
 
-rw-rw-r--    1 tjyang  tjyang    7049858 Feb 17 13:34 builds/crosstool-native-arch-bin_0.28-rc37-3_armeb.ipk
 
-rw-rw-r--    1 tjyang  tjyang    9032668 Feb 17 13:34 builds/crosstool-native-arch-lib_0.28-rc37-3_armeb.ipk
 
-rw-rw-r--    1 tjyang  tjyang    7483945 Feb 17 13:35 builds/crosstool-native-arch-inc_0.28-rc37-3_armeb.ipk
 
-rw-rw-r--    1 tjyang  tjyang      1058 Feb 17 13:35 builds/crosstool-native_0.28-rc37-3_armeb.ipk
 
 
 
[tjyang@dual unslung]$ cp  /export/home/tjyang/slug/unslung/builds/*.ipk  /disk76/nslu2/tmp/
 
[tjyang@dual unslung]$
 
 
 
login into your nslu2, cd to where the ipk packages are.
 
run following commands.
 
bash-2.05b# for i in *.ipk
 
> do
 
> ipkg -force-overwrite install $i
 
> done
 
Upgrading crosstool-native-arch-bin on root from 0.28-rc37-3 to 0.28-rc37-5...
 
Configuring crosstool-native-arch-bin
 
Upgrading crosstool-native-arch-inc on root from 0.28-rc37-3 to 0.28-rc37-5...
 
Configuring crosstool-native-arch-inc
 
Upgrading crosstool-native-arch-lib on root from 0.28-rc37-3 to 0.28-rc37-5...
 
Configuring crosstool-native-arch-lib
 
Upgrading crosstool-native-bin on root from 0.28-rc37-3 to 0.28-rc37-5...
 
Configuring crosstool-native-bin
 
Upgrading crosstool-native-inc on root from 0.28-rc37-3 to 0.28-rc37-5...
 
Configuring crosstool-native-inc
 
Upgrading crosstool-native-lib on root from 0.28-rc37-3 to 0.28-rc37-5...
 
Configuring crosstool-native-lib
 
Upgrading crosstool-native on root from 0.28-rc37-3 to 0.28-rc37-5...
 
Configuring crosstool-native
 
bash-2.05b# date
 
Sat Feb 19 01:04:07 CST 2005
 
bash-2.05b#
 
 
 
 
 
</pre>
 
** try to compile helloworld.m objective-C file and run the helloworld binary on nslu2.
 
<pre>
 
 
 
bash-2.05b# gcc helloworld.m -lobjc -o helloworld
 
bash-2.05b# file helloworld
 
helloworld: ELF 32-bit MSB executable, ARM, version 1 (ARM), for GNU/Linux 2.4.3, dynamically linked (uses shared libs), not stripped
 
bash-2.05b# ./helloworld
 
./helloworld: error while loading shared libraries: libobjc.so.1: cannot open shared object file: No such file or directory
 
bash-2.05b#
 
 
 
libobjc.so.1 is in /opt/armeb/armv5b-softfloat-linux/lib, this path need to be in LD_LIBRARY_PATH.
 
 
 
 
 
bash-2.05b# ./helloworld
 
Hello World
 
bash-2.05b# uname -a
 
Linux LKG7BFA96 2.4.22-xfs #1 Sat Jan 1 21:34:54 HST 2005 armv5b unknown unknown GNU/Linux
 
bash-2.05b# date
 
Thu Feb 17 11:35:19 CST 2005
 
bash-2.05b# cat compile.sh
 
/opt/armeb/armv5b-softfloat-linux/bin/gcc  helloworld.m -o helloworld -lobjc
 
bash-2.05b# cat /etc/profile
 
PATH=/opt/bin:/share/hdd/data/public/nslu2/tjyang/unslung/staging/bin:${PATH}
 
TERM=xterm
 
export LD_LIBRARY_PATH=/opt/lib:/lib:/opt/armeb/armv5b-softfloat-linux/lib
 
export PATH TERM
 
bash-2.05b#
 
 
 
</pre>
 
 
 
 
 
 
 
* Using Objective-C enalbed gcc to compile gnustep-core,gnustep-* software.
 
** more strong testing is needed. please add instructon below if you know how to run objective-c's testsuite in crosstool.
 
 
 
References: http://lists.gnu.org/archive/html/discuss-gnustep/2005-02/msg00124.html
 

Revision as of 04:56, 5 June 2005