Problem creating libOpenSees.a

For developers writing C++, Fortran, Java, code who have questions or comments to make.

Moderators: silvia, selimgunay, Moderators

Post Reply
hugo_esquivel
Posts: 71
Joined: Fri Nov 06, 2009 6:40 am
Location: Universidad del Norte, Colombia

Problem creating libOpenSees.a

Post by hugo_esquivel »

Hi Frank. When compiling SRCdir to get libOpenSees.a, I am getting these errors:

--------------------------------------------
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h: In member function ‘virtual int DistributedSuperLU::solve()’:
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:90: error: ‘int SparseGenColLinSOE::size’ is protected
DistributedSuperLU.cpp:82: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:95: error: ‘Vector* SparseGenColLinSOE::vectB’ is protected
DistributedSuperLU.cpp:88: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:92: error: ‘double* SparseGenColLinSOE::A’ is protected
DistributedSuperLU.cpp:89: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:91: error: ‘int SparseGenColLinSOE::nnz’ is protected
DistributedSuperLU.cpp:89: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:92: error: ‘double* SparseGenColLinSOE::A’ is protected
DistributedSuperLU.cpp:99: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:91: error: ‘int SparseGenColLinSOE::nnz’ is protected
DistributedSuperLU.cpp:99: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:95: error: ‘Vector* SparseGenColLinSOE::vectB’ is protected
DistributedSuperLU.cpp:104: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:90: error: ‘int SparseGenColLinSOE::size’ is protected
DistributedSuperLU.cpp:114: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:91: error: ‘int SparseGenColLinSOE::nnz’ is protected
DistributedSuperLU.cpp:115: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:92: error: ‘double* SparseGenColLinSOE::X’ is protected
DistributedSuperLU.cpp:121: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:92: error: ‘double* SparseGenColLinSOE::B’ is protected
DistributedSuperLU.cpp:122: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:92: error: ‘double* SparseGenColLinSOE::X’ is protected
DistributedSuperLU.cpp:126: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:97: error: ‘bool SparseGenColLinSOE::factored’ is protected
DistributedSuperLU.cpp:134: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:93: error: ‘int* SparseGenColLinSOE::rowA’ is protected
DistributedSuperLU.cpp:136: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:97: error: ‘bool SparseGenColLinSOE::factored’ is protected
DistributedSuperLU.cpp:146: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:97: error: ‘bool SparseGenColLinSOE::factored’ is protected
DistributedSuperLU.cpp:148: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h: In member function ‘virtual int DistributedSuperLU::setSize()’:
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:90: error: ‘int SparseGenColLinSOE::size’ is protected
DistributedSuperLU.cpp:175: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:90: error: ‘int SparseGenColLinSOE::size’ is protected
DistributedSuperLU.cpp:195: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:91: error: ‘int SparseGenColLinSOE::nnz’ is protected
DistributedSuperLU.cpp:212: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:93: error: ‘int* SparseGenColLinSOE::rowA’ is protected
DistributedSuperLU.cpp:214: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:92: error: ‘double* SparseGenColLinSOE::A’ is protected
DistributedSuperLU.cpp:216: error: within this context
/Users/hresquivelo/OpenSees/SRC/system_of_eqn/linearSOE/sparseGEN/SparseGenColLinSOE.h:93: error: ‘int* SparseGenColLinSOE::colStartA’ is protected
DistributedSuperLU.cpp:217: error: within this context
make[4]: *** [DistributedSuperLU.o] Error 1
make[3]: *** [all] Error 2
make[2]: *** [all] Error 2
make[1]: *** [all] Error 2
--------------------------------------------


Any suggestion to avoid/fix those errors will be greatly appreciated!

I am compiling on Snow Leopard and using the default gcc and g++ compilers (those coming out of the box with the mac, version 4.2.1) together with gfortran 4.4.3.

--------------------------
CC++ = g++
CC = gcc
FC = $(BASE)/openseeslib/gcc/4.4.3/bin/gfortran

AR = ar
ARFLAGS = cqls
RANLIB = ranlib
RANLIBFLAGS =

