error linker compile under linux

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

Moderators: silvia, selimgunay, Moderators

Post Reply
ebe79442114
Posts: 73
Joined: Tue Feb 20, 2007 6:48 am
Location: IIEES
Contact:

error linker compile under linux

Post by ebe79442114 »

in past, I compiled opensees in my PC under GNU/Linux debian system with AMD Athlon 64 processor and saved the compiled file.
Recently I buy a lenovo Thinkpad R61 laptop. Until now, i had use old compiled file from my PC on laptop,and now i can get a fresh compile of opensees, but it gives me errors below:

1- when i type make:

Code: Select all

ranlib /root/lib/libMetis.a
make[2]: Leaving directory `/root/OpenSees/OTHER/METIS'
make[1]: Leaving directory `/root/OpenSees/OTHER/METIS'
LIBRARIES BUILT ... NOW LINKING OpenSees PROGRAM
make[1]: Entering directory `/root/OpenSees/SRC/tcl'
make[1]: Nothing to be done for `tcl'.
make[1]: Leaving directory `/root/OpenSees/SRC/tcl'
make[1]: Entering directory `/root/OpenSees/SRC/modelbuilder/tcl'
Makefile:21: warning: overriding commands for target `tcl'
Makefile:13: warning: ignoring old commands for target `tcl'
make[2]: Entering directory `/root/OpenSees/SRC/tcl'
make[2]: Nothing to be done for `tcl'.
make[2]: Leaving directory `/root/OpenSees/SRC/tcl'
/usr/bin/ld: cannot find -lgfortran
collect2: ld returned 1 exit status
make[1]: *** [tcl] Error 1
make[1]: Leaving directory `/root/OpenSees/SRC/modelbuilder/tcl'
make: *** [all] Error 2
2- when i type make tk:

Code: Select all

make[2]: Entering directory `/root/OpenSees/SRC/tcl'
make[2]: Nothing to be done for `tk'.
make[2]: Leaving directory `/root/OpenSees/SRC/tcl'
/usr/bin/ld: cannot find -lgfortran
collect2: ld returned 1 exit status
make[1]: *** [tk] Error 1
make[1]: Leaving directory `/root/OpenSees/SRC/modelbuilder/tcl'
make: *** [tk] Error 2
I guess the compiler can't link the compile files together.because ld is a linker program.



Is there any way to compile opensees for INTEL CORE2DUO processor to use two core simultaneity ?

please guide me.

excuse me for my poor english.
operating system: Debian Gnu/Linux lenny 64Bit debian (DOT) org/
email : e.roknabadi (AT) iiees.ac.ir
ebe79442114
Posts: 73
Joined: Tue Feb 20, 2007 6:48 am
Location: IIEES
Contact:

Post by ebe79442114 »

can anyone gives me an idea?
operating system: Debian Gnu/Linux lenny 64Bit debian (DOT) org/
email : e.roknabadi (AT) iiees.ac.ir
rjaeger
Posts: 102
Joined: Thu Aug 31, 2006 9:57 pm
Location: UC Davis

Post by rjaeger »

Hi,

your error is definitely in the gfortran library: /usr/bin/ld: cannot find -lgfortran

Please look at this link to help you fix your problem: http://ubuntuforums.org/showthread.php?t=636864

You will need to locate your gfortran library and add the directory to the makefile.

Robbie
ebe79442114
Posts: 73
Joined: Tue Feb 20, 2007 6:48 am
Location: IIEES
Contact:

Post by ebe79442114 »

very thanks. :D

I compiled opensees1.7.5 and it runs faster than opensees1.7.3 that i had before. I compiled opensees1.7.5 with make command, but i couldn't compile it with make tk and it gives me the same error.

it's not important,because i could compile opensees1.7.3 with both make and make tk command.

my Makefile.def is looks like below:

Code: Select all

############################################################################
#
#  Program:  OpenSees
#
#  Purpose:  A Top-level Makefile to create the libraries needed
#	     to use the OpenSees framework. Works on Linux version 6.1
#            and below.
#
#  Written: fmk 
#  Created: 10/99
#
#  Send bug reports, comments or suggestions to fmckenna@ce.berkeley.edu
#
############################################################################

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

OpenSees_PROGRAM = $(HOME)/bin/OpenSees

OPERATING_SYSTEM = LINUX
GRAPHICS = UsingOpenGL
PROGRAMMING_MODE = SEQUENTIAL
DEBUG_MODE = NO_DEBUG
RELIABILITY = NO_RELIABILITY


# %---------------------------------%
# |  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
HOME		= /root
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) $(SRCdir) $(METISdir)

