Project

General

Profile

Build from Source » History » Version 6

Version 5 (neels, 11/15/2016 03:56 PM) → Version 6/59 (neels, 11/15/2016 05:06 PM)

{{>toc}}

h1. Build from Source

bq. *Before you consider building from source, be aware that there are [[Nightly Builds]]
available for Debian + Ubuntu platforms. These are recommended for normal users.*

Osmocom projects use autoconf/automake.
The general pattern for building is:

<pre>
cd source-tree
autoreconf -fi
./configure
make
make check
make install
</pre>

The @./configure@ step may need further configuration options, and
@./configure@ will tell you which dependencies are still missing, if any.
See below for project specific details and troubleshooting.

The @make@ step may generally be sped up by using multiple CPU cores:

<pre>
make -j 8
</pre>

We take care to make our builds parallelizable with @-j@, but in case
@make -j@ fails, issuing a simple @make@ could fix the problem (expecting
this only in libsmpp34).

h1. Dependencies

Which libraries are needed by various Osmocom programs is best resolved during
the @./configure@ step described below. This script checks for any missing
dependencies and issues corresponding error messages. dependencies.

Here is a (probably incomplete) overview of dependencies between Osmocom
projects:

| _To build ..._ | _... you also need ..._ |
| osmo-bts | libosmocore, libosmo-abis, openbsc (source tree only), L1 headers depending on BTS model |
| osmo-pcu | libosmocore, L1 headers depending on BTS model |
| openbsc: osmo-nitb, osmo-bsc, osmo-sgsn, osmo-bsc_nat, osmo-bsc_mgcp | libosmocore, libosmo-abis, libosmo-netif, libosmo-sccp, libsmpp34 |
| openbsc: 3G osmo-cscn (branch sysmocom/iu) | libosmocore, libosmo-abis, libosmo-netif (branch sysmocom/sctp), libosmo-sccp (branch sysmocom/iu), asn1c, libasn1c, osmo-iuh |
| osmo-iuh | libosmocore, libosmo-netif, libosmo-sccp, asn1c, libasn1c |

h1. Download Sources

The latest Osmocom sources are available from git at https://git.osmocom.org,
where each project's overview page displays the actual git URL.

The projects' repository URLs generally are of the pattern:
<pre>git://git.osmocom.org/project-name</pre>
(To contribute, see [[Coding Standards#Submitting-Patches|Submitting Patches]])


For example, to verify libosmocore's git repository URL, browse to
https://git.osmocom.org/libosmocore/ and observe the URL shown at the
bottom of the page under _Clone_: @git://git.osmocom.org/libosmocore@

Then To download this URL the libosmocore sources using the @git@ client:

<pre>
git clone git://git.osmocom.org/libosmocore
</pre>

It is also possible to download specific releases' tarballs for each git ref
that is defined. For example, browse to https://git.osmocom.org/libosmocore/,
click on _refs_ on the top and select any branch or tag, e.g. "0.9.0":https://git.osmocom.org/libosmocore/tag/?h=0.9.0

All of these download instructions hold true for any of the git repositories
besides libosmocore.

h1. Details and Troubleshooting

Here is a list of the most common configuration items or pitfalls to be
aware of when building specific Osmocom projects.

h2. Non-GNU Systems

On systems like FreeBSD, you need to run @gmake@ instead of @make@.

h2. General ./configure options

To provide the installation location, which is /usr/local by default:
<pre>
./configure --prefix=$HOME/my_osmocom_inst
</pre>

If you choose a non-standard location, later builds may fail to find it.
For example, if you built libosmocore with a custom prefix, a subsequent
build of libosmo-abis, which needs libosmocore installed, may fail.
You can tell a build process where to look for libraries to compile against
using the @PKG_CONFIG_PATH@ environment variable.

Furthermore, when you want to run binaries compiled against libraries
installed in a non-standard location, you will have to use the
@LD_LIBRARY_PATH@ environment variable to successfully load the binary.
Particularly, the @make check@ step typically runs such binaries,
as well as when you would like to run the installed binaries yourself.

For example:

<pre>
mkdir -p $HOME/osmo/src
cd $HOME/osmo/src
git clone git://git.osmocom.org/libosmocore
cd libosmocore
autoreconf -fi
./configure --prefix=$HOME/osmo/inst --disable-pcsc
make -j5
</pre>

h2. libosmocore

When @libpcsclite@ is not easily available, e.g. when building for a BTS target platform:
<pre>
./configure --disable-pcsc
</pre>

h1. Example: build openbsc

h1. Example: build script
(To contribute, see [[Coding Standards#Submitting-Patches|Submitting Patches]])
Add picture from clipboard (Maximum size: 48.8 MB)