2014-11-05 151 views
0

我真的需要你的幫助,我一直試圖解決這個問題幾天沒有運氣。我正在編譯與gfortran(作爲主要程序在fortran中)一個程序,它要求在標準目錄中安裝一個庫(lhapdf),但實際上發現它,但是當與C++庫鏈接時,它似乎有問題。正如我與配置和生成文件不熟悉我無法弄清楚什麼是錯的,這是我的配置文件:與Fortran編譯器和C++庫衝突

#! /bin/sh 
    # configure script for FormCalc 
    # note: has nothing to do with GNU autoconf 
    # this file is part of FormCalc 
# last modified 30 Aug 14 th 


exec 2> ${LOGFILE:-/dev/null} 3>&1 
eval ${LOGFILE:+set -x} 


LC_ALL=C 
export LC_ALL 

test=test$$ 
trap "rm -fr $test*" 0 1 2 3 15 

if (echo "test\c"; echo 1,2,3) | grep c > /dev/null ; then 
    if (echo -n test; echo 1,2,3) | grep n > /dev/null ; then 
    echo_n= 
    echo_c=' 
' 
    else 
    echo_n=-n 
    echo_c= 
    fi 
else 
    echo_n= 
    echo_c='\c' 
fi 


findprog() { 
    echo $echo_n "looking for $1... $echo_c" 1>&3 
    shift 
    test -n "$CONF_TARGET" && for prog in "[email protected]" ; do 
    full="`which \"$CONF_TARGET-$prog\" 2> /dev/null`" 
    test -x "$full" && { 
     echo $full 1>&3 
     echo $CONF_TARGET-$prog 
     return 0 
    } 
    done 
    for prog in "[email protected]" ; do 
    full="`which \"$prog\" 2> /dev/null`" 
    test -x "$full" && { 
     echo $full 1>&3 
     echo $prog 
     return 0 
    } 
    done 
    echo "no [email protected] in your path" 1>&3 
    return 1 
} 


findlib() { 
    echo $echo_n "looking for $1... $echo_c" 1>&3 
    file=$2 
    tag=$3 
    shift 3 
    for base in "[email protected]" \ 
    ../$tag* \ 
    ../../$tag* \ 
    ../../../$tag* \ 
    ../../../../$tag* \ 
    $HOME/$tag* \ 
    /usr/local/$tag* \ 
    /usr/$tag* \ 
    /usr/local \ 
    /usr 
    do 
    for path in \ 
     "${CONF_LIBDIRSUFFIX:+$base/lib$CONF_LIBDIRSUFFIX}" \ 
     "${CONF_LIBDIRSUFFIX:+$base/$CONF_DEFPREFIX/lib$CONF_LIBDIRSUFFIX}" \ 
     "$base/lib" \ 
     "$base/$CONF_DEFPREFIX/lib" \ 
     ${CONF_QUAD:+"$base/build-quad"} \ 
     "$base/build" \ 
     "$base/includects" \ 
     "$base/libs" \ 
     "$base/.libs" \ 
     "$base/src" \ 
     "$base/src/.libs" \ 
     "$base" 
    do 
     test -f "$path/$file" && { 
     echo "$path" 1>&3 
     echo "$path" 
     return 0 
     } 
    done 
    done 
    echo "not found" 1>&3 
    return 1 
} 


getldflags() { 
    ldflags="$LDFLAGS" 

    while read line ; do 
    set -- `echo $line | tr ':,()' ' '` 
    case $1 in 
    */collect2$CONF_EXE | */ld$CONF_EXE | ld$CONF_EXE) ;; 
    *) continue ;; 
    esac 
    while test $# -gt 1 ; do 
     shift 
     case $1 in 
