Project

General

Profile

Build from Source » History » Version 10

wirelesss, 12/01/2016 06:06 PM

1 1 neels
{{>toc}}
2
3
h1. Build from Source
4
5
bq. *Before you consider building from source, be aware that there are [[Nightly Builds]]
6
available for Debian + Ubuntu platforms. These are recommended for normal users.*
7
8 5 neels
Osmocom projects use autoconf/automake.
9 2 neels
The general pattern for building is:
10 1 neels
11
<pre>
12
cd source-tree
13
autoreconf -fi
14
./configure
15
make
16
make check
17
make install
18 10 wirelesss
ldconfig
19 1 neels
</pre>
20
21 3 neels
The @./configure@ step may need further configuration options, and
22
@./configure@ will tell you which dependencies are still missing, if any.
23
See below for project specific details and troubleshooting.
24 1 neels
25 6 neels
The @make@ step may be sped up by using multiple CPU cores:
26 1 neels
27
<pre>
28
make -j 8
29
</pre>
30
31
We take care to make our builds parallelizable with @-j@, but in case
32
@make -j@ fails, issuing a simple @make@ could fix the problem (expecting
33
this only in libsmpp34).
34
35
36
h1. Dependencies
37
38
Which libraries are needed by various Osmocom programs is best resolved during
39
the @./configure@ step described below. This script checks for any missing
40 6 neels
dependencies and issues corresponding error messages.
41 1 neels
42
Here is a (probably incomplete) overview of dependencies between Osmocom
43
projects:
44
45
| _To build ..._ | _... you also need ..._ |
46
| osmo-bts | libosmocore, libosmo-abis, openbsc (source tree only), L1 headers depending on BTS model |
47
| osmo-pcu | libosmocore, L1 headers depending on BTS model |
48
| openbsc: osmo-nitb, osmo-bsc, osmo-sgsn, osmo-bsc_nat, osmo-bsc_mgcp | libosmocore, libosmo-abis, libosmo-netif, libosmo-sccp, libsmpp34 |
49
| openbsc: 3G osmo-cscn (branch sysmocom/iu) | libosmocore, libosmo-abis, libosmo-netif (branch sysmocom/sctp), libosmo-sccp (branch sysmocom/iu), asn1c, libasn1c, osmo-iuh |
50
| osmo-iuh | libosmocore, libosmo-netif, libosmo-sccp, asn1c, libasn1c |
51
52
h1. Download Sources
53
54 3 neels
The latest Osmocom sources are available from git at https://git.osmocom.org,
55
where each project's overview page displays the actual git URL.
56
57 1 neels
The projects' repository URLs generally are of the pattern:
58 3 neels
<pre>git://git.osmocom.org/project-name</pre>
59 6 neels
(To contribute, see [[Coding Standards#Submitting-Patches|Submitting Patches]])
60 3 neels
61
For example, to verify libosmocore's git repository URL, browse to
62 1 neels
https://git.osmocom.org/libosmocore/ and observe the URL shown at the
63 3 neels
bottom of the page under _Clone_: @git://git.osmocom.org/libosmocore@
64
65 6 neels
Then download this URL using the @git@ client:
66 3 neels
67 1 neels
<pre>
68
git clone git://git.osmocom.org/libosmocore
69
</pre>
70
71 6 neels
It is also possible to download specific releases' tarballs for each git ref
72
that is defined. For example, browse to https://git.osmocom.org/libosmocore/,
73
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
74
75
All of these download instructions hold true for any of the git repositories
76
besides libosmocore.
77
78
79
h1. Details and Troubleshooting
80
81
Here is a list of the most common configuration items or pitfalls to be
82
aware of when building specific Osmocom projects.
83
84
h2. Non-GNU Systems
85
86
On systems like FreeBSD, you need to run @gmake@ instead of @make@.
87
88 7 neels
h2. Cross-Compiling for a BTS Platform
89
90
To build new software for the sysmoBTS and Litecell 1.5, you will typically
91
cross-compile using an SDK matching the BTS. You should find specific instructions
92
in, for example, the sysmoBTS manual.
93
94 6 neels
h2. General ./configure options
95
96
To provide the installation location, which is /usr/local by default:
97
<pre>
98
./configure --prefix=$HOME/my_osmocom_inst
99
</pre>
100
101
If you choose a non-standard location, later builds may fail to find it.
102
For example, if you built libosmocore with a custom prefix, a subsequent
103
build of libosmo-abis, which needs libosmocore installed, may fail.
104
You can tell a build process where to look for libraries to compile against
105
using the @PKG_CONFIG_PATH@ environment variable.
106
107
Furthermore, when you want to run binaries compiled against libraries
108
installed in a non-standard location, you will have to use the
109
@LD_LIBRARY_PATH@ environment variable to successfully load the binary.
110
Particularly, the @make check@ step typically runs such binaries,
111
as well as when you would like to run the installed binaries yourself.
112
113
For example:
114
115
<pre>
116
mkdir -p $HOME/osmo/src
117
cd $HOME/osmo/src
118
git clone git://git.osmocom.org/libosmocore
119
cd libosmocore
120
autoreconf -fi
121
./configure --prefix=$HOME/osmo/inst --disable-pcsc
122
make -j5
123 7 neels
make check
124
make install
125
126
cd ..
127
git clone git://git.osmocom.org/libosmo-abis
128
cd libosmo-abis
129
autoreconf -fi
130
export PKG_CONFIG_PATH=$HOME/osmo/inst/lib/pkgconfig
131
./configure --prefix=$HOME/osmo/inst
132
make -j5
133
export LD_LIBRARY_PATH=$HOME/osmo/inst/lib
134
make check
135
make install
136 6 neels
</pre>
137
138 7 neels
Note that PKG_CONFIG_PATH points at the prefix's lib/pkgconfig and is needed
139
during the configure step of a library;
140
141
And that LD_LIBRARY_PATH is needed when running binaries that need libraries
142
installed in the non-standard location, here via @make check@.
143
144
Furthermore, when installing to an SDK's sysroot location, you would usually
145
set @DESTDIR@ to the sysroot with @--prefix=/usr@, resulting in an install
146
location of @$DESTDIR/usr@.
147
148
149 6 neels
h2. libosmocore
150
151
When @libpcsclite@ is not easily available, e.g. when building for a BTS target platform:
152
<pre>
153
./configure --disable-pcsc
154
</pre>
155 1 neels
156 7 neels
h2. openbsc
157
158
@openbsc@ is so far the only source tree where the build commands must be run
159
a level deeper than the source tree's root. Enter the second @openbsc@ dir:
160
161
<pre>
162
git clone git://git.osmocom.org/openbsc
163
cd openbsc/openbsc
164
autoreconf -fi
165
[...]
166
</pre>
167
168
h1. Example: completely build openbsc
169
170
This is an example of a complete build process for 2G openbsc and openggsn,
171
including SMPP and the "nat" binaries, to the @/usr/local@ prefix; it is assumed
172
that your system by default scans @/usr/local@ for installed libraries:
173
174
<pre>
175
osmo_src=$HOME/osmo/src
176
mkdir -p $osmo_src
177
178
cd $osmo_src
179
git clone git://git.osmocom.org/libosmocore
180
cd libosmocore
181
autoreconf -fi
182
./configure
183
make -j5
184
make check
185
make install
186
187
cd $osmo_src
188
git clone git://git.osmocom.org/libosmo-abis
189
cd libosmo-abis
190
autoreconf -fi
191
./configure
192
make -j5
193
make check
194
make install
195
196
cd $osmo_src
197
git clone git://git.osmocom.org/libosmo-netif
198
cd libosmo-netif
199
autoreconf -fi
200
./configure
201
make -j5
202
make check
203
make install
204
205
cd $osmo_src
206
git clone git://git.osmocom.org/libosmo-sccp
207
cd libosmo-sccp
208
autoreconf -fi
209
./configure
210
make -j5
211
make check
212
make install
213
214
cd $osmo_src
215
git clone git://git.osmocom.org/libsmpp34
216
cd libsmpp34
217
autoreconf -fi
218
./configure
219
make
220
make check
221
make install
222
223
cd $osmo_src
224
git clone git://git.osmocom.org/openggsn
225
cd openggsn
226
autoreconf -fi
227
./configure
228
make -j5
229
make check
230
make install
231
232
cd $osmo_src
233
git clone git://git.osmocom.org/openbsc
234
cd openbsc/openbsc
235
autoreconf -fi
236
./configure --enable-smpp --enable-osmo-bsc --enable-nat
237
make -j5
238
make check
239 1 neels
make install
240 8 neels
241
which osmo-nitb
242
osmo-nitb --version
243 7 neels
</pre>
244 6 neels
245
h1. Example: build script
246 9 neels
247
This is a shell script that builds openbsc and openggsn,
248
expecting the git clones to be ready in the current directory:
249
250
attachment:build_2G.sh
Add picture from clipboard (Maximum size: 48.8 MB)