comment compiler lapack, de sorte qu'il peut être utilisé correctement lors de l'installation de octave?

Je suis en train d'installer la dernière octave 3.8.1 à partir de la source dans un cluster en cours d'exécution redhat+IBM LSF. Je n'ai pas accès en écriture à n'importe où ailleurs, sauf ma propre maison, dir, c'est pourquoi j'ai installer octave à partir de la source. Le blas et lapack fournis par le cluster ne fonctionne pas donc je dois construire par moi-même. J'ai maintenant fini de compiler les deux blas et lapack et passé le ./configure, mais lorsque je lance le faire, une erreur est signalée comme suit:

comment compiler lapack, de sorte qu'il peut être utilisé correctement lors de l'installation de octave?

Ce sont les étapes que j'ai utilisé pour créer mon propre BLAS et LAPACK. La source de BLAS est en ~/src/BLAS alors que la source de LAPACK est dans ~/src/lapack-3.5.0 et la source de l'octave 3.8.1 est dans ~/src/octave-3.8.1.
Avec seulement deux module, 1) pcre/8.33 2) acml/5.3.1/gfortran64, chargé, j'ai compilé BLAS bibliothèque partagée à l'aide de

gfortran -shared -O2 *.f -o libblas.so -fPIC

et statique de la bibliothèque à l'aide de

gfortran -O2 -c *.f -fPIC
ar cr libblas.a *.o

Puis-je copier la bibliothèque partagée libblas.so ~/src/octave-3.8.1. Le contenu de make.inc fichier dans lapack de la dir est:

####################################################################
#  LAPACK make include file.                                       #
#  LAPACK, Version 3.5.0                                           #
#  November 2013                                                   #
####################################################################
#
SHELL = /bin/sh
#  
#  Modify the FORTRAN and OPTS definitions to refer to the
#  compiler and desired compiler options for your machine.  NOOPT
#  refers to the compiler options desired when NO OPTIMIZATION is
#  selected.  Define LOADER and LOADOPTS to refer to the loader and 
#  desired load options for your machine.
#
FORTRAN  = gfortran 
OPTS     = -shared -O2 -fPIC
DRVOPTS  = $(OPTS)
NOOPT    = -O0 -frecursive
LOADER   = gfortran
LOADOPTS =
#
# Timer for the SECOND and DSECND routines
#
# Default : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME
#TIMER    = EXT_ETIME
# For RS6K : SECOND and DSECND will use a call to the EXTERNAL FUNCTION ETIME_
# TIMER    = EXT_ETIME_
# For gfortran compiler: SECOND and DSECND will use a call to the INTERNAL FUNCTION ETIME
TIMER    = INT_ETIME
# If your Fortran compiler does not provide etime (like Nag Fortran Compiler, etc...)
# SECOND and DSECND will use a call to the INTERNAL FUNCTION CPU_TIME
# TIMER    = INT_CPU_TIME
# If neither of this works...you can use the NONE value... In that case, SECOND and DSECND will always return 0
# TIMER     = NONE
#
#  Configuration LAPACKE: Native C interface to LAPACK
#  To generate LAPACKE library: type 'make lapackelib'
#  Configuration file: turned off (default)
#  Complex types: C99 (default)
#  Name pattern: mixed case (default)
#  (64-bit) Data model: LP64 (default)
#
# CC is the C compiler, normally invoked with options CFLAGS.
#
CC = gcc
CFLAGS = -O3
#
#  The archiver and the flag(s) to use when building archive (library)
#  If you system has no ranlib, set RANLIB = echo.
#
ARCH     = ar
ARCHFLAGS= cr
RANLIB   = ranlib
#
#  Location of the extended-precision BLAS (XBLAS) Fortran library
#  used for building and testing extended-precision routines.  The
#  relevant routines will be compiled and XBLAS will be linked only if
#  USEXBLAS is defined.
#
# USEXBLAS    = Yes
XBLASLIB     =
# XBLASLIB    = -lxblas
#
#  The location of the libraries to which you will link.  (The 
#  machine-specific, optimized BLAS library should be used whenever
#  possible.)
#
#BLASLIB      = ../../librefblas.a
BLASLIB      = ~/src/BLAS/libblas.a
LAPACKLIB    = liblapack.a
TMGLIB       = libtmglib.a
LAPACKELIB   = liblapacke.a

Ensuite je tape make pour compiler LAPACK. Après la compilation, j'ai copié la sortie liblapack.a ~/src/octave-3.8.1.

La ./configure ligne de commande est:

./configure --prefix=$HOME/bin/octave --with-blas=./libblas.so --with-lapack=$HOME/src/octave-3.8.1/liblapack.a --disable-readline --enable-64

Je peux passer l' ./configurer. Ensuite je tape make essayer de construire octave 3.8.1 et j'ai l'erreur ci-dessus.

De la make.inc fichier, il peut être vu que j'ai suivi la suggestion du compilateur "recompile with -fPIC" et modifié le faire.inc en conséquence. J'ai aussi ajouter -shared commutateur dans le OPTS variable. En outre, j'ai essayé à l'aide de vieux LAPACK version, mais ne fonctionne pas. Je n'ai vraiment aucune idée de pourquoi l'erreur vient toujours pas. Donc je me demande si vous pourriez s'il vous plaît dites-moi comment faire pour compiler le LAPACK de la bibliothèque, de sorte qu'il peut être utilisé correctement lors de l'installation de octave 3.8.1. Les deux points suivants peuvent être la peine d'envisager. (1) dois-je compiler lapack comme une bibliothèque statique ou une bibliothèque partagée? (2) devrait -fPIC commutateur être appliquée à lapack compilation ou l'octave de la make? Dans ce dernier cas, comment s'appliquent -fPIC à faire? Vous n'avez pas limitée à ces deux points car il peut y avoir d'autres raisons pour l'erreur. Un conseil pour résoudre ce problème est la bienvenue. Si vous avez besoin d'autres informations, veuillez me le dire. Je vous remercie.

Avez-vous nettoyé auxiliaire de construire des fichiers entre vos tentatives de l'exécution de make? Concernant la transmission des drapeaux à l'Octave de construire, vous pouvez le faire directement dans la configuration de l'étape: ./configure CXXFLAGS='-O2 -fPIC'.
Je vous remercie. J'ai tapé "make clean" avant de le faire. J'ai ajouté "CXXFLAGS='-O2 -fPIC'" dans les arguments de ligne de commande ./configurer, mais le même message d'erreur se produit.
avez-vous réussir? Peut-être que vous devez également modifier la variable CFLAGS, LOADOPTS et NOOPT dans make.inc (juste deviner). Vous pouvez également connecter le lapack construire et vérifier si les compilateurs sont vraiment appelés avec -fPIC drapeau.

OriginalL'auteur user2384994 | 2014-05-05