Compile Problems

Questions, problems and discussion about compiling FreeOrion.

Moderator: Oberlus

Post Reply
Message
Author
User avatar
Bowen
Space Krill
Posts: 1
Joined: Sun Mar 30, 2014 7:37 pm

Compile Problems

#1 Post by Bowen »

So, I'm a total Newbie when it comes to Linux and FreeOrion was one of the first things I tried to install after building a Linux box out of my laptop. I'm running Ubuntu 12.04 LTS, Memory 7.7 GiB, Processor Intel® Core™ i7-3520M CPU @ 2.90GHz × 4 , OS type 64-bit. I tried first to download the package but it wouldn't run so I followed forums and such looking for how to compile it myself which seemed to be the answer everyone gave. Doing my best to follow http://www.freeorion.org/index.php/Compile_In_Linux did me little good as some of the packages it referanced are out of date and hence some of the code it told me to imput did nothing or little good (the whole section on compiling Ogre for example, typing aclocal only asked for arguments that I didn't know, leading to invalid commands after.). Still I trudged on and compiled Ogre through their documents, but seemed to hit a wall as to how to pursue from there. Fortunately on Day 3 of Linix I found this forum string.

Big thanks to kempiu for providing a much clearer path to trod. Following the steps I understood I was able to get to the point where I could make.

