1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
:lang: en
:toc:
= Build LinuxCNC for "run in place"
== Basic Instructions
From the repository top level directory:
* *Build LinuxCNC* +
+
----
cd src <1>
./autogen.sh <2>
./configure [--with-realtime=uspace|/usr/rtai...] <3>
make clean <4>
make <5>
sudo make setuid <6>
----
<1> Change to source directory
<2> Builds the configure script (uses `configure.in`)
<3> Configure the package for your system +
Running `configure` takes awhile. While running, it prints some
messages telling which features it is checking for.
<4> Remove previous build(s) artifacts
<5> Build/compile the software package
<6> Set ownership and mode of built files
NOTE: If you're using `csh` on an old version of System V, you might
need to type `sh ./configure` instead to prevent `csh' from trying
to execute `configure' itself.
* *Run LinuxCNC* +
+
----
cd .. <1>
source scripts/rip-environment <2>
linuxcnc <3>
----
<1> Change back up to top level directory
<2> Configure shell environment for LinuxCNC commands and Python modules
<3> Run LinuxCNC
== Detailed description
=== Run-time script
The runtime script is called *linuxcnc*, thus allowing you on an
installed system to just type `linuxcnc` and get it running.
On a run-in-place system (e.g. the one you just got out of git), the
runscript is `scripts/linuxcnc`.
When you just checked out a fresh copy of LinuxCNC, you'll see there is
no `scripts/linuxcnc`, just a `scripts/linuxcnc.in`. By running
`configure` that one will get changed to `scripts/linuxcnc`.
`configure` will also replace some default values for your system
(folders, paths, etc).
=== Configure script
The *`configure`* shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create:
`Makefile.inc` file::
`config.status` shell script::
That you can run in the future to recreate the current configuration;
`config.cache` file::
That saves the results of its tests to speed up reconfiguring;
`config.log` file::
Containing compiler output (useful mainly for debugging `configure`).
The *`configure.ac`* file is used by the `autogen.sh` script, from the
`autoconf` package, to create the `configure` script.
You only need `configure.ac` if you want to change `configure`, or
regenerate it using a newer version of `autoconf`.
==== Optional Features
LinuxCNC can operate hardware only if a _real time system_ has been
installed: either *RT-PREEMPT* or *RTAI*. If you don't have any installed,
you cannot run LinuxCNC to control any machines. Please install one
of the RT patches (refer to the documentation of the project on how to
achieve that).
// FIXME Add pointers for RT install
However, it is possible to test LinuxCNC without a realtime system. This
is possible using a _simulator mode_, which doesn't allow hardware control.
This is an alternate mode of *uspace* _realtime_.
To specify RT-PREEMPT or non-realtime, use `--with-realtime=uspace`.
Otherwise, use `--with-realtime=[location where rtai is installed]`.
If you don't want to generate the documentation from source use
`--disable-build-documentation`
`configure` also accepts other arguments. Use `--help` to view the list.
==== Operation Controls
`configure` recognizes the following options to control how it operates:
`--cache-file=FILE`::
Use and save the results of the tests in FILE instead of
`./config.cache`.
Set FILE to `/dev/null` to disable caching, for debugging `configure`.
`--help`::
Print a summary of the options to `configure`, and exit.
`--quiet` | `--silent` | `-q`::
Do not print messages saying which checks are being made.
To suppress all normal output, redirect it to `/dev/null` (any error
messages will still be shown).
`--srcdir=DIR`::
Look for the package's source code in directory DIR.
Usually `configure` can determine that directory automatically.
`--version`::
Print the version of _Autoconf_ used to generate the `configure'
script and exit.
|