[eigen] Link error: multiple definition of ei_p*** functions

[ Thread Index | Date Index | More lists.tuxfamily.org/eigen Archives ]


Hi,

   I just began to notice these link errors in the "release" version of my code which I compile with SSE2 - multiple definitions of the 
packet mathfunctions seem to be present in different .o files which is causing linker death. I just refreshed my working copy 
before the build. Would someone know why this is happening? Perhaps some "inline" keyword is missing?

   My g++ command-line flags are as follows:

-Wall -Werror -march=pentium4 -g0 -O3 -msse2 -mfpmath=sse
-ftree-vectorize -fgcse-sm -fgcse-las -fgcse-after-reload -fipa-pta
-ftree-loop-linear -ftree-loop-im -ftree-loop-ivcanon -ftracer -funroll-loops
-fvariable-expansion-in-unroller -fprefetch-loop-arrays -fno-math-errno
-ffinite-math-only -fno-trapping-math -fno-signaling-nans
-DEIGEN_NO_AUTOMATIC_RESIZING


   A linker error log snippet is:

kmesh.o: In function `float __vector Eigen::ei_psqrt<float __vector>(float __vector const&)':
kmesh.cpp:(.text+0x60): multiple definition of `float __vector Eigen::ei_psqrt<float __vector>(float __vector const&)'
iv.o:iv.cpp:(.text+0x60): first defined here
kmesh.o: In function `float __vector Eigen::ei_pcos<float __vector>(float __vector const&)':
kmesh.cpp:(.text+0xae): multiple definition of `float __vector Eigen::ei_pcos<float __vector>(float __vector const&)'
iv.o:iv.cpp:(.text+0x33ee): first defined here
kmesh.o: In function `float __vector Eigen::ei_psin<float __vector>(float __vector const&)':
kmesh.cpp:(.text+0x20e): multiple definition of `float __vector Eigen::ei_psin<float __vector>(float __vector const&)'
iv.o:iv.cpp:(.text+0x354e): first defined here
kmesh.o: In function `float __vector Eigen::ei_pexp<float __vector>(float __vector const&)':
kmesh.cpp:(.text+0x38c): multiple definition of `float __vector Eigen::ei_pexp<float __vector>(float __vector const&)'
iv.o:iv.cpp:(.text+0x36cc): first defined here
kmesh.o: In function `float __vector Eigen::ei_plog<float __vector>(float __vector const&)':
kmesh.cpp:(.text+0x4a2): multiple definition of `float __vector Eigen::ei_plog<float __vector>(float __vector const&)'
iv.o:iv.cpp:(.text+0x37e2): first defined here
offdiagfunctors.o: In function `float __vector Eigen::ei_psqrt<float __vector>(float __vector const&)':
offdiagfunctors.cpp:(.text+0x3e0): multiple definition of `float __vector Eigen::ei_psqrt<float __vector>(float __vector const&)'
iv.o:iv.cpp:(.text+0x60): first defined here
offdiagfunctors.o: In function `float __vector Eigen::ei_plog<float __vector>(float __vector const&)':
offdiagfunctors.cpp:(.text+0xb24): multiple definition of `float __vector Eigen::ei_plog<float __vector>(float __vector const&)'
iv.o:iv.cpp:(.text+0x37e2): first defined here


thanks,
Manoj




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/