Page 1 of 1

[Solved] Can't make [ubuntu 12.04]

Posted: Thu Sep 06, 2012 1:06 pm
by cortez
Hi

I just found this project and wanted to give it a try. so I cloned the source from github and followed the instruction but I'm getting some weird errors.

Commands used:

Code: Select all

$ cd Chipmunk-Physics
$ cmake .
$ make 
cmake is successful, but I get the following errors when I run "make":

Code: Select all

Linking C executable chipmunk_demos
CMakeFiles/chipmunk_demos.dir/Buoyancy.c.o:Buoyancy.c:function waterPreSolve: error: undefined reference to '__exp_finite'
CMakeFiles/chipmunk_demos.dir/Buoyancy.c.o:Buoyancy.c:function waterPreSolve: error: undefined reference to '__exp_finite'
CMakeFiles/chipmunk_demos.dir/Planet.c.o:Planet.c:function init: error: undefined reference to '__atan2_finite'
CMakeFiles/chipmunk_demos.dir/Tank.c.o:Tank.c:function update: error: undefined reference to '__atan2_finite'
CMakeFiles/chipmunk_demos.dir/Bench.c.o:Bench.c:function init_SimpleTerrainVCircles_200: error: undefined reference to '__pow_finite'
CMakeFiles/chipmunk_demos.dir/Bench.c.o:Bench.c:function init_SimpleTerrainVHexagons_200: error: undefined reference to '__pow_finite'
CMakeFiles/chipmunk_demos.dir/Bench.c.o:Bench.c:function init_SimpleTerrainVBoxes_200: error: undefined reference to '__pow_finite'
CMakeFiles/chipmunk_demos.dir/Unicycle.c.o:Unicycle.c:function motor_preSolve: error: undefined reference to '__pow_finite'
CMakeFiles/chipmunk_demos.dir/Unicycle.c.o:Unicycle.c:function motor_preSolve: error: undefined reference to '__asin_finite'
CMakeFiles/chipmunk_demos.dir/Unicycle.c.o:Unicycle.c:function motor_preSolve: error: undefined reference to 'sincos'
CMakeFiles/chipmunk_demos.dir/Unicycle.c.o:Unicycle.c:function motor_preSolve: error: undefined reference to '__asin_finite'
../src/libchipmunk.a(cpVect.c.o):cpVect.c:function cpvslerp: error: undefined reference to '__acos_finite'
../src/libchipmunk.a(cpVect.c.o):cpVect.c:function cpvslerp: error: undefined reference to 'sin'
../src/libchipmunk.a(cpVect.c.o):cpVect.c:function cpvslerp: error: undefined reference to 'sin'
../src/libchipmunk.a(cpVect.c.o):cpVect.c:function cpvslerp: error: undefined reference to 'sin'
../src/libchipmunk.a(cpVect.c.o):cpVect.c:function cpvslerpconst: error: undefined reference to '__acos_finite'
../src/libchipmunk.a(cpVect.c.o):cpVect.c:function cpvslerpconst: error: undefined reference to '__acos_finite'
../src/libchipmunk.a(cpVect.c.o):cpVect.c:function cpvslerpconst: error: undefined reference to 'sin'
../src/libchipmunk.a(cpBody.c.o):cpBody.c:function cpBodyUpdatePosition: error: undefined reference to 'sincos'
../src/libchipmunk.a(cpBody.c.o):cpBody.c:function cpBodySetAngle: error: undefined reference to 'sincos'
../src/libchipmunk.a(cpDampedRotarySpring.c.o):cpDampedRotarySpring.c:function preStep: error: undefined reference to '__exp_finite'
../src/libchipmunk.a(cpDampedSpring.c.o):cpDampedSpring.c:function preStep: error: undefined reference to '__exp_finite'
collect2: ld returned 1 exit status
make[2]: *** [Demo/chipmunk_demos] Error 1
make[1]: *** [Demo/CMakeFiles/chipmunk_demos.dir/all] Error 2
make: *** [all] Error 2
I believe I have all the libraries installed.

Re: Can't make [ubuntu 12.04]

Posted: Thu Sep 06, 2012 1:22 pm
by cortez
Problem solved after adding the following to CmakeList:

Code: Select all

set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lm")

Re: Can't make [ubuntu 12.04]

Posted: Thu Sep 06, 2012 1:25 pm
by slembcke
Hmm. Sounds like it's not linking to the math library. It's default on some platforms and not others. It's inconsistent between different Linux distros too sometimes.

I *think* all you need to add this line to src/CMakeLists.txt right after the add_library() to create the chipmunk target.

Code: Select all

target_link_libraries(chipmunk m)
If that works, I can commit it to git.

edit: Looks like you beat me to the post. Looks like that should work too.