[5916] compile problem on Linux

Questions, problems and discussion about compiling FreeOrion.

Moderator: Oberlus

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

[5916] compile problem on Linux

#1 Post by Dilvish »

here'e the build log; it looks like both errors reached so far are "taking address of temporary". If I compile with -fpermissive, then it compiles fine and a in a cusory test appears to run fine, but it seems a bit risky to rely on -fpermissive.

Code: Select all

[  0%] Building CXX object CMakeFiles/core_static.dir/network/Message.cpp.o
[  0%] Building CXX object CMakeFiles/core_static.dir/universe/Effect.cpp.o
[ 20%] Built target parse_static
[ 21%] Building CXX object CMakeFiles/core_static.dir/universe/Fleet.cpp.o
universe/Effect.cpp: In member function ‘virtual void Effect::CreateSystem::Execute(const ScriptingContext&) const’:
universe/Effect.cpp:1654:27: warning: unused variable ‘target’ [-Wunused-variable]
In file included from network/../combat/CombatLogManager.h:5:0,
                 from network/Message.cpp:5:
network/../combat/CombatSystem.h: In instantiation of ‘void AttackEvent::serialize(Archive&, unsigned int) [with Archive = boost::archive::binary_oarchive]’:
/usr/local/include/boost/serialization/access.hpp:118:9:   required from ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_oarchive; T = AttackEvent]’
/usr/local/include/boost/serialization/serialization.hpp:69:5:   required from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_oarchive; T = AttackEvent]’
/usr/local/include/boost/serialization/serialization.hpp:128:9:   required from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_oarchive; T = AttackEvent]’
/usr/local/include/boost/archive/detail/oserializer.hpp:148:5:   required from ‘void boost::archive::detail::oserializer<Archive, T>::save_object_data(boost::archive::detail::basic_oarchive&, const void*) const [with Archive = boost::archive::binary_oarchive; T = AttackEvent]’
/usr/local/include/boost/archive/detail/oserializer.hpp:101:1:   required from ‘class boost::archive::detail::oserializer<boost::archive::binary_oarchive, AttackEvent>’
/usr/local/include/boost/archive/detail/oserializer.hpp:253:13:   [ skipping 163 instantiation contexts ]
/usr/local/include/boost/archive/detail/oserializer.hpp:525:5:   required from ‘void boost::archive::save(Archive&, T&) [with Archive = boost::archive::binary_oarchive; T = const boost::serialization::nvp<const CombatLogManager>]’
/usr/local/include/boost/archive/detail/common_oarchive.hpp:69:9:   required from ‘void boost::archive::detail::common_oarchive<Archive>::save_override(T&, int) [with T = const boost::serialization::nvp<const CombatLogManager>; Archive = boost::archive::binary_oarchive]’
/usr/local/include/boost/archive/basic_binary_oarchive.hpp:75:7:   required from ‘void boost::archive::basic_binary_oarchive<Archive>::save_override(const T&, int) [with T = boost::serialization::nvp<const CombatLogManager>; Archive = boost::archive::binary_oarchive]’
/usr/local/include/boost/archive/binary_oarchive_impl.hpp:51:9:   required from ‘void boost::archive::binary_oarchive_impl<Archive, Elem, Tr>::save_override(T&, int) [with T = const boost::serialization::nvp<const CombatLogManager>; Archive = boost::archive::binary_oarchive; Elem = char; Tr = std::char_traits<char>]’
/usr/local/include/boost/archive/detail/interface_oarchive.hpp:63:9:   required from ‘Archive& boost::archive::detail::interface_oarchive<Archive>::operator<<(T&) [with T = const boost::serialization::nvp<const CombatLogManager>; Archive = boost::archive::binary_oarchive]’
network/Message.cpp:421:15:   required from here
network/../combat/CombatSystem.h:86:5: error: taking address of temporary [-fpermissive]
network/../combat/CombatSystem.h: In instantiation of ‘void AttackEvent::serialize(Archive&, unsigned int) [with Archive = boost::archive::binary_iarchive]’:
/usr/local/include/boost/serialization/access.hpp:118:9:   required from ‘static void boost::serialization::access::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_iarchive; T = AttackEvent]’
/usr/local/include/boost/serialization/serialization.hpp:69:5:   required from ‘void boost::serialization::serialize(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_iarchive; T = AttackEvent]’
/usr/local/include/boost/serialization/serialization.hpp:128:9:   required from ‘void boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = boost::archive::binary_iarchive; T = AttackEvent]’
/usr/local/include/boost/archive/detail/iserializer.hpp:188:5:   required from ‘void boost::archive::detail::iserializer<Archive, T>::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) const [with Archive = boost::archive::binary_iarchive; T = AttackEvent]’
/usr/local/include/boost/archive/detail/iserializer.hpp:120:1:   required from ‘class boost::archive::detail::iserializer<boost::archive::binary_iarchive, AttackEvent>’
/usr/local/include/boost/archive/detail/iserializer.hpp:387:13:   [ skipping 165 instantiation contexts ]
/usr/local/include/boost/archive/detail/iserializer.hpp:592:5:   required from ‘void boost::archive::load(Archive&, T&) [with Archive = boost::archive::binary_iarchive; T = const boost::serialization::nvp<CombatLogManager>]’
/usr/local/include/boost/archive/detail/common_iarchive.hpp:66:9:   required from ‘void boost::archive::detail::common_iarchive<Archive>::load_override(T&, int) [with T = const boost::serialization::nvp<CombatLogManager>; Archive = boost::archive::binary_iarchive]’
/usr/local/include/boost/archive/basic_binary_iarchive.hpp:70:7:   required from ‘void boost::archive::basic_binary_iarchive<Archive>::load_override(T&, int) [with T = const boost::serialization::nvp<CombatLogManager>; Archive = boost::archive::binary_iarchive]’
/usr/local/include/boost/archive/binary_iarchive_impl.hpp:50:9:   required from ‘void boost::archive::binary_iarchive_impl<Archive, Elem, Tr>::load_override(T&, int) [with T = const boost::serialization::nvp<CombatLogManager>; Archive = boost::archive::binary_iarchive; Elem = char; Tr = std::char_traits<char>]’
/usr/local/include/boost/archive/detail/interface_iarchive.hpp:60:9:   required from ‘Archive& boost::archive::detail::interface_iarchive<Archive>::operator>>(T&) [with T = const boost::serialization::nvp<CombatLogManager>; Archive = boost::archive::binary_iarchive]’
network/Message.cpp:766:15:   required from here
network/../combat/CombatSystem.h:86:5: error: taking address of temporary [-fpermissive]
make[2]: *** [CMakeFiles/core_static.dir/network/Message.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[1]: *** [CMakeFiles/core_static.dir/all] Error 2
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
Geoff the Medio
Programming, Design, Admin
Posts: 13587
Joined: Wed Oct 08, 2003 1:33 am
Location: Munich

Re: [5916] compile problem on Linux

#2 Post by Geoff the Medio »

Try removing the comma at the end of line 89 of CombatSystem.h.

Code: Select all

& BOOST_SERIALIZATION_NVP(damage),

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

Re: [5916] compile problem on Linux

#3 Post by Dilvish »

Geoff the Medio wrote:Try removing the comma at the end of line 89 of CombatSystem.h.

Code: Select all

& BOOST_SERIALIZATION_NVP(damage),
Yup, that seems to have done the trick.
If I provided any code, scripts or other content here, it's released under GPL 2.0 and CC-BY-SA 3.0

Post Reply