Project

General

Profile

Build from Source » History » Version 12

wirelesss, 12/02/2016 05:41 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 12 wirelesss
h1. Build from debian packages
79
     
80
h2. [[OpenBSC_GPRS]] Building from debian packages
81 11 wirelesss
82
<pre>
83 12 wirelesss
cd libosmocore; dpkg-buildpackage -tc -uc -us; sudo dpkg -i ../*.deb
84
cd libosmo-abis; dpkg-buildpackage -tc -uc -us; sudo dpkg -i ../*.deb
85
cd libosmo-netif; dpkg-buildpackage -tc -uc -us; sudo dpkg -i ../*.deb
86
cd openbsc/openbsc; dpkg-buildpackage -tc -uc -us; sudo dpkg -i ../*.deb 
87 11 wirelesss
</pre>
88
89 12 wirelesss
h1. Details and Troubleshooting
90 11 wirelesss
91 12 wirelesss
Here is a list of the most common configuration items or pitfalls to be
92
aware of when building specific Osmocom projects.
93
94 6 neels
95
h2. Non-GNU Systems
96
97
On systems like FreeBSD, you need to run @gmake@ instead of @make@.
98
99 7 neels
h2. Cross-Compiling for a BTS Platform
100
101
To build new software for the sysmoBTS and Litecell 1.5, you will typically
102
cross-compile using an SDK matching the BTS. You should find specific instructions
103
in, for example, the sysmoBTS manual.
104
105 6 neels
h2. General ./configure options
106
107
To provide the installation location, which is /usr/local by default:
108
<pre>
109
./configure --prefix=$HOME/my_osmocom_inst
110
</pre>
111
112
If you choose a non-standard location, later builds may fail to find it.
113
For example, if you built libosmocore with a custom prefix, a subsequent
114
build of libosmo-abis, which needs libosmocore installed, may fail.
115
You can tell a build process where to look for libraries to compile against
116
using the @PKG_CONFIG_PATH@ environment variable.
117
118
Furthermore, when you want to run binaries compiled against libraries
119
installed in a non-standard location, you will have to use the
120
@LD_LIBRARY_PATH@ environment variable to successfully load the binary.
121
Particularly, the @make check@ step typically runs such binaries,
122
as well as when you would like to run the installed binaries yourself.
123
124
For example:
125
126
<pre>
127
mkdir -p $HOME/osmo/src
128
cd $HOME/osmo/src
129
git clone git://git.osmocom.org/libosmocore
130
cd libosmocore
131
autoreconf -fi
132
./configure --prefix=$HOME/osmo/inst --disable-pcsc
133
make -j5
134 7 neels
make check
135
make install
136
137
cd ..
138
git clone git://git.osmocom.org/libosmo-abis
139
cd libosmo-abis
140
autoreconf -fi
141
export PKG_CONFIG_PATH=$HOME/osmo/inst/lib/pkgconfig
142
./configure --prefix=$HOME/osmo/inst
143
make -j5
144
export LD_LIBRARY_PATH=$HOME/osmo/inst/lib
145
make check
146
make install
147 6 neels
</pre>
148
149 7 neels
Note that PKG_CONFIG_PATH points at the prefix's lib/pkgconfig and is needed
150
during the configure step of a library;
151
152
And that LD_LIBRARY_PATH is needed when running binaries that need libraries
153
installed in the non-standard location, here via @make check@.
154
155
Furthermore, when installing to an SDK's sysroot location, you would usually
156
set @DESTDIR@ to the sysroot with @--prefix=/usr@, resulting in an install
157
location of @$DESTDIR/usr@.
158
159
160 6 neels
h2. libosmocore
161
162
When @libpcsclite@ is not easily available, e.g. when building for a BTS target platform:
163
<pre>
164
./configure --disable-pcsc
165
</pre>
166 1 neels
167 7 neels
h2. openbsc
168
169
@openbsc@ is so far the only source tree where the build commands must be run
170
a level deeper than the source tree's root. Enter the second @openbsc@ dir:
171
172
<pre>
173
git clone git://git.osmocom.org/openbsc
174
cd openbsc/openbsc
175
autoreconf -fi
176
[...]
177
</pre>
178
179
h1. Example: completely build openbsc
180
181
This is an example of a complete build process for 2G openbsc and openggsn,
182
including SMPP and the "nat" binaries, to the @/usr/local@ prefix; it is assumed
183
that your system by default scans @/usr/local@ for installed libraries:
184
185
<pre>
186
osmo_src=$HOME/osmo/src
187
mkdir -p $osmo_src
188
189
cd $osmo_src
190
git clone git://git.osmocom.org/libosmocore
191
cd libosmocore
192
autoreconf -fi
193
./configure
194
make -j5
195
make check
196
make install
197
198
cd $osmo_src
199
git clone git://git.osmocom.org/libosmo-abis
200
cd libosmo-abis
201
autoreconf -fi
202
./configure
203
make -j5
204
make check
205
make install
206
207
cd $osmo_src
208
git clone git://git.osmocom.org/libosmo-netif
209
cd libosmo-netif
210
autoreconf -fi
211
./configure
212
make -j5
213
make check
214
make install
215
216
cd $osmo_src
217
git clone git://git.osmocom.org/libosmo-sccp
218
cd libosmo-sccp
219
autoreconf -fi
220
./configure
221
make -j5
222
make check
223
make install
224
225
cd $osmo_src
226
git clone git://git.osmocom.org/libsmpp34
227
cd libsmpp34
228
autoreconf -fi
229
./configure
230
make
231
make check
232
make install
233
234
cd $osmo_src
235
git clone git://git.osmocom.org/openggsn
236
cd openggsn
237
autoreconf -fi
238
./configure
239
make -j5
240
make check
241
make install
242
243
cd $osmo_src
244
git clone git://git.osmocom.org/openbsc
245
cd openbsc/openbsc
246
autoreconf -fi
247
./configure --enable-smpp --enable-osmo-bsc --enable-nat
248
make -j5
249
make check
250 1 neels
make install
251 8 neels
252
which osmo-nitb
253
osmo-nitb --version
254 7 neels
</pre>
255 6 neels
256
h1. Example: build script
257 9 neels
258
This is a shell script that builds openbsc and openggsn,
259
expecting the git clones to be ready in the current directory:
260
261
attachment:build_2G.sh
Add picture from clipboard (Maximum size: 48.8 MB)