Поскольку у меня нет привилегий использовать инструмент управления пакетами в нашем кластере, я пытаюсь локально собрать R-3.5.0 на CentOS 6.5 из исходного кода. У нас установлена старая версия R для всех пользователей, но для программного обеспечения, которое я использую, требуется более новая версия. Кроме того, компилятор gcc, установленный глобально, слишком стар, чтобы настроить R-3.5.0, поэтому я установил новую версию.
Информация об ОС:
$lsb_release -a
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
Distributor ID: CentOS
Description: CentOS release 6.5 (Final)
Release: 6.5
Codename: Final
информация о gcc:
$gcc -v
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/home/me/GCC-8.2.0/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /dir/path/me/software/objdir/../gcc-8.2.0/configure --prefix=/home/me/GCC-8.2.0 --enable-languages=c,c++,fortran,go --disable-multilib
Thread model: posix
gcc version 8.2.0 (GCC)
Команда для настройки R:
./configure --prefix=$HOME/local --with-cairo --with-blas --with-lapack --enable-R-shlib --with-x=no LDFLAGS="-lcurl -L/$HOME/local/zlib-1.2.11/lib -L/$HOME/local/bzip2-1.0.6/lib -L/$HOME/local/xz-5.2.3/lib -L/$HOME/local/pcre-8.41/lib -L/$HOME/local/curl-7.61.0/lib -L/$HOME/local/ssl/lib -L/$HOME/local/texinfo-6.5/lib -L/$HOME/local/texi2html-5.0/lib -L/$HOME/GCC-8.2.0/lib" CPPFLAGS="-I/$HOME/local/zlib-1.2.11/include -I/$HOME/local/bzip2-1.0.6/lib -I/$HOME/local/xz-5.2.3/lib -I/$HOME/local/pcre-8.41/include -I/$HOME/local/curl-7.61.0/include -I/$HOME/local/ssl/include -I/$HOME/local/texinfo-6.5/include -I/$HOME/local/texi2html-5.0/lib/include -I/$HOME/GCC-8.2.0/lib/include"
Результирующая ошибка:
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in `/dir/path/me/software/R-3.5.0':
configure: error: C compiler cannot create executables
See `config.log' for more details
config.log:
configure:6158: gcc --version >&5
gcc (GCC) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
configure:6169: $? = 0
configure:6158: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/home/me/GCC-8.2.0/libexec/gcc/x86_64-pc-linux-gnu/8.2.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /helga/cluster/me/software/objdir/../gcc-8.2.0/configure --prefix=/home/me/GCC-8.2.0 --enable-languages=c,c++,fortran,go --disable-multilib
Thread model: posix
gcc version 8.2.0 (GCC)
configure:6169: $? = 0
configure:6189: checking whether the C compiler works
configure:6211: gcc -I//home/me/local/zlib-1.2.11/include -I//home/me/local/bzip2-1.0.6/lib -I//home/me/local/xz-5.2.3/lib -I//home/me/local/pcre-8.41/include -I//home/me/local/curl-7.6$
/usr/bin/ld: crtbegin.o: No such file: No such file or directory
collect2: error: ld returned 1 exit status
configure:6215: $? = 1
configure:6253: result: no
Я понимаю, что проблема в том, что crtbegin.o
не найден в /usr/bin/ld
, но я подумал, что ld
связан с gcc
. Нужно ли устанавливать ld
отдельно от gcc
или я просто неправильно настроил gcc
? Я полагаю, что я запутался в отношениях между ними и о том, как наилучшим образом устранить ошибку.