Molcas Forum

Support and discussions for Molcas and OpenMolcas users and developers

You are not logged in.

Announcement

Welcome to the Molcas forum. You can choose an avatar and change the default style by going to "Profile" → "Personality" or "Display".

#1 2021-02-12 13:15:31

MaxParadiz
Member
Registered: 2019-09-01
Posts: 22

[SOLVED] Multiple definition errors when trying to compile Luscus

Hello,

I am trying to compile Luscus 0.8.6 from source in Arch Linux.

My CMake version is 3.19.3, and I am using GNU GCC compilers 10.2.0. I installed all of the required libraries through the pacman package manager.

When I try to make, I get several multiple-definition errors:

[ 67%] Building C object CMakeFiles/luscus.dir/mcube.c.o
[ 70%] Building C object CMakeFiles/luscus.dir/vstring.c.o
[ 72%] Linking C executable luscus
/usr/bin/ld: CMakeFiles/luscus.dir/gtk_gui.c.o:(.bss+0x0): multiple definition of `n_geometries'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gtk_gui.c.o:(.bss+0x8): multiple definition of `geo_file_position'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x8): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gtk_gui.c.o:(.bss+0x10): multiple definition of `igeo'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x10): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gtk_gui.c.o:(.bss+0x14): multiple definition of `ivib'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x14): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gtk_gui.c.o:(.bss+0x18): multiple definition of `iorb'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x18): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gtk_gui.c.o:(.bss+0x1c): multiple definition of `accept_keys'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x1c): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gtk_gui.c.o:(.bss+0x20): multiple definition of `move_camera'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x20): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gtk_gui.c.o:(.bss+0x30): multiple definition of `move_molecule'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x30): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gv_menubar.c.o:(.bss+0x0): multiple definition of `n_geometries'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x0): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gv_menubar.c.o:(.bss+0x8): multiple definition of `geo_file_position'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x8): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/gv_menubar.c.o:(.bss+0x10): multiple definition of `igeo'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x10): first defined here

..... etc ...

/usr/bin/ld: CMakeFiles/luscus.dir/mcube.c.o:(.bss+0x14): multiple definition of `ivib'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x14): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/mcube.c.o:(.bss+0x18): multiple definition of `iorb'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x18): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/mcube.c.o:(.bss+0x1c): multiple definition of `accept_keys'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x1c): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/mcube.c.o:(.bss+0x20): multiple definition of `move_camera'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x20): first defined here
/usr/bin/ld: CMakeFiles/luscus.dir/mcube.c.o:(.bss+0x30): multiple definition of `move_molecule'; CMakeFiles/luscus.dir/main.c.o:(.bss+0x30): first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/luscus.dir/build.make:508: luscus] Error 1
make[1]: *** [CMakeFiles/Makefile2:180: CMakeFiles/luscus.dir/all] Error 2
make: *** [Makefile:149: all] Error 2

I have struggled for a bit trying to set some of these variables to 'extern' in the header files but this only created more problems down the line. I am hoping that someone here who is more experienced with compiling C programs will be able to help!


The output of cmake .. is:

-- Found PkgConfig: /usr/bin/pkg-config (found version "1.7.3")
CMake Deprecation Warning at CMakeLists.txt:3 (cmake_minimum_required):
  Compatibility with CMake < 2.8.12 will be removed from a future version of
  CMake.

  Update the VERSION argument <min> value or use a ...<max> suffix to tell
  CMake that the project does not need compatibility with older versions.


-- The C compiler identification is GNU 10.2.0
-- The CXX compiler identification is GNU 10.2.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for strcasestr
-- Looking for strcasestr - found
-- Looking for strcasecmp
-- Looking for strcasecmp - found
-- Configuring done
-- Generating done
-- Build files have been written to: /home/max/Downloads/luscus_0.8.6/build

Last edited by MaxParadiz (2021-02-12 14:48:39)

Offline

#2 2021-02-12 14:48:13

MaxParadiz
Member
Registered: 2019-09-01
Posts: 22

Re: [SOLVED] Multiple definition errors when trying to compile Luscus

Found the solution.

The default "-fcommon" flag changed to "-fno-common" in GCC 10.
This problem is fixed by adding -DCMAKE_C_FLAGS=-fcommon when running cmake.

Offline

Board footer

Powered by FluxBB 1.5.11

Last refresh: Today 05:15:58