#  *.o | -lc | -lgcc*) 
     *.o | -lc) 
     ;; 
     -l* | -L* | *.a) 
     ldflags="$ldflags $1" ;; 
     -Bstatic | -Bdynamic | *.ld) 
     ldflags="$ldflags -Wl,$1" ;; 
     /*) 
     ldflags="$ldflags -L,$1" ;; 
     -rpath*) 
     ldflags="$ldflags -Wl,$1,$2" 
     shift ;; 
     -dynamic-linker) 
     shift ;; 
     esac 
    done 
    done 

    echo $ldflags 
} 


CONF_SRC=`dirname $0` 
CONF_OS=`uname -s` 
CONF_OSVER=`uname -r` 
CONF_MACH=`uname -m` 
CONF_DEFPREFIX="$CONF_MACH-$CONF_OS" 
CONF_PREFIX="$CONF_DEFPREFIX" 
CONF_TARGET= 
CONF_STATIC= 
CONF_STATIC_EXT= 
CONF_QUAD= 
CONF_DEBUG= 
CONF_BITS= 
    # Mma 5.1's mcc needs -lpthread for static linking 
CONF_MCLIBS="-lpthread" 
CONF_ARCH="-march=native" 
CONF_AS= 
CONF_EXE= 
case "$CONF_OS" in 
CYG*) CONF_EXE=.exe ;; 
Darwin) CONF_AS="-Wa,-q" ;; 
esac 

CONF_MAKEARGS=0 

for arg in "[email protected]" ; do 
    case "$arg" in 
    --prefix=*) 
    CONF_PREFIX=`expr "$arg" : ".*--prefix=\(.*\)"` ;; 
    --host=*) 
    CONF_TARGET=`expr "$arg" : ".*--host=\(.*\)"` ;; 
    --static) 
    CONF_STATIC="-static" 
    case "$CONF_OS" in 
# Apple discourages static linking, see 
# http://developer.apple.com/qa/qa2001/qa1118.html, 
# so we make only libgcc static. For a static libg2c do: 
# sudo chmod 000 /usr/local/lib/libg2c.dylib 
    Darwin | CYG*) 
     CONF_STATIC_EXT=$CONF_STATIC 
     CONF_STATIC= ;; 
    esac ;; 
    --quad) 
    CONF_QUAD=1 ;; 
    --debug) 
    CONF_DEBUG="-O0 -g" ;; 
    --32) 
    CONF_BITS=32 ;; 
    --64) 
    CONF_BITS=64 ;; 
    --generic) 
    CONF_ARCH= 
    CONF_AS= ;; 
    --make*) 
    CONF_MAKEARGS="`expr "$arg" : "--make=\(.*\)"`" ;; 
    --help) 
    cat << _EOF_ 1>&3 
$0 configures FormCalc-generated Fortran code, i.e. determines 
or guesses the compiler and flags and writes out a makefile. 

$0 understands the following options: 

--prefix=DIR  use DIR as installation directory, 

--host=HOST   target host triplet, e.g. i386-pc-linux, 

--static   link the executables statically, 

--quad    compile with quadruple precision (gfortran 4.6+, ifort and xlf only), 

--debug    compile without optimization, 

--32    force 32-bit compilation, 

--64    force 64-bit compilation, 

--generic   do not specifically target the CPU configure runs on, 

--make[=ARGS]  immediately continue with "make ARGS" after configure. 

_EOF_ 
    exit 1 ;; 
    -*) 
    echo "Warning: $arg is not a valid option." 1>&3 ;; 
    *=*) 
    eval `echo $arg\" | sed 's/=/="/'` ;; 
    *) 
    echo "Warning: $arg is not a valid argument." 1>&3 ;; 
    esac 
done 

test "$CONF_OS" = Linux -a "$CONF_BITS" \!= 32 && CONF_LIBDIRSUFFIX=64 

CONF_M=${CONF_BITS:+-m$CONF_BITS} 


## look for some programs 

CONF_MAKE=`findprog make $MAKE gmake Make make` || exit 1 

CONF_CC=`findprog gcc $CC clang gcc` || exit 1 

CONF_CXX=`findprog g++ $CXX clang++ g++` || exit 1 

CONF_FC=`findprog fortran $FC ${CONF_QUAD:+ifort gfortran xlf} ifort pgf90 xlf gfortran g95 f90` || exit 1 

CONF_AR=`findprog ar $AR ar` 

CONF_RANLIB=`findprog ranlib $RANLIB ranlib` 

CONF_NM=`findprog nm $NM nm` 

CONF_DLLTOOL=`findprog dlltool $DLLTOOL dlltool` 

CONF_DEF="-D" 

case "`$CONF_FC --version -c 2>&1`" in 
*G95*) 
    CONF_FFLAGS="$FFLAGS -O0 -g -ffixed-line-length-132 -freal-loops $CONF_M $CONF_STATIC ${CONF_DEBUG:+-Wall}" ;; 
*GNU*) 
    CONF_FFLAGS="$FFLAGS ${CONF_DEBUG:--O3 -g} -lLHAPDF -ffixed-line-length-none $CONF_M $CONF_STATIC ${CONF_DEBUG:+-Wall}" 
    case "$CONF_FC" in 
    *gfortran*) 
    CONF_FFLAGS="$CONF_FFLAGS $CONF_ARCH $CONF_AS ${CONF_DEBUG:+-Wtabs -ffpe-trap=invalid,overflow,zero} -ff2c ${CONF_STATIC_EXT:+-static-libgfortran -static-libgcc} ${CONF_QUAD:+-fdefault-real-8}" ;; 
    esac ;; 
*) 
    CONF_FFLAGS="${FFLAGS-default}" 
    test "$CONF_FFLAGS" = default && case "$CONF_FC$CONF_MACH" in 
    *pgf*) 
    CONF_FFLAGS="${CONF_DEBUG:--O3 -g} ${CONF_ARCH:+-Mvect=simd} ${CONF_DEBUG:+-Ktrap=fp} -Mextend -Minform=inform -g77libs ${CONF_STATIC:+-Bstatic} $CONF_M" ;; 
    *ifort*) 
    CONF_FFLAGS="${CONF_DEBUG:--O3 -g} $CONF_ARCH -extend_source -warn nouncalled -warn truncated_source -assume bscc $CONF_STATIC ${CONF_STATIC_EXT:+-static-intel} ${CONF_QUAD:+-r16 -DDBLE=QEXT -DDIMAG=QIMAG -DDCONJG=QCONJG -DDCMPLX=QCMPLX} $CONF_M" ;; 
    *alpha) 
    CONF_FFLAGS="${CONF_DEBUG:--O3 -g3} ${CONF_DEBUG:+-fpe0} -extend_source -warn truncated_source ${CONF_STATIC:+-non_shared}" ;; 
    *sun* | *sparc*) 
    CONF_FFLAGS="${CONF_DEBUG:--O3 -g} ${CONF_DEBUG:+-ftrap=common} -e ${CONF_STATIC:+-Bstatic}" ;; 
    *hp*) 
    CONF_FFLAGS="${CONF_DEBUG:--O2 -g} ${CONF_DEBUG:++FPVZO} +es +U77 ${CONF_STATIC:+-Wl,-noshared}" ;; 
    *xlf*) 
    CONF_FFLAGS="${CONF_DEBUG:--O2 -g} ${CONF_DEBUG:+-qflttrap=enable:invalid:overflow:zerodivide} -qfixed=132 -qmaxmem=-1 -qextname ${CONF_QUAD:+-qautodbl=dbl}" 
    CONF_DEF="-WF,-D" ;; 
    *) 
    CONF_FFLAGS="${CONF_DEBUG:--O -g}" ;; 
    esac ;; 
esac 


## find the Fortran libraries 

echo $echo_n "extracting the Fortran libraries... $echo_c" 1>&3 

rm -fr $test* 

cat > $test.f << _EOF_ 
    program dontpanic 
    print *, "Hi" 
    end 
_EOF_ 
eval ${LOGFILE:+cat $test.f 1>&2} 

CONF_LDFLAGS=`$CONF_FC $CONF_FFLAGS -v -o -lstdc++ $test $test.f 2>&1 | getldflags` 

CONF_INCPATH="$INCPATH" 
CONF_STDLIBS="$STDLIBS" 
case "$CONF_OS$CONF_OSVER" in 
Darwin10*) CONF_STDLIBS="${CONF_STDLIBS:+$CONF_STDLIBS }-lSystemStubs" ;; 
esac 

echo $CONF_LDFLAGS 1>&3 


test -z "$CONF_BITS" && case "$CONF_MACH" in 
*86*) CONF_BITS=32 
    case "`file $test`" in 
    *x86?64*) CONF_BITS=64 ;; 
    esac 
    CONF_M="-m$CONF_BITS" ;; 
esac 


CONF_CFLAGS="${CFLAGS-${CONF_DEBUG:--O3 -g } $CONF_ARCH -std=gnu99 -fomit-frame-pointer -ffast-math} $CONF_M $CONF_STATIC ${CONF_STATIC_EXT:+-static-libgcc}" 

CONF_CXXFLAGS="$CXXFLAGS $CONF_M $CONF_STATIC ${CONF_STATIC_EXT:+-static-libstdc++ -static-libgcc}" 


## does Fortran need externals for U77 routines? 

echo $echo_n "does $CONF_FC need externals for U77 routines... $echo_c" 1>&3 

rm -fr $test* 

cat > $test.f << _EOF_ 
    program test 
    implicit none 
    print *, iargc(), len_trim("Hi") 
    end 
_EOF_ 
eval ${LOGFILE:+cat $test.f 1>&2} 

if $CONF_FC $CONF_FFLAGS -c $test.f 1>&2 ; then 
    echo "no" 1>&3 
    CONF_U77EXT=0 
else 
    echo "yes" 1>&3 
    CONF_U77EXT=1 
fi 


## does Fortran append underscores to symbols? 

echo $echo_n "does $CONF_FC append underscores... $echo_c" 1>&3 

rm -fr $test* 

echo "void uscore$$_() {}" > $test-c.c 
eval ${LOGFILE:+cat $test-c.c 1>&2} 

cat > $test.f << _EOF_ 
    program test_uscore 
    call uscore$$ 
    end 
_EOF_ 
eval ${LOGFILE:+cat $test.f 1>&2} 

$CONF_CC $CONF_CFLAGS -c $test-c.c 1>&2 

if $CONF_FC $CONF_FFLAGS -o $test $test.f $test-c.o 1>&2 ; then 
    echo "yes" 1>&3 
else 
    echo "no" 1>&3 
    CONF_CFLAGS="$CONF_CFLAGS -DNOUNDERSCORE" 
fi 


## find max SIMD vector length supported by hardware 

echo $echo_n "extracting SIMD capabilities of $CONF_FC... $echo_c" 1>&3 

cat simd.h - > $test.F << _EOF_ 2> /dev/null 
#ifdef GENERIC 
#define SIMD2 0 
#define PROP "none" 
#elif defined __AVX__ 
#define SIMD2 2 
#define PROP "AVX" 
#elif defined __SSE3__ 
#define SIMD2 1 
#define PROP "SSE3" 
#else 
#define SIMD2 0 
#define PROP "none" 
#endif 

    program test 
    print *, PROP 
#if defined SIMD && SIMD == SIMD2 
#else 
    print *, SIMD2 
#endif 
    end 
_EOF_ 
eval ${LOGFILE:+cat $test.F 1>&2} 

$CONF_FC $CONF_FFLAGS ${CONF_ARCH:-${CONF_DEF}GENERIC} -o $test $test.F 1>&2 
set -- `./$test 2>&1` 
echo $1 1>&3 
case $2 in 
0|1|2) cat > simd.h << _EOF_ 
#if 0 
    vectorization ability of $CONF_FC on $HOSTNAME 
    determined by $0 on `date` 
#endif 

#define SIMD $2 

_EOF_ 
    ;; 
esac 


# check for the necessary libraries 

CONF_LIBS= 

LTLIB=libooptools${CONF_QUAD:+-quad}.a 

CONF_LT="`findlib LoopTools $LTLIB LoopTools $LT`" && { 
    CONF_INCPATH="${CONF_INCPATH:+$CONF_INCPATH:}\$(LT)/../include:\$(LT)" 
    CONF_LIBS="\$(LT)/$LTLIB" 
} 

CONF_NINJA="`findlib Ninja libninja.a ninja $NINJA`" && { 
    echo $echo_n "determining C++ library needed by Ninja... $echo_c" 1>&3 
    cat > $test.f << _EOF_ 
    program test 
    call ninjaformcalc 
    end 
_EOF_ 
    eval ${LOGFILE:+cat $test.f 1>&2} 
    LIBCPP=-lstdc++ 
    $CONF_FC $CONF_FFLAGS -o $test $test.f $CONF_NINJA/libninja.a $CONF_LT/$LTLIB \ 
    $LIBCPP $CONF_STDLIBS 1>&2 || LIBCPP=-lc++ 
    echo "$LIBCPP" 1>&3 
    CONF_LIBS="\$(NINJA)/libninja.a $LIBCPP${CONF_LIBS:+ $CONF_LIBS}" 
} 

CONF_SAMURAI="`findlib Samurai libsamurai.a samurai $SAMURAI`" && { 
    CONF_INCPATH="${CONF_INCPATH:+$CONF_INCPATH:}\$(SAMURAI)/../samurai:\$(SAMURAI)" 
    CONF_LIBS="\$(SAMURAI)/libsamurai.a \$(SAMURAI)/libqcdloop.a `\$(SAMURAI)/libavh_olo.a${CONF_LIBS:+ $CONF_LIBS}" 
} 

CONF_CT="`findlib CutTools libcts.a Cuttools $CT`" && { 
    CONF_INCPATH="${CONF_INCPATH:+$CONF_INCPATH:}\$(CT)" 
    CONF_LIBS="\$(CT)/libcts.a${CONF_LIBS:+ $CONF_LIBS}" 
} 

CONF_FH="`findlib FeynHiggs libFH.a FeynHiggs $FH`" && { 
    CONF_INCPATH="${CONF_INCPATH:+$CONF_INCPATH:}\$(FH)/../include:\$(FH)" 
    CONF_LIBS="\$(FH)/libFH.a${CONF_LIBS:+ $CONF_LIBS}" 
} 

CONF_LHAPDF="`findlib LHAPDF libLHAPDF.a lhapdf $LHAPDF`" && 
    CONF_LIBS="\$(LHAPDF)/libLHAPDF.a${CONF_LIBS:+ $CONF_LIBS}" 


echo "creating makefile" 1>&3 

cat - `dirname $0`/makefile.in > makefile << _EOF_ 
# --- variables defined by configure --- 

SRC = $CONF_SRC 
PREFIX = $CONF_PREFIX 
LIBDIRSUFFIX = $CONF_LIBDIRSUFFIX 

EXE = $CONF_EXE 
DEF = $CONF_DEF 

LT = $CONF_LT 
NINJA = $CONF_NINJA 
SAMURAI = $CONF_SAMURAI 
CT = $CONF_CT 
FH = $CONF_FH 
LHAPDF = $CONF_LHAPDF 
INCPATH = $CONF_INCPATH 
STDLIBS = $CONF_LIBS $CONF_STDLIBS 
LDFLAGS = $CONF_LDFLAGS 

FC = $CONF_FC 
FFLAGS = $CONF_FFLAGS \$(DEF)U77EXT=$CONF_U77EXT ${CONF_DEBUG:+\$(DEF)DEBUG} 

CC = $CONF_CC 
CFLAGS = $CONF_CFLAGS 

CXX = $CONF_CXX 
CXXFLAGS = $CONF_CXXFLAGS 

MCFLAGS = ${CONF_STATIC:+-st} ${CONF_STATIC_EXT:+-st} ${CONF_BITS:+-b$CONF_BITS} 
MCLIBS = $CONF_MCLIBS 

# --- end defs by configure --- 


_EOF_ 

if test "$CONF_MAKEARGS" = 0 ; then 
    cat << _EOF_ 1>&3 

now you must run $CONF_MAKE 

_EOF_ 
else 
    $CONF_MAKE $CONF_MAKEARGS 1>&3 2>&3 
fi 

exit 0 

運行make後,這些都是錯誤的:

gfortran -O3 -g -lLHAPDF -ffixed-line-length-none -march=native -ff2c -DU77EXT=0 -I. -I./F -I. -I. -I../../LoopTools/x86_64-Linux/lib64/../include -I../../LoopTools/x86_64-Linux/lib64 -I/usr/local/lib64/../include -I/usr/local/lib64 -Irenconst/ -DPREFIX= -o run run.F renconst.a squaredme.a util.a /usr/local/lib/libLHAPDF.a /usr/local/lib64/libFH.a ../../LoopTools/x86_64-Linux/lib64/libooptools.a 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `getprefixpath_': 
/home/vannia/Documents/lhapdf-5.9.1/src/getdatapath.cc:28: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `operator+<char, std::char_traits<char>, std::allocator<char> >': 
/usr/include/c++/4.8/bits/basic_string.h:2405: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::append(char const*)': 
/usr/include/c++/4.8/bits/basic_string.h:1009: undefined reference to `std::string::append(char const*, unsigned long)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::_Rep::_M_dispose(std::allocator<char> const&)': 
/usr/include/c++/4.8/bits/basic_string.h:240: undefined reference to `std::string::_Rep::_S_empty_rep_storage' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::assign(char const*)': 
/usr/include/c++/4.8/bits/basic_string.h:1131: undefined reference to `std::string::assign(char const*, unsigned long)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `~basic_string': 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::_Rep::_M_dispose(std::allocator<char> const&)': 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `getindexpath_': 
/home/vannia/Documents/lhapdf-5.9.1/src/getdatapath.cc:55: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' 
/home/vannia/Documents/lhapdf-5.9.1/src/getdatapath.cc:55: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::append(char const*)': 
/usr/include/c++/4.8/bits/basic_string.h:1009: undefined reference to `std::string::append(char const*, unsigned long)' 
/usr/include/c++/4.8/bits/basic_string.h:1009: undefined reference to `std::string::append(char const*, unsigned long)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::_Rep::_M_dispose(std::allocator<char> const&)': 
/usr/include/c++/4.8/bits/basic_string.h:240: undefined reference to `std::string::_Rep::_S_empty_rep_storage' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `~basic_string': 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::_Rep::_M_dispose(std::allocator<char> const&)': 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `~basic_string': 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `getdatapath_': 
/home/vannia/Documents/lhapdf-5.9.1/src/getdatapath.cc:77: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `operator+<char, std::char_traits<char>, std::allocator<char> >': 
/usr/include/c++/4.8/bits/basic_string.h:2405: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::append(char const*)': 
/usr/include/c++/4.8/bits/basic_string.h:1009: undefined reference to `std::string::append(char const*, unsigned long)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `operator+<char, std::char_traits<char>, std::allocator<char> >': 
/usr/include/c++/4.8/bits/basic_string.h:2405: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::append(char const*)': 
/usr/include/c++/4.8/bits/basic_string.h:1009: undefined reference to `std::string::append(char const*, unsigned long)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::_Rep::_M_dispose(std::allocator<char> const&)': 
/usr/include/c++/4.8/bits/basic_string.h:240: undefined reference to `std::string::_Rep::_S_empty_rep_storage' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `getdatapath_': 
/home/vannia/Documents/lhapdf-5.9.1/src/getdatapath.cc:82: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `operator+<char, std::char_traits<char>, std::allocator<char> >': 
/usr/include/c++/4.8/bits/basic_string.h:2405: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(std::string const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::append(char const*)': 
/usr/include/c++/4.8/bits/basic_string.h:1009: undefined reference to `std::string::append(char const*, unsigned long)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::operator=(std::string const&)': 
/usr/include/c++/4.8/bits/basic_string.h:547: undefined reference to `std::string::assign(std::string const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::_Rep::_M_dispose(std::allocator<char> const&)': 
/usr/include/c++/4.8/bits/basic_string.h:240: undefined reference to `std::string::_Rep::_S_empty_rep_storage' 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `~basic_string': 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::_Rep::_M_dispose(std::allocator<char> const&)': 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `operator+<char, std::char_traits<char>, std::allocator<char> >': 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:539: undefined reference to `std::string::_Rep::_M_dispose(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `std::string::_Rep::_M_dispose(std::allocator<char> const&)': 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(getdatapath.o): In function `__static_initialization_and_destruction_0': 
/usr/include/c++/4.8/iostream:74: undefined reference to `std::ios_base::Init::Init()' 
/usr/include/c++/4.8/iostream:74: undefined reference to `std::ios_base::Init::~Init()' 
/usr/local/lib/libLHAPDF.a(getdatapath.o):(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0' 
/usr/local/lib/libLHAPDF.a(version.o): In function `getlhapdfversion_': 
/home/vannia/Documents/lhapdf-5.9.1/src/version.cc:18: undefined reference to `std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(version.o): In function `std::string::_Rep::_M_dispose(std::allocator<char> const&)': 
/usr/include/c++/4.8/bits/basic_string.h:240: undefined reference to `std::string::_Rep::_S_empty_rep_storage' 
/usr/include/c++/4.8/bits/basic_string.h:249: undefined reference to `std::string::_Rep::_M_destroy(std::allocator<char> const&)' 
/usr/local/lib/libLHAPDF.a(commoninit.o): In function `commoninit_': 
commoninit.f:(.text+0x33): relocation truncated to fit: R_X86_64_PC32 against symbol `lhapdf_' defined in COMMON section in /usr/local/lib/libLHAPDF.a(commoninit.o) 
commoninit.f:(.text+0x1d1): relocation truncated to fit: R_X86_64_PC32 against symbol `lhaglsta_' defined in COMMON section in /usr/local/lib/libLHAPDF.a(commoninit.o) 
../../LoopTools/x86_64-Linux/lib64/libooptools.a(Aget.o): In function `ljacoeff_': 
/home/vannia/.Mathematica/Applications/HighEnergyPhysics/LoopTools-2.9/build/Aget.F:110:(.text+0x1e): relocation truncated to fit: R_X86_64_PC32 against symbol `ltvars_' defined in COMMON section in ../../LoopTools/x86_64-Linux/lib64/libooptools.a(Aget.o) 
/home/vannia/.Mathematica/Applications/HighEnergyPhysics/LoopTools-2.9/build/Aget.F:112:(.text+0x27): relocation truncated to fit: R_X86_64_PC32 against symbol `ltvars_' defined in COMMON section in ../../LoopTools/x86_64-Linux/lib64/libooptools.a(Aget.o) 
/home/vannia/.Mathematica/Applications/HighEnergyPhysics/LoopTools-2.9/build/Aget.F:112:(.text+0x30): relocation truncated to fit: R_X86_64_PC32 against symbol `ltvars_' defined in COMMON section in ../../LoopTools/x86_64-Linux/lib64/libooptools.a(Aget.o) 
/home/vannia/.Mathematica/Applications/HighEnergyPhysics/LoopTools-2.9/build/Aget.F:114:(.text+0x3c): relocation truncated to fit: R_X86_64_PC32 against symbol `ltvars_' defined in COMMON section in ../../LoopTools/x86_64-Linux/lib64/libooptools.a(Aget.o) 
/home/vannia/.Mathematica/Applications/HighEnergyPhysics/LoopTools-2.9/build/Aget.F:114:(.text+0x45): relocation truncated to fit: R_X86_64_PC32 against symbol `ltvars_' defined in COMMON section in ../../LoopTools/x86_64-Linux/lib64/libooptools.a(Aget.o) 
/home/vannia/.Mathematica/Applications/HighEnergyPhysics/LoopTools-2.9/build/Aget.F:114:(.text+0x4d): relocation truncated to fit: R_X86_64_PC32 against symbol `ltvars_' defined in COMMON section in ../../LoopTools/x86_64-Linux/lib64/libooptools.a(Aget.o) 
/home/vannia/.Mathematica/Applications/HighEnergyPhysics/LoopTools-2.9/build/Aget.F:120:(.text+0x84): relocation truncated to fit: R_X86_64_PC32 against symbol `ltvars_' defined in COMMON section in ../../LoopTools/x86_64-Linux/lib64/libooptools.a(Aget.o) 
/home/vannia/.Mathematica/Applications/HighEnergyPhysics/LoopTools-2.9/build/Aget.F:125:(.text+0xd3): relocation truncated to fit: R_X86_64_PC32 against symbol `ltregul_' defined in COMMON section in ../../LoopTools/x86_64-Linux/lib64/libooptools.a(Aget.o) 
/home/vannia/.Mathematica/Applications/HighEnergyPhysics/LoopTools-2.9/build/Aget.F:125:(.text+0xf0): additional relocation overflows omitted from the output 
collect2: error: ld returned 1 exit status 
make: *** [run] Error 1 
+1

你想添加'-lstdC++'到你的命令中,但是你的腳本太複雜了,以至於我找不到改變它的地方。 – 2014-11-05 20:28:01

+0

謝謝弗拉基米爾,我曾嘗試過,但我不知道該把它放在哪裏,這對我來說也很複雜。該配置文件是從另一個軟件自動創建的,開發人員建議將-lstdC++添加到ldflags以進行正確的鏈接。你知道我應該修改ldflags嗎?包括-lstdC++? – 2014-11-05 20:57:39

回答

0

把它在makefile在FFLAGS中

FC = gfortran 
FFLAGS = -O3 -g -ffixed-line-length-none -march=native -ff2c $(DEF)U77EXT=0 -lstdc++ 
+0

您可以使用代碼塊來嵌入您的代碼 – 2015-01-14 02:54:04

+0

謝謝羅保羅,請您詳細解釋一下嗎? – 2015-03-05 00:21:45