C++FLAGS = -Wall -D_MACOSX -D_UNIX -D_TCL85 -D_HTTTPS -D_COROTATIONAL \
$(DEBUG_FLAG) $(PROGRAMMING_FLAG) -O3 -ffloat-store

CFLAGS = -Wall -O2 -D_HTTTPS

FFLAGS = -Wall -O

LINKER = $(CC++)
LINKFLAGS = -rdynamic -Wl
--------------------------

Thank you!

NOTE: -D_HTTTPS has an additional T. It was intentionally added. :wink:
fmk
Site Admin
Posts: 5884
Joined: Fri Jun 11, 2004 2:33 pm
Location: UC Berkeley
Contact:

Post by fmk »

what version of OpenSees are you compiling:
the programming mode in Makefile.def

SEQUENTIAL,
PARALLEL,
PARALLEL_INTERPRETERS

each version requires a seperate make wipe and make as some code is included in some files and not in others.

the DistributedSuperLU solver shoud be a friend classs for the 2 parallel solvers; it's not of a sequential one.
hugo_esquivel
Posts: 71
Joined: Fri Nov 06, 2009 6:40 am
Location: Universidad del Norte, Colombia

Post by hugo_esquivel »

Hi Frank. Below I have attached my Makefile.def. I am trying to compile OpenSees version 2.2.0 (PROGRAMING_MODE = PARALLEL_INTERPRETERS). This version was updated via CVS on Thursday, February 25, 2010 (Today!).

PS: Today I sent you a mail. Could you please help me again with that issue. Thank you!
hugo_esquivel
Posts: 71
Joined: Fri Nov 06, 2009 6:40 am
Location: Universidad del Norte, Colombia

Post by hugo_esquivel »

# ---------------------------------------------------------------- #
# SECTION 1: PROGRAM #
# ---------------------------------------------------------------- #
# Specify the location and name of the OpenSees interpreter #
# program that will be created (if this all works!). #
# ---------------------------------------------------------------- #

PROGRAMMING_MODE = PARALLEL_INTERPRETERS

# OPTIONS = DEBUG | NO_DEBUG
DEBUG_MODE = NO_DEBUG

# OPTIONS = YES_RELIABILITY | NO_RELIABILITY
RELIABILITY = NO_RELIABILITY

OpenSees_PROGRAM = $(HOME)/bin/OpenSeesMP


# ---------------------------------------------------------------- #
# SECTION 2: PATHS #
# ---------------------------------------------------------------- #
# NOTE: If vendor supplied BLAS and LAPACK libraries or if you #
# have any of the libraries already, leave the directory location #
# blank and remove the directory from DIRS. #
# ---------------------------------------------------------------- #

BASE = /usr/local
HOME = /Users/hresquivelo
FE = $(HOME)/OpenSees/SRC

BLASdir = $(HOME)/OpenSees/OTHER/BLAS
CBLASdir = $(HOME)/OpenSees/OTHER/CBLAS
LAPACKdir = $(HOME)/OpenSees/OTHER/LAPACK
SUPERLUdir = $(HOME)/OpenSees/OTHER/SuperLU_3.0/SRC
ARPACKdir = $(HOME)/OpenSees/OTHER/ARPACK
UMFPACKdir = $(HOME)/OpenSees/OTHER/UMFPACK
METISdir = $(HOME)/OpenSees/OTHER/METIS
SRCdir = $(HOME)/OpenSees/SRC

DIRS = $(BLASdir) $(CBLASdir) $(LAPACKdir) $(SUPERLUdir) \
$(ARPACKdir) $(UMFPACKdir) $(METISdir) $(SRCdir)



# ---------------------------------------------------------------- #
# SECTION 3: LIBRARIES #
# ---------------------------------------------------------------- #
# The following section defines the libraries that will be created #
# and/or linked with when the libraries are being created or #
# linked with. #
# NOTE 1: If vendor supplied BLAS and LAPACK libraries leave the #
# libraries blank. You have to get your own copy of the tcl/tk #
# library! #
# NOTE 2: For libraries that will be created (any in DIRS above) #
# make sure the directory exsists where you want the library to go #
# ---------------------------------------------------------------- #

