Trunk version Linux x86/64 compilation problem

Bug #1804124 reported by Zhiping Xu
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Siesta
Invalid
Undecided
Unassigned

Bug Description

Dear Developer:

Thank you for offering the open-source code Siesta. I download your trunk branch (746 revisions). However, although I compiled the code successfully as a serial version, the compilation with MPI does not work, reporting the following errors at the last step (linking obj files into the executables):

fsockets.o: In function `__f90sockets_MOD_readbuffer_dv':
fsockets.f90:(.text+0x23): undefined reference to `readbuffer'
fsockets.o: In function `__f90sockets_MOD_readbuffer_s':
fsockets.f90:(.text+0x89): undefined reference to `readbuffer'
fsockets.f90:(.text+0xef): undefined reference to `readbuffer'
fsockets.o: In function `__f90sockets_MOD_readbuffer_i':
fsockets.f90:(.text+0x125): undefined reference to `readbuffer'
fsockets.o: In function `__f90sockets_MOD_readbuffer_d':
fsockets.f90:(.text+0x155): undefined reference to `readbuffer'
fsockets.o: In function `__f90sockets_MOD_writebuffer_dv':
fsockets.f90:(.text+0x183): undefined reference to `writebuffer'
fsockets.o: In function `__f90sockets_MOD_writebuffer_s':
fsockets.f90:(.text+0x1fc): undefined reference to `writebuffer'
fsockets.f90:(.text+0x221): undefined reference to `writebuffer'
fsockets.o: In function `__f90sockets_MOD_writebuffer_i':
fsockets.f90:(.text+0x257): undefined reference to `writebuffer'
fsockets.o: In function `__f90sockets_MOD_writebuffer_d':
fsockets.f90:(.text+0x27b): undefined reference to `writebuffer'
fsockets.o: In function `__f90sockets_MOD_create_socket':
fsockets.f90:(.text+0x38f): undefined reference to `create_socket'
fsockets.o: In function `__f90sockets_MOD_open_socket':
fsockets.f90:(.text+0x41f): undefined reference to `open_socket'
fsockets.o: In function `__f90sockets_MOD_close_socket':
fsockets.f90:(.text+0x1): undefined reference to `close_socket'
collect2: error: ld returned 1 exit status

I wonder if you could help me to identify the problem? I am using intelmpi (g++/gfortran) and my arch.make file is as follows:

.SUFFIXES:
.SUFFIXES: .f .F .o .c .a .f90 .F90

SIESTA_ARCH = x86-64

CC = g++
FPP = $(FC) -E -P
FC = mpif90
FC_SERIAL = gfortran

FFLAGS = -O2 -fPIC

AR = ar
RANLIB = ranlib

# the following line was added by Zhiping
DUMMY_FOX = --enable-dummy

SYS = nag

SP_KIND = 4
DP_KIND = 8
KINDS = $(SP_KIND) $(DP_KIND)

LDFLAGS =

#COMP_LIBS = libsiestaLAPACK.a libsiestaBLAS.a

FPPFLAGS = $(DEFS_PREFIX)-DMPI -DFC_HAVE_FLUSH -DFC_HAVE_ABORT #

LIBS = -lmkl_scalapack_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_lapack95_lp64 -lmkl_intel_lp64 \
       -lmkl_intel_thread -lmkl_core -liomp5 -lm -lpthread

# SIESTA needs an F90 interface to MPI
MPI_INTERFACE = libmpi_f90.a
MPI_INCLUDE = .

# Dependency rules ---------

FFLAGS_DEBUG = -g -O1 # your appropriate flags here...

# The atom.f code is very vulnerable. Particularly the Intel compiler
# will make an erroneous compilation of atom.f with high optimization
# levels.
atom.o: atom.F
 $(FC) -c $(FFLAGS_DEBUG) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $<

.c.o:
 $(CC) -c $(CFLAGS) $(INCFLAGS) $(CPPFLAGS) $<
.F.o:
 $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_fixed_F) $<
.F90.o:
 $(FC) -c $(FFLAGS) $(INCFLAGS) $(FPPFLAGS) $(FPPFLAGS_free_F90) $<
.f.o:
 $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_fixed_f) $<
.f90.o:
 $(FC) -c $(FFLAGS) $(INCFLAGS) $(FCFLAGS_free_f90) $<

Thank you very much!

Best,
Zhiping

Revision history for this message
Alberto Garcia (albertog) wrote :

You are using the C++ compiler ('g++') instead of 'gcc' (C compiler). This causes some
extra name mangling in 'sockets.o' that confuses the linking stage.

Changed in siesta:
status: New → Invalid
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.