# %-------------------------------------------------------%
# | 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: if vendor supplied BLAS and LAPACK libraries leave the
# libraries blank. You have to get your own copy of the tcl/tk 
# library!! 
#
# Note: 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 jeremic@ucdavis.edu
MATMOD_LIBRARY  = $(HOME)/lib/libmatmod.a  # BJ_UCD jeremic@ucdavis.edu
BJMISC_LIBRARY  = $(HOME)/lib/libBJmisc.a  # BJ_UCD jeremic@ucdavis.edu
LAPACK_LIBRARY  = $(HOME)/lib/libLapack.a
BLAS_LIBRARY    = $(HOME)/lib/libBlas.a
SUPERLU_LIBRARY = $(HOME)/lib/libSuperLU.a
CBLAS_LIBRARY   = $(HOME)/lib/libCBlas.a
ARPACK_LIBRARY  = $(HOME)/lib/libArpack.a
UMFPACK_LIBRARY = $(HOME)/lib/libUmfpack.a
METIS_LIBRARY   = $(HOME)/lib/libMetis.a
TCL_LIBRARY = /usr/lib/libtk8.4.so.0 /usr/lib/libX11.a /usr/lib/libtcl8.4.so
BLITZ_LIBRARY = $(HOME)/blitz/lib/libblitz.a
GRAPHIC_LIBRARY     = -L/usr/X11R6/lib -lX11 -lGL -lGLU 

# WATCH OUT .. These libraries are removed when 'make wipe' is invoked.
WIPE_LIBS	= $(FE_LIBRARY) \
		$(LAPACK_LIBRARY) \
		$(BLAS_LIBRARY) \
		$(CBLAS_LIBRARY) \
		$(SUPERLU_LIBRARY) \
		$(ARPACK_LIBRARY) \
		$(UMFPACK_LIBRARY) \
	        $(METIS_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.                      |
# %---------------------------------------------------------%

# Compilers
CC++	= /usr/bin/g++
CC      = /usr/bin/gcc
FC	= /usr/bin/gfortran

AR		= ar 
ARFLAGS		= cqls
RANLIB		= ranlib
RANLIBFLAGS     =

# Compiler Flags
#
# NOTES:
#    C++ FLAGS TAKE need _UNIX or _WIN32 for preprocessor dircetives
#         - the _WIN32 for the Windows95/98 or NT operating system.
#    C FLAGS used -DUSE_VENDOR_BLAS (needed in SuperLU) if UNIX in C++ FLAGS
#

# modified as optimizaton currently causing problems with Steeln01 code
ifeq ($(DEBUG_MODE), DEBUG)

C++FLAGS         = -Wall -D_LINUX -D_UNIX -D_TCL84   \
		$(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG) \
	         -g -pg 
	      

CFLAGS          = -Wall -pg $(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) $(PROGRAMMING_FLAG)
FFLAGS          = -Wall 

# Linker
LINKER          = $(CC++)
LINKFLAGS       = -g -pg

else

C++FLAGS         = -Wall -D_LINUX -D_UNIX  -D_TCL84  \
	$(GRAPHIC_FLAG) $(RELIABILITY_FLAG) $(DEBUG_FLAG) \
	$(PROGRAMMING_FLAG) -O3 -ffloat-store 
CFLAGS          = -Wall -O2
FFLAGS          = -Wall -O

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

endif


GRAPHIC_FLAG = -D_GLX

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

# %---------------------------------------------------------%
# | 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 command. |
# %------------------%
#
.DEFAULT:
	@$(ECHO) "Unknown target $@, try:  make help"
#
# %-------------------------------------------%
# |  Command to build .o files from .f files. |
# %-------------------------------------------%
#

.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!!     |
# %---------------------------------------------------------%
MACHINE_LINKLIBS  = -L$(BASE)/lib \
		-L$(HOME)/lib 

MACHINE_NUMERICAL_LIBS  = -lm \
		$(ARPACK_LIBRARY) \
		$(SUPERLU_LIBRARY) \
		$(UMFPACK_LIBRARY) \
	        $(LAPACK_LIBRARY) $(BLAS_LIBRARY) $(CBLAS_LIBRARY) \
		$(GRAPHIC_LIBRARY)\
		-ldl -lgfortran -lpng

MACHINE_SPECIFIC_LIBS = -L/usr/lib/gcc/x86_64-linux-gnu/4.3



# %---------------------------------------------------------%
# | SECTION 7: INCLUDE FILES                                |
# |                                                         |
# | The following macros specify include files needed for   |
# | compilation.                                            |
# %---------------------------------------------------------%
MACHINE_INCLUDES        = -I/usr/include \
			  -I$(BASE)/include \
			  -I/usr/include/cxx \
			  -I$(HOME)/include -I$(HOME)/blitz

# this file contains all the OpenSees/SRC includes
include $(FE)/Makefile.incl

TCL_INCLUDES =  -I/usr/include/tcl8.4 -I/usr/include/

INCLUDES = $(TCL_INCLUDES) $(FE_INCLUDES) $(MACHINE_INCLUDES)

I only add this path:
MACHINE_SPECIFIC_LIBS = -L/usr/lib/gcc/x86_64-linux-gnu/4.3

and it was hole things i must be do.

please excuse me for my poor english.
very thanks.
operating system: Debian Gnu/Linux lenny 64Bit debian (DOT) org/
email : e.roknabadi (AT) iiees.ac.ir
Post Reply