Unfortunately I must have missed something somewhere because make comes back with an error around 80% of the way (sometimes 79 sometimes 81 as I've tried multiple times).

[ 79%] Building CXX object client/human/CMakeFiles/freeorion.dir/__/__/UI/CombatCamera.cpp.o
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp: In constructor ‘CombatCamera::CombatCamera(Ogre::Camera&, Ogre::SceneManager*, Ogre::SceneNode*)’:
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp:93:23: error: invalid use of incomplete type ‘struct Ogre::Animation’
/usr/local/include/OGRE/OgrePrerequisites.h:119:11: error: forward declaration of ‘struct Ogre::Animation’
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp:93:46: error: incomplete type ‘Ogre::Animation’ used in nested name specifier
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp: In member function ‘bool CombatCamera::Moving() const’:
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp:99:28: error: invalid use of incomplete type ‘struct Ogre::Animation’
/usr/local/include/OGRE/OgrePrerequisites.h:119:11: error: forward declaration of ‘struct Ogre::Animation’
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp: In member function ‘void CombatCamera::Update(Ogre::Real)’:
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp:174:27: error: invalid use of incomplete type ‘struct Ogre::Animation’
/usr/local/include/OGRE/OgrePrerequisites.h:119:11: error: forward declaration of ‘struct Ogre::Animation’
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp: In member function ‘void CombatCamera::LookAtPositionImpl(const Ogre::Vector3&, Ogre::Real)’:
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp:378:27: error: invalid use of incomplete type ‘struct Ogre::Animation’
/usr/local/include/OGRE/OgrePrerequisites.h:119:11: error: forward declaration of ‘struct Ogre::Animation’
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp: In member function ‘void CombatCamera::ZoomImpl(Ogre::Real)’:
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp:394:23: error: invalid use of incomplete type ‘struct Ogre::Animation’
/usr/local/include/OGRE/OgrePrerequisites.h:119:11: error: forward declaration of ‘struct Ogre::Animation’
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp:409:27: error: invalid use of incomplete type ‘struct Ogre::Animation’
/usr/local/include/OGRE/OgrePrerequisites.h:119:11: error: forward declaration of ‘struct Ogre::Animation’
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp: In member function ‘bool CombatCamera::Moving() const’:
/home/bowen/freeorion_0_43/FreeOrion/UI/CombatCamera.cpp:99:70: warning: control reaches end of non-void function [-Wreturn-type]
make[2]: *** [client/human/CMakeFiles/freeorion.dir/__/__/UI/CombatCamera.cpp.o] Error 1
make[1]: *** [client/human/CMakeFiles/freeorion.dir/all] Error 2
make: *** [all] Error 2

I've played the game plenty of times on Windows and never knew there was a "Combat Camera" as usually I would just hit a system and my ships would disappear and/or their ships would dissapear, and I would be informed of the resulting combat in the SitRep.

Either way, I can't get a make command to finish because I don't know what to do about this. Attempts to google it have lead me nowhere, but maybe pointing back to a problem with Boost (which appears to be 1.48).

I am happy for the progress, but am a bit disappointed that I'm so incompetent in this area. A few times today (being the 4th day of Linux) I considered just going back to Windows 7 and crying quietly to myself, but before I did that I thought I'd go beyond just reading what others have asked and actually putting the question out there myself. Is there any suggestions anybody here can make to help with my dilemma?

Sincere Thanks,
Bowen

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13603
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Compile Problems

#2 Post by Geoff the Medio »

Bowen wrote:I've played the game plenty of times on Windows and never knew there was a "Combat Camera"...
The "Combat Camera" is part of the Ogre 3D rendering system that is used in the effectively-abandoned partially implemented 3D combat system for FreeOrion. It's not actually used in the currently playable game, though one can (or could previously... it might not be working still) run a tech demo to show the progress on that 3D rendering system.
Bowen wrote:Either way, I can't get a make command to finish because I don't know what to do about this. Attempts to google it have lead me nowhere, but maybe pointing back to a problem with Boost (which appears to be 1.48).
I don't know if it's relevant to your current issues, but I suspect you might need to use a newer version of boost than 1.48.

Also, what SVN version of FreeOrion are you attempting to build, and what version of Ogre are you using?

AndrewW
Juggernaut
Posts: 791
Joined: Mon Feb 04, 2013 10:15 pm

Re: Compile Problems

#3 Post by AndrewW »

Geoff the Medio wrote:I don't know if it's relevant to your current issues, but I suspect you might need to use a newer version of boost than 1.48.

Also, what SVN version of FreeOrion are you attempting to build, and what version of Ogre are you using?
As a reference point it builds fine here with Gentoo using:

Boost: 1.52.0-r6
Ogre: 1.8.1

Last version I've built so far: 7002.

User avatar
Dilvish
AI Lead and Programmer Emeritus
Posts: 4768
Joined: Sat Sep 22, 2012 6:25 pm

Re: Compile Problems

#4 Post by Dilvish »

If you started out with the main Ubuntu instructions and then swapped to kemiu's instructions you may have wound up with incompatible boost and ogre versions. If you installed a version of ogre via the ubuntu repositories and then built another ogre version then cmake might be finding the old version -- you can run ccmake . and press the 't' key to get a detailed view of the info cmake came up with and see what version of Ogre it's pointing to. You also might need to delete the freeorion CMakeCache.txt file and rerun cmake.

I also took a pass at updating the Linux compile instructions, particularly in regards to the Ubuntu section and a little for Ogre and Bullet, so you might want to review them again. (Adrian, it would probably be good if you could double check the portions (Ubuntu, Ogre, Bullet) I edited. I noticed you had updated a portion of that overall page, but it seems there is still a lot of stale and distracting info there; if you ever have time to do a more major revision on it that would probably be quite helpful).
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

User avatar
adrian_broher
Programmer
Posts: 1156
Joined: Fri Mar 01, 2013 9:52 am
Location: Germany

Re: Compile Problems

#5 Post by adrian_broher »

Dilvish wrote:I also took a pass at updating the Linux compile instructions, particularly in regards to the Ubuntu section and a little for Ogre and Bullet, so you might want to review them again. Adrian, it would probably be good if you could double check the portions (Ubuntu, Ogre, Bullet) I edited.
Sure.

Well, there are several wordings I don't like. There too many 'may', 'hopefully' and 'shoulds' for my liking. This sounds like we don't even have a clue or confidence on how to compile/run our own software on the platforms in question.

You have added libtiff4-devel to the dependency list, but don't add it to the apt commandline.

Why are boost 1.51 and python 2.7 preferred? Do we need a feature from this versions? Than those version are the baseline anyway.

About the 'Ubuntu Lucid Lynx' article: Just delete it. It's outdated and wrong and doesn't work with the current code. Also 10.4 went EOL a year ago for desktops.

The 'previous instructions' for compiling OGRE are useless, they dumped the autoconf build system many moons ago in favor of CMake and the minimal OGRE we require doesn't contain any autoconf components.
I noticed you had updated a portion of that overall page, but it seems there is still a lot of stale and distracting info there; if you ever have time to do a more major revision on it that would probably be quite helpful.
The 'GiGi' section should go away. The current code builds it automatically, we host it and modified it already in a way that it is incompatible with GiGi upstream. We shouldn't bother the user with that.

Also I seriously doubt that we are in charge of explaining the user how to build the dependencies. Documenting this is a task of the corresponding upsteam. Just tell the use what we need and point to the upstream documentation. One exception for this is to explain that FO needs to use the same boost version as Ogre.

Also there are some points that don't belong into the 'Compiling In Linux' article. Using SVN? The preferred editor to hack FO? Debugging? Creating a backtrace? Wat? Well okay, how to create a 'debug' or 'release' build should be documented. Which reminds me that the current article exactly document zero of the availble CMake variables to configure the build properly.

In general the 'how to compile' article should look like this: http://freeorion.org/index.php/User:AndrewW/Gentoo
Resident code gremlin
Attached patches are released under GPL 2.0 or later.
Git author: Marcel Metz

User avatar
Geoff the Medio
Programming, Design, Admin
Posts: 13603
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: Compile Problems

#6 Post by Geoff the Medio »

adrian_broher wrote:Why are boost 1.51 and python 2.7 preferred?
It may have changed, but previously Python 3 wouldn't work with Boost-Python. I don't recall if there was a reason 2.7 was needed vs. 2.6.

User avatar
Dilvish
AI Lead and Programmer Emeritus
Posts: 4768
Joined: Sat Sep 22, 2012 6:25 pm

Re: Compile Problems

#7 Post by Dilvish »

adrian_broher wrote:There too many 'may', 'hopefully' and 'shoulds' for my liking. This sounds like we don't even have a clue or confidence on how to compile/run our own software on the platforms in question.
Sure, those words were there largely because in many cases I wasn't entirely sure of the version requirements and that's why I requested some extra review (I was a bit borderline on whether to attempt any edits at all, but decided it would probably still be at least a marginal improvement and could help move the process along). In the cmake files I could only find a requirement for boost 1..47 and python2, but I had some recollections of past discussions of additional version requirements and tried to note the ones I was more sure of.
You have added libtiff4-devel to the dependency list, but don't add it to the apt commandline.
It was already in the apt commandline (the second line, 2nd-to-last).
Why are boost 1.51 and python 2.7 preferred? Do we need a feature from this versions? Than those version are the baseline anyway.
Regarding python, though we don't appear to me to enforce a requirement other than python2, my recollection is that our actual python code includes some python 2.5 constructs. I try to avoid things that I know are specific to 2.7 (I suppose I succeed or we'd likely hear of problems), but looking to the future I wanted to at least start encouraging the use of 2.7 (for coding flexibility and since 2.7 provides a much better base for an eventual transition to 3.x). If you think we should just leave it as requiring 2.5.x - 2.7.x I won't argue. Regarding boost, I had recalled some concern about compatibility with serialization of earlier versions, but can't find anything specific beyond the 1.47 req so I took out the reference to 1.51.
About the 'Ubuntu Lucid Lynx' article: Just delete it...
I removed the link to it & strengthened the 'stale' assertion at the beginning of the article, but I don't know how to actually delete the article.
The 'previous instructions' for compiling OGRE are useless...
Removed.
The 'GiGi' section should go away....
I now took out most of it & trimmed your note a bit.
Also I seriously doubt that we are in charge of explaining the user how to build the dependencies. Documenting this is a task of the corresponding upsteam. Just tell the use what we need and point to the upstream documentation. One exception for this is to explain that FO needs to use the same boost version as Ogre.
Sounds fine; I took a pass at cleaning this up.
Also there are some points that don't belong into the 'Compiling In Linux' article. Using SVN? The preferred editor to hack FO? Debugging? Creating a backtrace? Wat? Well okay, how to create a 'debug' or 'release' build should be documented. Which reminds me that the current article exactly document zero of the availble CMake variables to configure the build properly.
Sounds fine to me. Particularly regarding the available CMake variables to help configure the build I think you're in the best position to write that up, when you have a chance.

I slightly cleaned up the Bullet instructions, but don't recall if the mentioned symlinks are still required so please double check that section.
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

AndrewW
Juggernaut
Posts: 791
Joined: Mon Feb 04, 2013 10:15 pm

Re: Compile Problems

#8 Post by AndrewW »

adrian_broher wrote:In general the 'how to compile' article should look like this: http://freeorion.org/index.php/User:AndrewW/Gentoo
Hopefully that hasn't changed any, still working here at least. But if something has changed let me know and I can update it.

AndrewW
Juggernaut
Posts: 791
Joined: Mon Feb 04, 2013 10:15 pm

Re: Compile Problems

#9 Post by AndrewW »

Dilvish wrote:'stale' assertion at the beginning of the article, but I don't know how to actually delete the article.
Probably just remove everything and save that way for the wiki.
Dilvish wrote:'I slightly cleaned up the Bullet instructions, but don't recall if the mentioned symlinks are still required so please double check that section.
The symlinks where no longer required at one point when I updated the gentoo instructions.

Post Reply