This section contains some installation notes that are platform specific under UNIX.
InstallSICStus
will try to find it
during installation but if that fails, you can set the environment
variable CC to e.g. /opt/SUNWspro/bin/cc before
invoking InstallSICStus
. Using gcc 3.x does seem to work but has not yet
received much testing. To install with gcc 3.x, set the environment
variable CC appropriately before invoking InstallSICStus
.
library(bdb)
,
library(tcltk)
.
timeout
does not work with Java. The problems seems to be
a limitation in the Solaris setitimer
for process with multiple
threads. A possible workaround on Solaris 8 is to use an alternative
thread library by setting LD_LIBRARY_PATH to
/usr/lib/lwp. This alternative thread library is not available
prior to Solaris 8 and it is the default in Solaris 9.
As an alternative, you can use the pre-built installation.
Most easily by using the SICStus Installer Tool or by invoking
InstallSICStus
with the --all-questions argument.
library(tcltk)
requires Tk
, which is
not installed on Mac OS X by default (see Tcl/Tk Notes).
Alternatively, the option --wrapper can be passed to spld. In this case a wrapper script is created that will set up various environment variables and invoke the real executable.
spld --resources ...
does not work, whereas
spld --static --resources ...
will. This is no great loss;
pre-linking dynamic foreign resources is pointless, at best.
BDB
, you may
need to set up DYLD_LIBRARY_PATH so that the Mac OS X dynamic
linker can find them. When using the SICStus development executable
(sicstus), this should happen automatically.
tcsh> limit data datasize 6144 kbytes bash> ulimit -d 6144
This indicates that the maximum size of the data-segment is only 6 Mb. To remove the limit, do
tcsh> limit datasize unlimited datasize unlimited bash> ulimit -d unlimited bash> ulimit -d unlimited
Please note: limit (ulimit) is a shell built-in in csh/tcsh (sh/bash). It may have a different name in other shells.
Please note: The limit will also affect SICStus when started from within Emacs, e.g. with M-x run-prolog. To change the limit used by Emacs and its sub-processes (such as SICStus) you will need to change the limit in the shell used to start Emacs. Alternatively you can create a shell wrapper for the emacs command.
As of SICStus 3.12.7 SICStus will set the data segment size of itself according to the value of the environment variable SP_ULIMIT_DATA_SEGMENT_SIZE. If you set this variable in the initialization file for your shell you do not have to use the ulimit command.
library(timeout)
does not work reliably when MacOS X runs on a
multi-CPU machine. In particular, timeouts tend to happen much later than
they should. This is caused by an OS bug. One workaround is to disable
all but one CPU using the “Processor” control in the “System
Preferences” or the hwprefs command. These utilities are part
of “CHUD” which can be installed as part of Apple XCode. The
underlying bug is related to setitimer(ITIMER_VIRTUAL)
and has
been observed at least up to Mac OS X 10.4.7 (Darwin 8.7.3).
$(SP-i386-BINPATH)/sicstus -l myprog.pl --goal "save_program(myprog), halt." $(SP-i386-BINPATH)/spld --main=restore myprog.sav -static -o myprog-i386 $(SP-PPC-BINPATH)/spld --main=restore myprog.sav -static -o myprog-ppc lipo myprog-i386 myprog-ppc -create -output myprog
You cannot install a PowerPC-based SICStus on an Intel-Mac with the SICStus Installer Tool. You must unpack the tar file and run the script InstallSICStus with the --all-questions argument. When asked if you want to install the prebuilt version of SICStus, answer “yes”.
library(bdb)
,
library(tcltk)
, library(jasper)
.
spld --moveable
implies --wrapper. This is due to
limitations in the IRIX run-time loader.
spld --moveable
. This should not be a
problem; pre-linked dynamic resources are not recommended anyway.
library(bdb)
does not work properly unless Berkeley DB is
built like this:
% make LIBSO_LIBS=-lpthread