Difference between revisions of "Compile In Linux"
(Remove _very_ outdated user stories.) |
(update to Ubuntu, Ogre and Bullet instructions) |
||
Line 18: | Line 18: | ||
See [http://www.freeorion.org/forum/viewtopic.php?p=56109#p56109 this forum post]. | See [http://www.freeorion.org/forum/viewtopic.php?p=56109#p56109 this forum post]. | ||
− | ===Ubuntu | + | ===Ubuntu=== |
− | + | This is a revision pass as of April 2014; hopefully it brings things current but may need some further revision. These revised instructions are hopefully generic to most Ubuntu releases as of April 2014, and should work for Lucid through Trusty subject to the extra notes below. You can check which version of a given package is provided by your Ubuntu release [http://packages.ubuntu.com/search?keywords=libboost-dev at this page] | |
− | + | To build gigi or FreeOrion you first need to install the following packages (using Synaptic or muon or apt-get) (you will need to have the [https://help.ubuntu.com/community/Repositories/Ubuntu#head-5bbef89639d9a7d93fe38f6356dc17847d373096 '''Universe''' repository included]): | |
− | + | ||
− | To build gigi or FreeOrion you first need to install the following packages using Synaptic (you will need to have the [https://help.ubuntu.com/community/Repositories/Ubuntu#head-5bbef89639d9a7d93fe38f6356dc17847d373096 '''Universe''' repository included]): | + | |
*build-essential | *build-essential | ||
*pkg-config | *pkg-config | ||
− | * | + | *python-dev (python 2.5+, preferably 2.7, but not python3) |
*cmake | *cmake | ||
− | * | + | *libltdl-dev |
*subversion | *subversion | ||
*libfreetype6-dev | *libfreetype6-dev | ||
Line 35: | Line 33: | ||
*libois-dev | *libois-dev | ||
*libopenal-dev | *libopenal-dev | ||
− | * | + | *libtiff4-dev |
You can install all of these (including dependencies) from the command line using this: | You can install all of these (including dependencies) from the command line using this: | ||
− | sudo apt-get install build-essential subversion pkg-config | + | sudo apt-get install build-essential subversion pkg-config libltdl-dev cmake |
− | sudo apt-get install | + | sudo apt-get install python-dev libfreetype6-dev libsdl1.2-dev libalut-dev libvorbis-dev libois-dev libtiff4-dev libopenal-dev |
− | Bullet | + | Also required are Boost, Ogre3D and Bullet. |
− | + | Boost (libboost-dev) will need to be at least 1.47+, and will preferably be 1.51+ ([http://packages.ubuntu.com/search?keywords=libboost-dev check here]). If your Ubuntu release provides a sufficient boost release then you can install it via | |
− | sudo apt-get install libboost | + | sudo apt-get install libboost-all-dev |
− | ====Ubuntu Lucid | + | Ogre3D (libogre-dev) needs to have been compiled with the same version of boost as you will be using to compile FreeOrion (can be checked via muon or synaptic), so if you have any uncertainty it may be best to compile Ogre3D yourself per instructions below. To install your releases standard Ogre version you can use the following on the command line: |
− | You have to compile required version of Boost(in Lucid there is no version 1. | + | sudo apt-get install libogre-dev |
+ | |||
+ | Bullet 2.73(or later), which is required to compile, is not in the official Ubuntu repository; see below for instructions. | ||
+ | |||
+ | ====Ubuntu Lucid==== | ||
+ | See [[Compile In Ubuntu Lucid Lynx]]. | ||
+ | You have to compile required version of Boost(in Lucid there is no version 1.47 or later) or get it from some repository. | ||
===Debian=== | ===Debian=== | ||
Line 52: | Line 56: | ||
====Lenny==== | ====Lenny==== | ||
− | Lenny provides version 1.35 of boost. You have to compile version 1. | + | Lenny provides version 1.35 of boost. You have to compile version 1.47 (or later) yourself. |
====Squeeze (testing) & Sid (unstable)==== | ====Squeeze (testing) & Sid (unstable)==== | ||
Line 68: | Line 72: | ||
===Ogre3D requirements=== | ===Ogre3D requirements=== | ||
+ | With current versions of Ogre it is probably best to follow [http://www.ogre3d.org/tikiwiki/tiki-index.php?page=CMake+Quick+Start+Guide&tikiversion=Linux the instructions here] | ||
====Ubuntu and Debian==== | ====Ubuntu and Debian==== | ||
Install Ogre3D requirements | Install Ogre3D requirements | ||
Line 75: | Line 80: | ||
===Compiling=== | ===Compiling=== | ||
+ | With current versions of Ogre it is probably best to follow [http://www.ogre3d.org/tikiwiki/tiki-index.php?page=CMake+Quick+Start+Guide&tikiversion=Linux the instructions here] | ||
+ | Previous Instructions | ||
Download Ogre3D sources and unpack them. Supported compiler g++ and gcc versions is only version 4.3 or 4.4. | Download Ogre3D sources and unpack them. Supported compiler g++ and gcc versions is only version 4.3 or 4.4. | ||
g++ --version | g++ --version | ||
Line 113: | Line 120: | ||
Bullet debian packets for some Debian/Ubuntu releases and architectures can be found from http://build.cazfi.net/deb/ | Bullet debian packets for some Debian/Ubuntu releases and architectures can be found from http://build.cazfi.net/deb/ | ||
+ | |||
+ | Bullet sourcecode downloads are also available at https://code.google.com/p/bullet/downloads/list | ||
===Building Bullet=== | ===Building Bullet=== |
Revision as of 20:53, 3 April 2014
Each linux distribution will come with varying components already installed, although some libraries may be older than the version required by FreeOrion. Hopefully the notes below will help to identify what is required for your particular distribution.
Contents
Compiler
Required compiler is gcc and g++ in version 4.3.3 or above.
Kernel
If you compile using kernel 2.6.22 or above, your binary will likely not run on any other system having a lower numbered kernel version. This is due to a feature called "eventfd" which boost uses if a kernel 2.6.22 or above is found.
To avoid this incompatibility, you can specify CPPDEFINES="BOOST_ASIO_DISABLE_EVENTFD" as a parameter to scons to disable usage of eventfd.
This issue should not be a problem at all if you don't share your binaries.
Platform specifics
OpenSuSE 12.2
See this forum post.
Ubuntu
This is a revision pass as of April 2014; hopefully it brings things current but may need some further revision. These revised instructions are hopefully generic to most Ubuntu releases as of April 2014, and should work for Lucid through Trusty subject to the extra notes below. You can check which version of a given package is provided by your Ubuntu release at this page To build gigi or FreeOrion you first need to install the following packages (using Synaptic or muon or apt-get) (you will need to have the Universe repository included):
- build-essential
- pkg-config
- python-dev (python 2.5+, preferably 2.7, but not python3)
- cmake
- libltdl-dev
- subversion
- libfreetype6-dev
- libsdl1.2-dev
- libalut-dev
- libvorbis-dev
- libois-dev
- libopenal-dev
- libtiff4-dev
You can install all of these (including dependencies) from the command line using this:
sudo apt-get install build-essential subversion pkg-config libltdl-dev cmake sudo apt-get install python-dev libfreetype6-dev libsdl1.2-dev libalut-dev libvorbis-dev libois-dev libtiff4-dev libopenal-dev
Also required are Boost, Ogre3D and Bullet. Boost (libboost-dev) will need to be at least 1.47+, and will preferably be 1.51+ (check here). If your Ubuntu release provides a sufficient boost release then you can install it via
sudo apt-get install libboost-all-dev
Ogre3D (libogre-dev) needs to have been compiled with the same version of boost as you will be using to compile FreeOrion (can be checked via muon or synaptic), so if you have any uncertainty it may be best to compile Ogre3D yourself per instructions below. To install your releases standard Ogre version you can use the following on the command line:
sudo apt-get install libogre-dev
Bullet 2.73(or later), which is required to compile, is not in the official Ubuntu repository; see below for instructions.
Ubuntu Lucid
See Compile In Ubuntu Lucid Lynx. You have to compile required version of Boost(in Lucid there is no version 1.47 or later) or get it from some repository.
Debian
Same as Ubuntu, but Bullet 2.73(or later), which is required to compile, is not in Debian repository. Also remove sudo from all commands and run these commands under root(to login type su). Ogre3D in required version is available only from Squeeze up.
Lenny
Lenny provides version 1.35 of boost. You have to compile version 1.47 (or later) yourself.
Squeeze (testing) & Sid (unstable)
You can install Boost and Ogre3D with command(under user root):
apt-get install libboost-dev libboost1.42-all-dev --install-recommends
Ogre3D
Packages
From Debian Squeeze and Ubuntu Lucid up there is no need to do next Ogre3D steps. However Debian Lenny does not provide ogre-dev binary package in required version. One can be found from http://www.cazfi.net/deb or in Andrew Fenn's repository.
(sudo) add-apt-repository ppa:andrewfenn (sudo) apt-get install libogre-dev
and install new Ogre3D. If you prefer to compile Ogre3D yourself, read on.
Ogre3D requirements
With current versions of Ogre it is probably best to follow the instructions here
Ubuntu and Debian
Install Ogre3D requirements
(sudo) apt-get install automake (sudo) apt-get install libzzip-dev libfreeimage-dev x11proto-xf86vidmode-dev libxxf86vm-dev (sudo) apt-get install libpcre3-dev libfreetype6-dev libxrandr-dev libxaw7-dev libmng-dev libglew1.5-dev libxt-dev
Compiling
With current versions of Ogre it is probably best to follow the instructions here Previous Instructions Download Ogre3D sources and unpack them. Supported compiler g++ and gcc versions is only version 4.3 or 4.4.
g++ --version
and
gcc --version
should return version 4.3 or 4.4
Compile Ogre3D with
aclocal ./bootstrap ./configure make
and install with:
(sudo) make install (sudo) ldconfig
GiGi
NOTE: As of r6016, this is no longer necessary. The Makefile generated by a simple cmake . will also build GiGi.
Before attempting to build FreeOrion you will first need to build and install the GiGi library, including GiGiOgre and the GiGiOgre OIS plugin. Before building GiGi you also need Ogre installed.
The GiGi source should be automatically downloaded from SVN along with the FreeOrion source code.
Change into the GiGi directory and build the library:
cd freeorion/FreeOrion/GG cmake -DBUILD_TUTORIALS=off -DBUILD_OGRE_DRIVER=ON -DBUILD_OGRE_OIS_PLUGIN=ON . make (sudo) make install (sudo) ldconfig
Add line as root
/usr/local/lib
to file /etc/ld.so.conf
Bullet
Bullet debian packets for some Debian/Ubuntu releases and architectures can be found from http://build.cazfi.net/deb/
Bullet sourcecode downloads are also available at https://code.google.com/p/bullet/downloads/list
Building Bullet
Install Bullet compilation requirements
(sudo) apt-get install freeglut3-dev
After downloading and unpacking downloaded bullet archive, compile it with:
cmake -D BUILD_SHARED_LIBS=true . make
and install with:
(sudo) make install cd /usr/local/lib (sudo) ln -s libBulletCollision.so libbulletcollision.so (sudo) ln -s libBulletDynamics.so libbulletdynamics.so (sudo) ln -s libLinearMath.so libbulletmath.so (sudo) ldconfig
Symlinks libbulletcollision.so, libbulletdynamics.so and libbulletmath.so are required to create because bullet build system is inconsistent on different platforms.
FreeOrion
Compiling FreeOrion
Compile FreeOrion:
cd freeorion/FreeOrion cmake . make
If you have less than 8 GB of RAM, you might have errors during compiling relating to the compiler running out of heap space. In this case, try
make -j1
to specify that make should only use one thread, which should limit memory consumption. The flag
-fno-var-tracking
might also help.
Updating FreeOrion
When improvements have been made to FreeOrion, you should keep it up to date with:
cd freeorion/FreeOrion svn update
This should update GG and FreeOrion from subversion. After compiling and installing GG compile FreeOrion.
Clean After Dependency Changes
It may be necessary to clean your old build before rebuilding GiGi or FreeOrion after updates that make changes to dependencies or versions of dependencies used, such as Boost. Do this in FreeOrion and GG directory:
rm CMakeCache.txt make clean
User stories
- Gentoo - Updated (February 08, 2013, Updated: June 27, 2013)
- Building to separate directory tree (June 2, 2009, Updated October 4, 2012)
- Fedora 18 (June 9, 2013)
Compilation Errors
Bogus build errors
You may see errors during the build process like this:
-- Build platform: linux -- Configuring GiGi -- Configuring GiGiSDL -- Configuring GiGiOgre -- checking for one of the modules 'OGRE' Warning: Ogre could not be found. Disabling the Ogre build. -- Configuring Ogre OIS Input Plugin -- checking for one of the modules 'OIS' Warning: OIS could not be found. Disabling the OIS build. -- Configuring Tutorials -- Could NOT find Doxygen (missing: DOXYGEN_EXECUTABLE) Warning: Doxygen could not be found. Disabling the documentation build. -- Configuring done -- Generating done
These failed messages refer to cmake not finding an installed package for these components.
Cmake can't find libraries/dependencies
If cmake is not able to find a library (e.g. Ogre, OIS, etc) that is installed, please see this thread
no matching function for call to 'swap(adobe::version_1::any_regular_t&, adobe::version_1::any_regular_t&)'
- Upgrade compiler gcc and g++ at least to version 4.3.3 or
- Change line 734 of GG/adobe/any_regular.hpp from
swap(r, result);
to
std::swap(r, result);
Runtime Errors
Segmentation Fault
If after compiling everything, you run freeorion and get a segmentation fault:
$ ./freeorion Segmentation fault
- Be certain that currently installed driver for your graphic card supports OpenGL 2.0 or later
- You might be mixing dependencies compiled with different versions of GCC or different optimization level for Ogre, GiGi and FreeOrion. See this post
- You have graphic card which doesn't support shader model 3 or above(Nvidia 6600 and above have, some AMD HD series also). There are known problems with AMD drivers on Linux. In future there will be functional Gallium driver(r300g or r600g) in Mesa. These new drivers will be available probably in Ubuntu 11.04.
Video mode set failed: Couldn't find matching GLX visual
Your video mode is probably set to 16-bit instead of 32-bit, which is what FreeOrion defaults to. You need to either change your X server color depth to 32-bit, or edit the FreeOrion config file in ~/freeorion/config.xml and change color-depth from 32 to 16. You can also try the command line argement:
./freeorion --color-depth 16
IDE for development
- Text editor and cmake with make to compile.
- Eclipse is open source multiplatform IDE and can be used to compile FreeOrion, but plugins to support subversion and python have to be installed. See howto Compile With Eclipse.
Debugging
Adding debug symbols to binary
Turn on debugging symbols on GG and FreeOrion with:
cmake -DBUILD_DEBUG=1 .
and then rebuild GG and FreeOrion.
backtrace
Install debugger gdb and run freeorion in window mode(not in fullscreen) with:
gdb ./freeorion
and after it starts gdb type
run
and wait until segfault occurs. Then to print backtrace type
bt full