versor icon indicating copy to clipboard operation
versor copied to clipboard

Can't build on arch-linux

Open FranciscoVasconcelos opened this issue 2 years ago • 3 comments

I'm getting the following error while trying to build in arch-linux:

[  4%] Linking CXX shared library lib/libvsr_shared.so
/usr/bin/cmake -E cmake_link_script CMakeFiles/vsr_shared.dir/link.txt --verbose=1
/usr/bin/c++ -fPIC  -g -O3 -ftemplate-depth-1200 -Wno-switch -Wno-deprecated-declarations -Wno-int-to-pointer-cast -DVSR_PRECISION_DOUBLE -O2 -g -DNDEBUG -shared -Wl,-soname,libvsr_shared.so -o lib/libvsr_shared.so CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_cubicLattice.cpp.o CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_frame.cpp.o CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_op.cpp.o CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_round.cpp.o   -L/home/francisco/git-repos/versor/build/lib
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_frame.cpp.o:(.bss+0x0): multiple definition of `vsr::cga::pointsOnSphere'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_frame.cpp.o:(.bss+0x1): multiple definition of `vsr::cga::pointOnSphere'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x1): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_frame.cpp.o:(.bss+0x2): multiple definition of `vsr::cga::pairOnSphere'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x2): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_frame.cpp.o:(.bss+0x3): multiple definition of `vsr::cga::pointsOnCircle'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x3): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_frame.cpp.o:(.bss+0x4): multiple definition of `vsr::cga::pointOnCircle'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x4): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_frame.cpp.o:(.bss+0x5): multiple definition of `vsr::cga::pointOnLine'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x5): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_op.cpp.o:(.bss+0x0): multiple definition of `vsr::cga::pointsOnSphere'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_op.cpp.o:(.bss+0x1): multiple definition of `vsr::cga::pointOnSphere'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x1): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_op.cpp.o:(.bss+0x2): multiple definition of `vsr::cga::pairOnSphere'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x2): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_op.cpp.o:(.bss+0x3): multiple definition of `vsr::cga::pointsOnCircle'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x3): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_op.cpp.o:(.bss+0x4): multiple definition of `vsr::cga::pointOnCircle'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x4): first defined here
/usr/bin/ld: CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_op.cpp.o:(.bss+0x5): multiple definition of `vsr::cga::pointOnLine'; CMakeFiles/vsr_shared.dir/src/space/vsr_cga3D_external_linkage.cpp.o:(.bss+0x5): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/vsr_shared.dir/build.make:161: lib/libvsr_shared.so] Error 1
make[2]: Leaving directory '/home/francisco/git-repos/versor/build'
make[1]: *** [CMakeFiles/Makefile2:546: CMakeFiles/vsr_shared.dir/all] Error 2
make[1]: Leaving directory '/home/francisco/git-repos/versor/build'
make: *** [Makefile:146: all] Error 2

FranciscoVasconcelos avatar Oct 03 '22 13:10 FranciscoVasconcelos

I have the same problem in Ubuntu 20.04.

Perhaps symbols from versor/include/vsr/space/vsr_cga3D_op.h are included several times.

StumpfMichael avatar Dec 30 '22 11:12 StumpfMichael

Ok, in this h-file is a section with lamdas, defined with "auto" which has external linkage by default. To change it to local linkage just add "const" and you should be able to build the libraries. Example auto pointsOnSphere ... => const auto pointsOnSphere ...

StumpfMichael avatar Dec 31 '22 00:12 StumpfMichael

I just went through the same problem, and adding const to the declarations fixed it for me.

Mgomez-01 avatar Apr 16 '23 04:04 Mgomez-01