Building FlightGear - Linux: Difference between revisions

Jump to navigation Jump to search
m
Add CentOS
m (added link to Ubuntu)
m (Add CentOS)
(15 intermediate revisions by 6 users not shown)
Line 1: Line 1:
{{Main article|Building Flightgear}}  
{{Main article|Building Flightgear}}  
{{WIP}}


This section describes how to build [[FlightGear]] on Linux system.
This section describes how to build [[FlightGear]] on Linux system.
Line 7: Line 9:
openSUSE also provides binary packages of the latest development version, which are continuously updated.
openSUSE also provides binary packages of the latest development version, which are continuously updated.
Follow [http://software.opensuse.org/download.html?lang=en&project=games:FlightGear:Unstable&package=fgrun this link] to select your openSUSE version and install, or manually add ''games:FlightGear:Unstable'' to your ''YaST Software Repositories''.
Follow [http://software.opensuse.org/download.html?lang=en&project=games:FlightGear:Unstable&package=fgrun this link] to select your openSUSE version and install, or manually add ''games:FlightGear:Unstable'' to your ''YaST Software Repositories''.
For Ubuntu, there is a PPA that provides the latest development version of FlightGear and SimGear and a recent version of FlightGear data. See [https://launchpad.net/~saiarcot895/+archive/flightgear-edge this page] for more info. To add the PPA, run <tt>sudo apt-add-repository ppa:saiarcot895/flightgear-edge</tt>.


Or if you develop on Ubuntu or Debian, consider trying the script described in [[Scripted Compilation on Linux Debian/Ubuntu]].
Or if you develop on Ubuntu or Debian, consider trying the script described in [[Scripted Compilation on Linux Debian/Ubuntu]].
Line 18: Line 22:
=== Gentoo ===
=== Gentoo ===
* Gentoo users can also use overlays to build FlightGear without much hassle: [[Building Flightgear - Gentoo]].
* Gentoo users can also use overlays to build FlightGear without much hassle: [[Building Flightgear - Gentoo]].
=== CentOS ===
CentOS users can follow these instructions to build FlightGear on [[Building Flightgear - CentOS | CentOS 8]].


== Requirements ==
== Requirements ==
{{Note|as of 12/2017, people may have to build using at least OSG 3.4 due to some compilation issues -for details, refer to [[Howto:Building FlightGear without HiDPI support]]}}
Edit 12/9/15 - These instructions are out of date! Do not use for compiling.
Before you can compile FlightGear, you need to have the following installed on your computer:
Before you can compile FlightGear, you need to have the following installed on your computer:


'''C++ compiler'''
'''C++ compiler'''


These are: c++, cpp, gcc, g++ found under the /usr/bin directory.  You will also need to have the tools '''autoconf''' and '''automake1.9''' installed.
These are: c++, cpp, gcc, g++ found under the <code>/usr/bin</code> directory.  You will also need to have the tools '''autoconf''' and '''automake1.9''' installed.


'''GIT'''
'''GIT'''
Line 34: Line 44:
More specifically, your system needs the support for hardware accelerated graphics.  You can check for this by running the following in a [[command line]]:
More specifically, your system needs the support for hardware accelerated graphics.  You can check for this by running the following in a [[command line]]:


glxinfo | grep direct
<syntaxhighlight lang="bash">
$ glxinfo | grep direct
</syntaxhighlight>


Note: To run the above command, you need to have the tool '''mesa-utils''' installed.
Note: To run the above command, you need to have the tool '''mesa-utils''' installed.
Line 48: Line 60:
  direct rendering: No
  direct rendering: No


Don't panic yet.  This may just mean some required libraries for hardware accelerated graphic are missing.  Go ahead and try installing plib 1.8.5 and its dependencies first.  If you still get the above message, then you will need to do some googling and troubleshoot yourself.
Don't panic yet.  This may just mean some required libraries for hardware accelerated graphic are missing.  Go ahead and try installing '''plib 1.8.5''' and its dependencies first.  If you still get the above message, then you will need to do some googling and troubleshoot yourself.


== Dependencies ==
== Dependencies ==
FlightGear is dependent on quite a few number of libraries.  You do not need to compile all of them yourself, but you will at least need to have their development version installed.  For example, the development version for package plib1.8.5 is plib1.8.5'''-dev'''.
 
FlightGear is dependent on quite a few number of libraries.  You do not need to compile all of them yourself, but you will at least need to have their development version installed.  For example, the development version for package <tt>plib1.8.5</tt> is <tt>plib1.8.5</tt>'''-dev'''.


The dependency is summarized in the following tree.  Please note that each library has its own dependencies, and most of these are not shown here.
The dependency is summarized in the following tree.  Please note that each library has its own dependencies, and most of these are not shown here.


* FlightGear
* <tt>FlightGear</tt>
** [http://kcat.strangesoft.net/openal.html OpenAL]
** [http://kcat.strangesoft.net/openal.html <tt>OpenAL</tt>]
** SimGear
** <tt>SimGear</tt>
*** [http://plib.sourceforge.net/ PLIB]. Since March 2008, you will need version 1.8.5 - your distro probably supplies 1.8.4 still.
*** [http://plib.sourceforge.net/ <tt>PLIB</tt>]. Since March 2008, you will need version 1.8.5 - your distro probably supplies 1.8.4 still.
**** For versions pre March 2008: (Free)GLUT or SDL (We recommend the use of SDL over Free/GLUT, [http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg16153.html however since March 2008, FreeGLUT as well as SDL are both considered deprecated, please only use --enable-osgviewer during configuration instead])  
**** For versions pre March 2008: (Free)<tt>GLUT</tt> or <tt>SDL</tt> (We recommend the use of <tt>SDL</tt> over <tt>Free/GLUT</tt>, [http://www.mail-archive.com/flightgear-devel@lists.sourceforge.net/msg16153.html however since March 2008, <tt>FreeGLUT</tt> as well as <tt>SDL</tt> are both considered deprecated], please only use <code>--enable-osgviewer</code> during configuration instead)  
***  [[OpenSceneGraph]]  (check link for compatible versions)
***  <tt>[[OpenSceneGraph]]</tt> (check link for compatible versions)
*** You also need the development files for several basic libraries to build the software, among them the following (the package names are for Debian and derivatives(?)):
*** You also need the development files for several basic libraries to build the software, among them the following (the package names are for Debian and derivatives(?)):
**** libfreetype6-dev
**** <tt>libfreetype6-dev</tt>
**** libjpeg62-dev
**** <tt>libjpeg62-dev</tt>
**** libungif4-dev
**** <tt>libungif4-dev</tt>
**** libtiff4-dev
**** <tt>libtiff4-dev</tt>
**** libpng12-dev
**** <tt>libpng12-dev</tt>
**** libxmu-dev
**** <tt>libxmu-dev</tt>
**** libxi-dev
**** <tt>libxi-dev</tt>
**** zlib1g-dev
**** <tt>zlib1g-dev</tt>
**** libglut3-dev
**** <tt>libglut3-dev</tt>


If you attack the above dependencies in the order listed below, you should be good:
If you attack the above dependencies in the order listed below, you should be good:


1. Glut. Most distributions include glut packages, although you may have to hunt for them. Make sure you install both the glut and glut-devel packages, otherwise FlightGear may be able to compile but won't run correctly.
# <tt>glut</tt> Most distributions include glut packages, although you may have to hunt for them. Make sure you install both the <tt>glut</tt> and <tt>glut-devel</tt> packages, otherwise FlightGear may be able to compile but won't run correctly.
 
# <tt>zlib</tt> Most distributions install the basic <tt>zlib</tt> libraries by default, but not the development portions. If you don't have <tt>zlib.h</tt>, you probably need to install the <tt>zlib-devel</tt> package for your distribution.  
2. Zlib. Most distributions install the basic zlib libraries by default, but not the development portions. If you don't have zlib.h, you probably need to install the zlib-devel package for your distribution.  
# <tt>plib</tt> Portability libraries and scene graph.  
 
# <tt>[[OpenSceneGraph]]</tt>
3. Plib - portability libraries and scene graph.  
# <tt>simgear</tt> Simulation support libraries. If you are building FlightGear from Git, you need the Git version of SimGear. If you have strange build errors, one of the first things to check is that you have an up-to-date version of SimGear built and installed.
 
4.  [[OpenSceneGraph]]  
 
5. SimGear - Simulation support libraries. If you are building FlightGear from Git, you need the Git version of SimGear. If you have strange build errors, one of the first things to check is that you have an up-to-date version of SimGear built and installed.


== Compiling ==
== Compiling ==
Assuming you are root, do:
Assuming you are root, do:
cd /usr/local/src
 
<syntaxhighlight lang="bash">
# cd /usr/local/src
</syntaxhighlight>


'''Note:''' When tracking a fast changing software like FlightGear/Git it is highly advisable to install it in a separate directory. That way one can also easily build and reinstall without being root, which greatly reduces the risk of messing up one's system.
'''Note:''' When tracking a fast changing software like FlightGear/Git it is highly advisable to install it in a separate directory. That way one can also easily build and reinstall without being root, which greatly reduces the risk of messing up one's system.
Line 96: Line 108:


Clone the SimGear git repository and set it up to track the 'next' branch.
Clone the SimGear git repository and set it up to track the 'next' branch.
 
 
git clone git://mapserver.flightgear.org/git/simgear
<syntaxhighlight lang="bash">
$ git clone git://git.code.sf.net/p/flightgear/simgear simgear
</syntaxhighlight>


or if the git port is firewalled on you network, use the http transport
or if the git port is firewalled on you network, use the http transport


git clone http://mapserver.flightgear.org/git/simgear
<syntaxhighlight lang="bash">
$ git clone http://git.code.sf.net/p/flightgear/simgear simgear
</syntaxhighlight>


By default after cloning you should have a local next branch that tracks the master next branch. It can be updated it with git pull.
By default after cloning you should have a local next branch that tracks the master next branch. It can be updated it with <code>git pull</code>.


'''Step 2:'''
'''Step 2:'''
Line 110: Line 126:


Next, go into the directory and make preparations for the compilation:
Next, go into the directory and make preparations for the compilation:
cd simgear
 
cmake .
<syntaxhighlight lang="bash">
$ cd simgear
$ cmake .
</syntaxhighlight>
   
   
'''Note''' that if you don't want to install simgear globally on the system but in a specific directory, you can do so by adding --prefix=/path/to/your/fgInstallation to the ./configure command
'''Note''' that if you don't want to install <tt>simgear</tt> globally on the system but in a specific directory, you can do so by adding <code>-DCMAKE_INSTALL_PREFIX=/path/to/your/fgInstallation</code> to the <code>cmake</code> command


'''Step 3:'''
'''Step 3:'''


Compile and install SimGear by doing:
Compile and install SimGear by doing:
make; make install


<syntaxhighlight lang="bash">
$ make; make install
</syntaxhighlight>


''Note:'' with gcc 4.2 or later,on some platforms, you can get compiling errors about alc.h like:  
''Note:'' with <tt>gcc</tt> 4.2 or later,on some platforms, you can get compiling errors about <tt>alc.h</tt> like:  


  '<anonymous>' has incomplete type  
  '<anonymous>' has incomplete type  
Line 131: Line 152:


Clone the FlightGear git repository and set it up to track the 'next' branch.
Clone the FlightGear git repository and set it up to track the 'next' branch.
git clone git://gitorious.org/fg/flightgear.git
 
<syntaxhighlight lang="bash">
$ git clone git://git.code.sf.net/p/flightgear/flightgear
</syntaxhighlight>


By default after cloning you should have a local next branch that tracks the master next branch. It can be updated it with git pull.
By default after cloning you should have a local next branch that tracks the master next branch. It can be updated it with git pull.
Line 138: Line 162:


Next, go into the folder and make preparations for the compilation:
Next, go into the folder and make preparations for the compilation:
cd flightgear
 
''./autogen.sh''
<syntaxhighlight lang="bash">
./configure
$ cd flightgear
$ ./autogen.sh
$ ./configure
</syntaxhighlight>


Note that if you don't want to install simgear globally on the system but in a specific directory, you can do so by adding --prefix=/path/to/your/fgInstallation to the ./configure command.
Note that if you don't want to install simgear globally on the system but in a specific directory, you can do so by adding --prefix=/path/to/your/fgInstallation to the ./configure command.
If you didn't install OSG globally or in the same prefix as SimGear and FlightGear, you have to pass the OSG directory to the configure-command like this:
If you didn't install OSG globally or in the same prefix as SimGear and FlightGear, you have to pass the OSG directory to the configure-command like this:
./configure --prefix=/path/to/fgInstallation --with-osg=/path/to/osg/installation --enable-osgviewer
 
<syntaxhighlight lang="bash">
$ ./configure --prefix=/path/to/fgInstallation --with-osg=/path/to/osg/installation --enable-osgviewer
</syntaxhighlight>
 
In this case you have to tell your system where to find the OSG libraries before you can run flightgear:
In this case you have to tell your system where to find the OSG libraries before you can run flightgear:
  export LD_LIBRARY_PATH=/path/to/osgInstallation/lib:$LD_LIBRARY_PATH
 
<syntaxhighlight lang="bash">
$ export LD_LIBRARY_PATH=/path/to/osgInstallation/lib:$LD_LIBRARY_PATH
</syntaxhighlight>


'''Step 3:'''
'''Step 3:'''


Now you can compile and install Flightgear by:
Now you can compile and install Flightgear by:
make; make install
 
<syntaxhighlight lang="bash">
$ make; make install
</syntaxhighlight>


'''Step 4:'''
'''Step 4:'''


Clone the data directory:
Clone the data directory:
git clone git://gitorious.org/fg/fgdata.git
 
<syntaxhighlight lang="bash">
$ git clone git://git.code.sf.net/p/flightgear/fgdata
</syntaxhighlight>


The data directory is large (almost 2.5GB) so it will take considerable time to download.
The data directory is large (almost 2.5GB) so it will take considerable time to download.
There mirror of fgdata that might be faster to download from:
There mirror of fgdata that might be faster to download from:
git clone git://mapserver.flightgear.org/fgdata
 
<syntaxhighlight lang="bash">
$ git clone git://mapserver.flightgear.org/fgdata
</syntaxhighlight>


The mirror is synchronized with the master so either will do.
The mirror is synchronized with the master so either will do.


And install it in (or as) /usr/local/share/FlightGear
And install it in (or as) /usr/local/share/FlightGear
mv fgdata /usr/local/share/flightgear


<syntaxhighlight lang="bash">
$ mv fgdata /usr/local/share/flightgear
</syntaxhighlight>


== External links ==
== External links ==
88

edits

Navigation menu