приложение потребовало libstdc ++ для библиотеки GLIBCXX_3_4_9 по системе RHEL 5 64 битов

Используйте двойные кавычки вместо одиночных кавычек.

sed -i "${line_no}..."

См. В Переполнение стека: разница между одиночными и двойными цитатами в Bash

0
22.09.2014, 08:26
3 ответа

Следующий сценарий сделал все это. Он не только загрузил и скомпилировал пакет GCC4.4, но также загрузил и скомпилировал необходимые зависимости. Вам может понадобиться установить #yum install zsh перед запуском этого скрипта, так как этот скрипт работает под zsh shell. Спасибо Саймону Хеймлихеру (Simon Heimlicher) за то, что он сделал этот скрипт доступным на своем блоге.

    #!/usr/bin/env zsh
    # Download and compile GCC 4.4

    set -ue

    # Set minimal PATH to make sure we compile with the system compiler
    export PATH=/usr/sbin:/usr/bin:/sbin:/bin
    # Use bash as the shell for everything GNU
    export CONFIG_SHELL=/bin/bash

    # Set to true for verbose output
    VERBOSE=${VERBOSE:=false}

    out () { printf "\n%b\n\n" "$@" >&2 }
    fail () { printf "\n%b\n\n" " $@ " >&2; exit 1 }

    DSTROOT=${DSTROOT:=$HOME/local}
    PKGROOT=${PKGROOT:=$DSTROOT/pkg}
    SCRATCH=${SCRATCH:-$HOME/scratch}
    SRCDIR=${SRCDIR:=$SCRATCH/gcc/src}
    BUILDDIR=${BUILDDIR:=$SCRATCH/gcc/build}

    GCC_URL=http://mirror.switch.ch/ftp/mirror/gnu/gcc/gcc-4.4.7/gcc-4.4.7.tar.bz2

    GCC_PREREQUISITE_URLS=(
    ftp://gcc.gnu.org/pub/gcc/infrastructure/gmp-4.3.2.tar.bz2
    ftp://gcc.gnu.org/pub/gcc/infrastructure/mpfr-2.4.2.tar.bz2
    ftp://gcc.gnu.org/pub/gcc/infrastructure/mpc-0.8.1.tar.gz
    http://www.mr511.de/software/libelf-0.8.13.tar.gz
    )

    out "DSTROOT='$DSTROOT'
    PKGROOT='$PKGROOT'
    SRCDIR='$SRCDIR'
    BUILDDIR='$BUILDDIR'"

    runcmd() {
     RUN_RET=0
     RUN_CWD='.'
     RUN_FORCE=false
     o_cwd=''; o_force=''
     zparseopts -D -K -- c:=o_cwd f=o_force -cwd:=o_cwd -force=o_force
     if [[ $# -eq 0 ]]; then
         print "Usage: runcmd [-f] <command line to run>" >&2
         return 1
     fi
     if [[ -n $o_cwd ]]; then RUN_CWD=$o_cwd[2]; fi
     if [[ -n $o_force ]]; then RUN_FORCE=true; fi
     cmdline=$@
     if $VERBOSE; then
         print "Running\n    ${(@)cmdline}\nRUN_FORCE=$RUN_FORCE RUN_CWD=$RUN_CWD" >&2
     fi
     ( set +ue; cd $RUN_CWD && print ${(@)cmdline} | $CONFIG_SHELL -sue; )
     RUN_RET=$?
     if [[ $RUN_RET -ne 0 ]]; then
         if $RUN_FORCE; then
             print "\n### $cmdline\nexit $RUN_RET in CWD=$RUN_CWD\n" >&2
         else
             print "\n\n### $cmdline\nexit $RUN_RET in CWD=$RUN_CWD\nAbort." >&2
             exit $RUN_RET
         fi
     fi
     return $RUN_RET
    }

    prepare_pkg () {
     local srcdir=$1
     local url=$2
     local pkgvers=${${url##*/}%.(tar*|zip)}
     local pkg=${pkgvers%-*}
     local vers=${pkgvers#*-}
     local suffix=${${url##*/}##*.}
     out "Fetching $pkgvers from $url"
     case $suffix in
         gz)
         runcmd -c $srcdir curl -L $url \| tar xz
         ;;
         bz2|tbz)
         runcmd -c $srcdir curl -L $url \| tar xj
         ;;
         zip)
         runcmd -c $srcdir curl -L $url \| funzip
         ;;
         *)
         fail "Unknown archive format: $url"
         ;;
     esac
     if [[ ! -d $srcdir/$pkgvers ]]; then
         fail "Extraction of download from $url failed"
     fi
     runcmd -c $srcdir ln -sf $pkgvers $pkg
    }

    if $VERBOSE; then
     printf "Using system compiler: '%s'" $(which gcc)
     gcc --version
    fi

    out "Making directories \n$DSTROOT\n$PKGROOT\n$SRCDIR\n$BUILDDIR"

    runcmd mkdir -p $DSTROOT $PKGROOT $SRCDIR $BUILDDIR

    GCC_PKG=${${GCC_URL##*/}%.(tar*|zip)}
    GCC_SRC=$SRCDIR/$GCC_PKG
    GCC_PREFIX=$PKGROOT/$GCC_PKG
    GCC_BUILD=$BUILDDIR/$GCC_PKG-build

    if [[ -d $GCC_SRC ]]; then
     out "Using GCC downloaded at $GCC_SRC"
    else
     out "Downloading GCC"
     prepare_pkg $SRCDIR $GCC_URL
    fi

    out "Downloading prerequisites"
    for pkg ($GCC_PREREQUISITE_URLS); do
     prepare_pkg $GCC_SRC $pkg
    done

    if [[ -d $GCC_BUILD ]]; then
     out "Running 'make distclean' in $GCC_BUILD"
     runcmd -c $GCC_BUILD -f make distclean
    else
     out "Making GCC build directory $GCC_BUILD"
     runcmd mkdir -p $GCC_BUILD
    fi

    out "Configuring GCC"
    runcmd -c $GCC_BUILD $GCC_SRC/configure --prefix=$GCC_PREFIX \
    --enable-languages=c,c++,fortran \
    --enable-threads=posix \
    --enable-tls \
    --enable-libgomp \
    --enable-lto \
    --enable-shared \
    --enable-static \
    --disable-nls \
    --disable-multilib \
    --with-fpmath=sse

    out "Compiling GCC"
    runcmd -c $GCC_BUILD make -j 8 all

    out "Installing GCC"
    runcmd -c $GCC_BUILD make -j 8 install

    if which stow &>/dev/null; then
     out "Using 'stow' to symlink GCC from $GCC_PKG"
     runcmd -c $PKGROOT stow $GCC_PKG
    else
     out "Package manager 'stow' not found. GCC is installed in $GCC_PREFIX"
    fi

    print "All done"
0
28.01.2020, 05:06

При установке g++ с помощью yum, сам решает проблемы зависимостей.

Итак, попробуйте:

yum search g++

затем найдите pacjage из g++, Когда вы хотите установить его, установите его depenecies. Одним из его depenecies является libstdc++

-1
28.01.2020, 05:06

RHEL6

root@ibxsv-asnis1 ~]# rpm -q --provides libstdc++
libstdc++ = 4.4.4-15.el6
libstdc++.so.6()(64bit)
libstdc++.so.6(CXXABI_1.3)(64bit)
libstdc++.so.6(CXXABI_1.3.1)(64bit)
libstdc++.so.6(CXXABI_1.3.2)(64bit)
libstdc++.so.6(CXXABI_1.3.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.1)(64bit)
libstdc++.so.6(GLIBCXX_3.4.10)(64bit)
libstdc++.so.6(GLIBCXX_3.4.11)(64bit)
libstdc++.so.6(GLIBCXX_3.4.12)(64bit)
libstdc++.so.6(GLIBCXX_3.4.13)(64bit)
libstdc++.so.6(GLIBCXX_3.4.2)(64bit)
libstdc++.so.6(GLIBCXX_3.4.3)(64bit)
libstdc++.so.6(GLIBCXX_3.4.4)(64bit)
libstdc++.so.6(GLIBCXX_3.4.5)(64bit)
libstdc++.so.6(GLIBCXX_3.4.6)(64bit)
libstdc++.so.6(GLIBCXX_3.4.7)(64bit)
libstdc++.so.6(GLIBCXX_3.4.8)(64bit)
libstdc++.so.6(GLIBCXX_3.4.9)(64bit)
libstdc++ = 4.4.7-4.el6
libstdc++(x86-64) = 4.4.7-4.el6
[root@ibxsv-asnis1 ~]# rpm -q libstdc++
libstdc++-4.4.7-4.el6.x86_64
0
28.01.2020, 05:06

Теги

Похожие вопросы