[ODE] Complex compile problem ODE 0.7

Mauro G. Todeschini mauro2006todeschini at itia.cnr.it
Fri Oct 27 06:40:23 MST 2006


Rodrigo Hernandez wrote:
> 
> It does seem to be a STL problem, try adding the -lstdc++ library to
> your compilation command, that should be added by default by g++, but
> perhaps for some reason isn't.
Thanks Rodrigo, I discovered that probably the problem was caused by
some incompatibility between the different versions of gcc used on PC A
and PC B. I have been able to build ODE on PC B and the problem diappeared.
Strange that I have to use make 3.79.1 insead of 3.80 to succesfully
build ODE.

Bye

> 
> Mauro G. Todeschini wrote:
>> Hi,
>>     I have a problem which is quite difficult to explain.
>> I dont' know if it's a ODE problem or a problem of my development
>> environment (probably the latter).
>> With ODE 0.6 the following steps don't give me any problem.
>> But with ODE 0.7 I cannot compile my application.
>>
>> I downloaded ODE 0.7
>> and built It with (on PC A: windows, mingw and msys):
>> sh autogen.sh
>> ./configure --enable-release
>> make
>>
>> then I took the library and headers on PC B: windows and Dev-C++
>> but when I try to compile my application I obtain:
>>
>> g++.exe tomSimulator.o tomUtils.o main-odemullib.o ode_draw.o tomFixed.o
>> tomMovable.o tomJoint.o tomSystem.o tomCollision.o  -o
>> "tom-odemullib.exe" -L"lib" -L"../../lib" -lode -lmullib -ltinyxmlSTL
>> -lglut32 -lglu32 -lopengl32 -ljpeg -lgdi32 -luser32 -lkernel32 -lwinmm
>> ../../lib/libode.a(libode_a-convex.o)(.text+0x88):convex.cpp: undefined
>> reference to `std::__default_alloc_template<true, 0>::allocate(unsigned
>> int)'
>> ../../lib/libode.a(libode_a-convex.o)(.text$_ZNSt8_Rb_treeISt4pairIjjES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE8_M_eraseEPSt13_Rb_tree_nodeIS1_E[std::_Rb_tree<std::pair<unsigned
>>
>> int, unsigned int>, std::pair<unsigned int, unsigned int>,
>> std::_Identity<std::pair<unsigned int, unsigned int> >,
>> std::less<std::pair<unsigned int, unsigned int> >,
>> std::allocator<std::pair<unsigned int, unsigned int> >
>>  
>>> ::_M_erase(std::_Rb_tree_node<std::pair<unsigned int, unsigned int>
>>> *)]+0x27):convex.cpp: undefined reference to
>>>     
>> `std::__default_alloc_template<true, 0>::deallocate(void*, unsigned int)'
>> ../../lib/libode.a(libode_a-convex.o)(.text$_ZNSt8_Rb_treeISt4pairIjjES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE9_M_insertEPSt18_Rb_tree_node_baseS9_RKS1_[std::_Rb_tree<std::pair<unsigned
>>
>> int, unsigned int>, std::pair<unsigned int, unsigned int>,
>> std::_Identity<std::pair<unsigned int, unsigned int> >,
>> std::less<std::pair<unsigned int, unsigned int> >,
>> std::allocator<std::pair<unsigned int, unsigned int> >
>>  
>>> ::_M_insert(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*,
>>>     
>> std::pair<unsigned int, unsigned int> const&)]+0x29):convex.cpp:
>> undefined reference to `std::__default_alloc_template<true,
>> 0>::allocate(unsigned int)'
>> ../../lib/libode.a(libode_a-convex.o)(.text$_ZNSt14__simple_allocISt13_Rb_tree_nodeISt4pairIjjEESt24__default_alloc_templateILb1ELi0EEE8allocateEj[std::__simple_alloc<std::_Rb_tree_node<std::pair<unsigned
>>
>> int, unsigned int> >, std::__default_alloc_template<true, 0>
>>  
>>> ::allocate(unsigned int)]+0x1c):convex.cpp: undefined reference to
>>>     
>> `std::__default_alloc_template<true, 0>::allocate(unsigned int)'
>> ../../lib/libode.a(libode_a-convex.o)(.text$_ZNSt14__simple_allocISt13_Rb_tree_nodeISt4pairIjjEESt24__default_alloc_templateILb1ELi0EEE10deallocateEPS3_j[std::__simple_alloc<std::_Rb_tree_node<std::pair<unsigned
>>
>> int, unsigned int> >, std::__default_alloc_template<true, 0>
>>  
>>> ::deallocate(std::_Rb_tree_node<std::pair<unsigned int, unsigned int>
>>> *, unsigned int)]+0x1b):convex.cpp: undefined reference to
>>>     
>> `std::__default_alloc_template<true, 0>::deallocate(void*, unsigned int)'
>> ../../lib/libode.a(libode_a-convex.o)(.text$_ZNSt8_Rb_treeISt4pairIjjES1_St9_IdentityIS1_ESt4lessIS1_ESaIS1_EE14_M_create_nodeERKS1_[std::_Rb_tree<std::pair<unsigned
>>
>> int, unsigned int>, std::pair<unsigned int, unsigned int>,
>> std::_Identity<std::pair<unsigned int, unsigned int> >,
>> std::less<std::pair<unsigned int, unsigned int> >,
>> std::allocator<std::pair<unsigned int, unsigned int> >
>>  
>>> ::_M_create_node(std::pair<unsigned int, unsigned int>
>>>     
>> const&)]+0x6):convex.cpp: undefined reference to
>> `std::__default_alloc_template<true, 0>::allocate(unsigned int)'
>> collect2: ld returned 1 exit status
>> c:\dev-cpp\bin\make.exe: *** [tom-odemullib.exe] Error 1
>>
>> It seems that there is some problem with libode_a-convex.o (I don't use
>> convex hulls and I don't know what they are).
>> It seems to me a problem with STL but I don't know if the problem is in
>> PC A (mingw), PC B (Dev-C++) and how to solve it. Any hint to point me
>> in the right direction?
>> Is it possible to disable convex-hulls in ODE 0.7 (as a workaround)?
>>
>> Bye and Thanks
>>
>> _______________________________________________
>> ODE mailing list
>> ODE at q12.org
>> http://q12.org/mailman/listinfo/ode
>>
>>   
> 
> 



More information about the ODE mailing list