FE_LIBRARY = $(HOME)/lib/libOpenSees.a
NDARRAY_LIBRARY = $(HOME)/lib/libndarray.a # BJ_UCD
MATMOD_LIBRARY = $(HOME)/lib/libmatmod.a # BJ_UCD
BJMISC_LIBRARY = $(HOME)/lib/libBJmisc.a # BJ_UCD
BLAS_LIBRARY = $(HOME)/lib/libBlas.a
CBLAS_LIBRARY = $(HOME)/lib/libCBlas.a
LAPACK_LIBRARY = $(HOME)/lib/libLapack.a
SUPERLU_LIBRARY = $(HOME)/lib/libSuperLU.a
ARPACK_LIBRARY = $(HOME)/lib/libArpack.a
UMFPACK_LIBRARY = $(HOME)/lib/libUmfpack.a
METIS_LIBRARY = $(HOME)/lib/libMetis.a

ifeq ($(RELIABILITY), YES_RELIABILITY)
RELIABILITY_LIBRARY = $(HOME)/lib/libReliability.a
endif

TCL_LIBRARY = $(BASE)/openseeslib/tcl/8.5.8/lib/libtcl8.5.dylib

WIPE_LIBS = $(FE_LIBRARY) $(NDARRAY_LIBRARY) $(MATMOD_LIBRARY) \
$(BJMISC_LIBRARY) $(LAPACK_LIBRARY) $(BLAS_LIBRARY) \
$(CBLAS_LIBRARY) $(SUPERLU_LIBRARY) $(ARPACK_LIBRARY) \
$(UMFPACK_LIBRARY) $(METIS_LIBRARY) $(RELIABILITY_LIBRARY)



# ----------------------------------------------------------------- #
# SECTION 4: COMPILERS #
# ----------------------------------------------------------------- #
# The following macros specify compilers, linker/loaders, the #
# archiver, and their options. You need to make sure these are #
# correct for your system. #
# ----------------------------------------------------------------- #

PROGRAMMING_FLAG = -D_PARALLEL_INTERPRETERS
SCALAP_FLAG = -D_SCALAP
GRAPHIC_FLAG = -D_NOGRAPHICS

ifeq ($(RELIABILITY), YES_RELIABILITY)
RELIABILITY_FLAG = -D_RELIABILITY
endif

CC++ = $(BASE)/openseeslib/openmpi/1.4.1/bin/mpic++
CC = $(BASE)/openseeslib/openmpi/1.4.1/bin/mpicc
FC = $(BASE)/openseeslib/openmpi/1.4.1/bin/mpif77

LINKER = $(CC++)
LINKFLAGS = -L$(BASE)/openseeslib/openmpi/1.4.1/lib -lmpi


AR = ar
ARFLAGS = cqls
RANLIB = ranlib
RANLIBFLAGS =


ifeq ($(DEBUG_MODE), DEBUG)
C++FLAGS = -Wall -D_MACOSX -D_UNIX -D_TCL85 D_HTTTPS -D_COROTATIONAL\
$(RELIABILITY_FLAG) $(SCALAP_FLAG) $(PROGRAMMING_FLAG) $(GRAPHIC_FLAG) \
-g -O0 -ffloat-store

CFLAGS = -Wall -O0 -g

FFLAGS = -Wall -O -DCUBLAS -x f77-cpp-input --no-second-underscore

else
C++FLAGS = -Wall -D_MACOSX -D_UNIX -D_TCL85 -D_HTTTPS -D_COROTATIONAL \
$(RELIABILITY_FLAG) $(SCALAP_FLAG) $(PROGRAMMING_FLAG) $(GRAPHIC_FLAG) \
-O3 -ffloat-store

CFLAGS = -Wall -O2

FFLAGS = -Wall -O -DCUBLAS -x f77-cpp-input --no-second-underscore
endif


# MISCELLANEOUS
MAKE = make
CD = cd
ECHO = echo
RM = rm
RMFLAGS = -f
SHELL = /bin/sh



# ----------------------------------------------------------------- #
# SECTION 5: COMPILATION #
# ----------------------------------------------------------------- #
# The following macros specify the macros used in to compile the #
# source code into object code. #
# ----------------------------------------------------------------- #

