Molcas Forum

Support and discussions for Molcas and OpenMolcas users and developers

You are not logged in.

Announcement

Welcome to the Molcas forum.

Please note: The forum's URL has changed. The new URL is: https://molcasforum.univie.ac.at. Please update your bookmarks!

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 23:22:13