Difference between revisions of "Building FlightGear - Debian"

From FlightGear wiki
Jump to navigation Jump to search
m (Add libglew-dev as dependency)
(Redirected to Building_FlightGear_-_Devuan until someone takes over here.)
Line 1: Line 1:
<!--{{WIP|Article is being updated for the 2016.2 release.}} <!-- die RCs nicht vergessen! -->
<!-- {{note|So far the author wasn't able to compile a working FlightGear 3.4 on Jessie. Therefore this article will not receive an update until 3.6 is released. Compile and run GIT/next on Jessie works as decribed below, just skip the libboost part.}} -->
HowTo build [[FlightGear]] stable (<u>[[Changelog_2016.4|2016.4]]</u>) or bleeding edge development version, hereinafter simply called <u>[[FlightGear_Git#Repositories_and_branches | next]]</u>, on [http://www.debian.org/ Debian] GNU/Linux Stable (<u>Jessie</u>). Users of Testing or Unstable at least have to change package names (version numbering) accordingly.<br />
Instructions also apply on [http://devuan.org/ Devuan] GNU/Linux Jessie (Beta).
The meaning of this article is to be a short, '''checklist''' like, overview of the specific steps to compile FlightGear and components on Debian. For more detailed information please refer to the main article [[Building_FlightGear_-_Linux | Building FlightGear on Linux]].
If you don't want to get your hands dirty, have a look at [[Scripted Compilation on Linux Debian/Ubuntu]].
[[File:Zeichen_144_icon.png|21px]] For beginners with compiling it is highly recommended to follow this guide step by step. Any modification to most of the here used commands may cause trouble.
== Requirements and Preparations ==
A bunch of packages (as well as some of their dependencies) are required to compile FlightGear:
; Tools
su -c "apt-get install automake cmake g++ gcc git make sed subversion"
; Dependencies
su -c "apt-get install  \
  freeglut3-dev  libboost-dev      libcurl4-openssl-dev  libdbus-1-dev \
  libfltk1.3-dev  libglew-dev      libgtkglext1-dev      libjpeg62-turbo-dev \
  libopenal-dev  libopenscenegraph-dev                  libqt5opengl5-dev \
  librsvg2-dev    libxml2-dev      qt5-default"
: If you prefer you might replace "libcurl4-openssl-dev" by "libcurl4-gnutls-dev".
: If "libjpeg62-turbo-dev" breaks package dependencies, just install one of the other versions' -dev.
: Add "libudev-dev" if you need FG's feature <code>-D EVENT_INPUT=ON</code>.
: [[File:Zeichen_144_icon.png|21px]] During installation development packages of libraries which are going to be compiled ''must not'' be installed. They can safely be re-installed after compilation. Namely these are "libplib-dev" and "simgear-dev". <!--For <u>Wheezy</u> additionally "libboost-dev", "libopenthreads-dev" and "libopenscenegraph-dev".-->
osg: libxml2-dev libcurl4-openssl-dev libgtkglext1-dev libopenal-dev libpng12-dev librsvg2-dev libtiff4-dev
sg: libalut-dev libboost1.42-dev libsvn-dev
fg: freeglut3-dev (libfltk1.1-dev (für fgadmin) fluid) (libudev-dev)
== Build and install ==
Because we are going to install versions different to the ones in the Debian repositories, it is recommended to install FlightGear in a place independent of the base system, such as <code>/usr/local/FG-2016.4</code> or <code>$HOME/FG-2016.4</code>. This way also has the advantage of easily managing several FlightGear versions, even with different versions of OpenSceneGraph and/or plib, simply by altering the installation prefix. I suggest to make this directory writeable by the user so there is no need to become root for the <code>make -j2 && make install</code> commands. We'll use <code>$FG_INSTALL_DIR</code> as a [http://www.cmiss.org/cmgui/wiki/SettingEnvironmentVariablesInBash placeholder] for this directory. <br />
Another placeholder will be <code>$FG_SRC_DIR</code>, it stands for the absolute path to the directory which is supposed to keep the folders of the various source codes. So, in the instructions below, you have to replace these with the local paths or even <code>export</code> them (in every terminal you're using them) for the process:
export FG_INSTALL_DIR=$HOME/FG-2016.4 && mkdir $FG_INSTALL_DIR
export FG_SRC_DIR=$HOME/src && mkdir $FG_SRC_DIR
Have in mind that the data is a relatively large download (GIT about 2.3 GiB (required disk space 4 GiB) / 2016.4 about 1.6 GiB). So, to save some time, it is a good idea to [[#FlightGear data|fetch]] it while building the sources. <br />
For some basic info on git commands for FlightGear users we have a [[Git_for_Laymen#How_do_I_use_the_git_repository_to_update_Flightgear_stuff.3F|git for laymen]] section. <br />
For more/advanced cmake options and SimGear's and FlightGear's optional features see the [[Building_using_CMake#Optional_Features|cmake]] article.
[[File:Zeichen_144_icon.png|21px]] Do '''not''' mix instructions for <u>2016.4</u> and <u>next</u>! Not even for fgdata, mixing versions will almost certainly break the installation.
=== libboost ===
<u>Debian 7.x/Wheezy</u> only! <br />
<u>2016.4</u> and <u>next</u>: <br />
Unfortunately version 1.52 or newer is recommended while Wheezy ships with 1.49:
<nowiki>wget -O boost_1_52_0.tar.bz2 http://sourceforge.net/projects/boost/files/boost/1.52.0/boost_1_52_0.tar.bz2/download</nowiki>
tar xjf boost_1_52_0.tar.bz2
cp -R boost_1_52_0/boost $FG_INSTALL_DIR/include/
For cmake to find this alternate libboost version it has to be told where to look for it. Use the following cmake commands instead of the ones given at the respective part. <br />
cmake -D Boost_INCLUDE_DIR="$FG_INSTALL_DIR/include/" \
cmake -D Boost_INCLUDE_DIR="$FG_INSTALL_DIR/include/" \
=== [[plib]] ===
<u>2016.4</u> and <u>next</u>: <br />
Latest SVN is [http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg20793.html required].
<nowiki>svn co https://svn.code.sf.net/p/plib/code/trunk plib.svn</nowiki>
cd plib.svn
sed s/PLIB_TINY_VERSION\ \ 5/PLIB_TINY_VERSION\ \ 6/ -i src/util/ul.h
./configure --prefix=$FG_INSTALL_DIR
make -j2 && make install
=== [[OpenSceneGraph]] ===
<u>Debian 7.x/Wheezy</u> only! <br />
<u>2016.1</u>'s optimum version is OSG 3.2.1. <br />
Same for <u>next</u> at the time of the release. This might change over time.<br />
<u>2016.1</u> and <u>next</u>:
<nowiki>svn co http://svn.openscenegraph.org/osg/OpenSceneGraph/tags/OpenSceneGraph-3.2.1</nowiki>
mkdir build-osg; cd build-osg
cmake -D CMAKE_BUILD_TYPE="Release" -D LIB_POSTFIX="" -D Boost_INCLUDE_DIR="$FG_INSTALL_DIR/include/" \
make -j2 && make install
=== [[SimGear]] ===
<u>2016.4</u> and <u>next</u>:
<nowiki>git clone git://git.code.sf.net/p/flightgear/simgear simgear.git</nowiki>
<u>2016.4</u> only:
cd simgear.git
git checkout release/2016.4
<u>2016.4</u> and <u>next</u>:
mkdir $FG_SRC_DIR/build-sg && cd $FG_SRC_DIR/build-sg
make -j2 && make install
=== FlightGear source ===
<u>2016.4</u> and <u>next</u>:
<nowiki>git clone git://git.code.sf.net/p/flightgear/flightgear flightgear.git</nowiki>
<u>2016.4</u> only:
cd flightgear.git
git checkout release/2016.4
<u>2016.4</u> and <u>next</u>:
mkdir $FG_SRC_DIR/build-fg && cd $FG_SRC_DIR/build-fg
make -j2 && make install
=== FlightGear data ===
<u>2016.4</u> only:
<nowiki>wget http://sourceforge.net/projects/flightgear/files/release-2016.4/FlightGear-2016.4.2-data.tar.bz2/download -O FlightGear-2016.4.2-data.tar.bz2</nowiki>
tar xjf FlightGear-2016.4.2-data.tar.bz2
<u>next</u> only:
<nowiki>git clone git://git.code.sf.net/p/flightgear/fgdata fgdata</nowiki>
== Trial run and finishing process ==
When all the builds are done and the data download has finished it is time for a test run:
$FG_INSTALL_DIR/bin/fgfs --launcher
: The <code>fgfs</code> binary needs to find our self compiled libraries at runtime and therefore we have to tell the linker (ld) where to find them. That is what the first line here does. You might want to add this line to your <code>$HOME/.bashrc</code> to have this as a persistent setting (may cause problems, if one has installed more than one version of FlightGear!).
: Have in mind, the <code>$FG_INSTALL_DIR</code> and <code>$FG_SRC_DIR</code> variables are available for this session only. For future use of these lines, replace them by the real paths.
To avoid the need to give the path to the <code>fgfs</code> command each time, you might consider to create a symlink at a place that is listed in $PATH:
ln -s $FG_INSTALL_DIR/bin/fgfs $HOME/bin/fgfs
For the future, if you want to start FlightGear from command line have a look at [[fgfsrc]], if you prefer a graphical user interface continue with [[#fgrun|compiling fgrun]] or check out another [http://wiki.flightgear.org/Category:FlightGear_front_ends launcher].
== Optional Software ==
[[File:Zeichen_101_icon.png|21px]] Some of the below instructions are not up to date. Please feel free to revise them.
Feel free to add the commands to install other FlightGear related projects.
=== [[Atlas]] ===
One more Package has to be installed: "libglew1.5-dev"
<nowiki>git clone http://mapserver.flightgear.org/git/atlas</nowiki>
cd atlas
./configure --prefix=$FG_INSTALL_DIR --with-fgbase=$FG_INSTALL_DIR/data
make -j2 && make install
cp -R $FG_SRC_DIR/atlas/src/data/* $FG_INSTALL_DIR/data/Atlas
<!--If it does not compile, go back some commits. Before invoking the <code>autogen.sh</code> command do:
git reset --hard 5a27c351a8c03c7fa47cba0b4af7f4e23e4c31b0-->
=== [[FGCom_3.0|fgcom 3.0]] ===
There is nothing to compile because FGCom 3.0 is compiled with FlightGear.
If you can't compile FlightGear you can download a pre-built binary at [http://fgcom.flightgear.org/download http://fgcom.flightgear.org/download]
=== fgcom (FG 2.12 and former) ===
For [[fgcom]] install package "libasound2-dev".
<nowiki>git clone http://mapserver.flightgear.org/git/fgcom fgcom.git</nowiki>
cd fgcom.git
git checkout -b next origin/next
mkdir $FG_SRC_DIR/build-fgcom; cd $FG_SRC_DIR/build-fgcom
make -j2 && make install
Create an .alsoftrc file as shown in [[FGCOM_Testing#Special_for_Linux_.28.alsoftrc.29|FGCOM Testing]].
=== [[fgrun]] ===
Package "fluid" has to be installed. <br />
<u>2016.1</u> and <u>next</u>:
<nowiki>git clone git://git.code.sf.net/p/flightgear/fgrun fgrun.git</nowiki>
<u>2016.1</u> only:
cd fgrun.git
git checkout release/2016.1
<u>2016.1</u> and <u>next</u>: <br />
mkdir $FG_SRC_DIR/build-fgrun; cd $FG_SRC_DIR/build-fgrun
make -j2 && make install
Execute it:
=== TaxiDraw ===
[[File:Zeichen_101_icon.png|21px]] Obsolete for airport creation, use [[WorldEditor]] instead. It is still useful for working on [[Interactive_traffic#Ground_networks|ground networks]]. <br />
To compile [[Taxidraw|TaxiDraw]] we need to install packag "wx2.8-headers" (at least, maybe even more than just that one. Please [http://wiki.flightgear.org/index.php?title=Talk:Building_FlightGear_-_Debian&action=edit&redlink=1 report]!
<nowiki>git clone git://mapserver.flightgear.org/taxidraw</nowiki>
cd taxidraw
./configure --prefix=$FG_INSTALL_DIR
make -j2 && make install
=== [[TerraGear]] ===
==== Automatic Installation ====
[[BuildingTerraGear_in_Ubuntu_910_(32-_or_64-bit)#Automatic Installation|link]]
If you are familiar with "download_and_compile.sh" script from Brisa you can donwload this script: http://clement.delhamaide.free.fr/download_and_compile_tg.sh
This script is similar to Brisa's one (only usable for Debian/Mint/Ubuntu). This script installs TerraGear (latest version) and terragear-gui.
; ''How to use it?''
sh terragear_download_and_compile.sh -j 2 ALL
; ''Need some help?''
Look at forum topics: http://forum.flightgear.org/viewtopic.php?f=20&t=14849
After success installation you can exectute this command line in the terragear/bin directory in order to display every --help for each binary files:
cd terragear/bin && for i in `ls`; do echo ""; echo "################# "$i" ##############"; ./$i --help; done
==== Basic Installation ====
To resolve some of the dependencies of TerraGear the <u>next</u> sections of steps [[#plib|plib]], [[#OpenSceneGraph|OpenSceneGraph]] and [[#SimGear|SimGear]] have to be done first. Additionally some packages and their dependencies have to be installed:
su -c "apt-get install \
  libgdal-dev libtiff4-dev libboost-signals-dev libboost-system-dev libboost-thread-dev"
<u>Squeeze</u> users have to compile the CGAL dependency.
On <u>Wheezy</u> just install package "libcgal-dev" instead.
wget https://gforge.inria.fr/frs/download.php/31174/CGAL-4.0.2.tar.bz2
tar xjf CGAL-4.0.2.tar.bz2
mkdir $FG_SRC_DIR/build-cgal; cd $FG_SRC_DIR/build-cgal
make -j2 && make install
# gpc install
mkdir $FG_SRC_DIR/gpc232 && cd $FG_SRC_DIR/gpc232
wget ftp://ftp.cs.man.ac.uk/pub/toby/gpc/gpc232-release.zip
unzip gpc232-release.zip
sed s/DBL_EPSILON/0.000001/ -i gpc.h
grep -A 18 '# Unix/Linux makefile' $FG_SRC_DIR/terragear-cs/README.gpc > Makefile
sed "s|/usr/local/lib|$FG_INSTALL_DIR/lib|" -i Makefile
sed "s|/usr/local/include|$FG_INSTALL_DIR/include|" -i Makefile
make -j2 && make install
# newmat install
mkdir $FG_SRC_DIR/newmat11 && cd $FG_SRC_DIR/newmat11
wget http://www.robertnz.net/ftp/newmat11.tar.gz
tar xzfv newmat11.tar.gz
make -f nm_gnu.mak
cp libnewmat.a $FG_INSTALL_DIR/lib
mkdir $FG_INSTALL_DIR/include/newmat
cp *.h $FG_INSTALL_DIR/include/newmat
Compile TerraGear:
git clone git://git.code.sf.net/p/flightgear/terragear terragear.git
cd terragear.git
git checkout scenery/ws2.0
mkdir $FG_SRC_DIR/build-tg; cd $FG_SRC_DIR/build-tg
make -j2 && make install
=== WorldEditor (WED) ===
Because this is the same for all Linux distributions the instructions are not listed here separately. Please refer to our [[WorldEditor#Linux|lead WED article]].
[[de:FlightGear bauen - Debian]]

Latest revision as of 14:45, 28 May 2017