.SUFFIXES:
.SUFFIXES: .C .c .f .f90 .cpp .o .cpp

.DEFAULT:
@$(ECHO) "Unknown target $@, try: make help"

.cpp.o:
@$(ECHO) Making $@ from $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@

.C.o:
@$(ECHO) Making $@ from $<
$(CC++) $(C++FLAGS) $(INCLUDES) -c $< -o $@
.c.o:
@$(ECHO) Making $@ from $<
$(CC) $(CFLAGS) -c $< -o $@
.f.o:
@$(ECHO) Making $@ from $<
$(FC) $(FFLAGS) -c $< -o $@



# ----------------------------------------------------------------- #
# SECTION 6: OTHER LIBRARIES #
# ----------------------------------------------------------------- #
# The following macros specify other libraries that must be linked #
# with when creating executables. These are platform specific and #
# typically order does matter! #
# ----------------------------------------------------------------- #

SCALAP_LIB = $(BASE)/openseeslib/scalapack/blacs_MPI-mac-0.a \
$(BASE)/openseeslib/scalapack/blacsCinit_MPI-mac-0.a \
$(BASE)/openseeslib/scalapack/blacsF77init_MPI-mac-0.a \
$(BASE)/openseeslib/scalapack/blas_mac.a \
$(BASE)/openseeslib/scalapack/lapack_mac.a \
$(BASE)/openseeslib/scalapack/libscalapack.a

MACHINE_LINKLIBS = -L$(BASE)/lib -L$(HOME)/lib

MACHINE_NUMERICAL_LIBS = $(LAPACK_LIBRARY) $(BLAS_LIBRARY) \
$(CBLAS_LIBRARY) $(SUPERLU_LIBRARY) $(ARPACK_LIBRARY) \
$(UMFPACK_LIBRARY) $(RELIABILITY_LIBRARY) \
-ldl -L$(BASE)/openseeslib/gcc/4.4.3/lib -lgfortran

MACHINE_SPECIFIC_LIBS = -lssl

PARALLEL_LIB = $(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSuperLU.o \
$(FE)/system_of_eqn/linearSOE/sparseGEN/DistributedSparseGenColLinSOE.o \
$(DISTRIBUTED_SUPERLU_LIBRARY) $(SCALAP_LIB) $(METIS_LIBRARY) \
-L$(BASE))/openseeslib/openmpi/1.4.1/lib -lmpi_cxx -lmpi_f77 -lmpi -lopen-rte -lopen-pal



# ----------------------------------------------------------------- #
# SECTION 7: INCLUDE FILES #
# ----------------------------------------------------------------- #
# The following macros specify include files needed for compilation #
# ----------------------------------------------------------------- #

MACHINE_INCLUDES = -I/usr/include -I$(BASE)/include \
-I$(HOME)/OpenSees/OTHER/SuperLU_DIST_2.0/SRC

include $(FE)/Makefile.incl

TCL_INCLUDES = -I$(BASE)/openseeslib/tcl/8.5.8/include

INCLUDES = $(FE_INCLUDES) $(TCL_INCLUDES) $(MACHINE_INCLUDES)
hugo_esquivel
Posts: 71
Joined: Fri Nov 06, 2009 6:40 am
Location: Universidad del Norte, Colombia

Post by hugo_esquivel »

Ok... I followed your suggestion and in some way I bypassed those errors successfully. But now I have another problem: the compiler cannot find the header: myDebug.h. I did a search in /usr and $HOME/opensees, but get nothing. Could you please tell me where can I get that file?

---------------------
ContactMaterial3D.cpp:21:21: error: myDebug.h: No such file or directory
---------------------

Thank you!

NOTE: The makefile shown above was updated with the one that seems to work now.
hugo_esquivel
Posts: 71
Joined: Fri Nov 06, 2009 6:40 am
Location: Universidad del Norte, Colombia

Post by hugo_esquivel »

Hi Frank. I would like to know whether myDebug.h is a header required to compile. It is included in these three cpp files:
- ContactMaterial3D.cpp
- BoundingCamClay.cpp
- BoundingCamClay3D.cpp

And it seems a header for debugging.

Thanks.
Post Reply