Основная цель - использовать DiffBind (пакет R) для анализа моих данных ChIPseq./usr/bin/ld: не удается найти -lgfortran при установке 'RcppArmadillo' в R
(я нашел another post, который может иметь отношение к моему вопросу, и попытался извлечь из него решения, но я предполагаю, что содержание было слишком «продвинутым» для меня ...)
В соответствии с предложением, что я might need to update my DiffBind Я попытался установить новую версию.
По проверке dependency of DiffBind Я полагаю, что предыдущая установка автоматически установила старую версию DiffBind, потому что мой R не соответствовал требованиям текущей версии DiffBind.
Но я использовал R под корневым каталогом, для которого я не мог много сделать. Поэтому я решил установить более новую версию R под моим собственным каталогом. и я managed to do that.
Затем я попытался установить текущую версию DiffBind, я получил ошибку
ERROR: compilation failed for package ‘RcppArmadillo’
Оказалось, что Lib зависимость «RcppArmadillo» требуют более уточненный компилятор, опять же, Я использовал компилятор gcc в корневом каталоге, поэтому я устанавливаю новую версию gcc в свой собственный каталог.
$ gcc --version
gcc (GCC) 6.1.0
Copyright (C) 2016 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.
$ which gcc
/$HOME/Programme/gcc-6.1.0/bin//gcc
После этого я попытался установить DiffBind (RcppArmadillo) еще раз, но встретил другую ошибку:
* installing *source* package ‘RcppArmadillo’ ...
** package 'RcppArmadillo' successfully unpacked and MD5 sums checked
checking whether the C++ compiler works... yes
checking for C++ compiler default output file name... a.out
checking for suffix of executables...
checking whether we are cross compiling... no
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking how to run the C++ preprocessor... g++ -E
checking whether we are using the GNU C++ compiler... (cached) yes
checking whether g++ accepts -g... (cached) yes
checking whether g++ version is sufficient... (6.1.0) yes
checking LAPACK_LIBS... fallback LAPACK from R 3.3.0 or later used
configure: creating ./config.status
config.status: creating inst/include/RcppArmadilloLapack.h
** libs
g++ -I/$HOME/Programme/R-3.3.1/lib64/R/include -DNDEBUG -I//$HOME/Programme/zlib-1.2.11/include -I//$HOME/Programme/bzip2-1.0.6/include -I//$HOME/Programme/xz-5.2.3/include -I//$HOME/Programme/pcre-8.40/include -I//$HOME/Programme/curl-7.52.1/include -I"/$HOME/Programme/R-3.3.1/lib64/R/library/Rcpp/include" -I../inst/include -fpic -g -O2 -c RcppArmadillo.cpp -o RcppArmadillo.o
g++ -I/$HOME/Programme/R-3.3.1/lib64/R/include -DNDEBUG -I//$HOME/Programme/zlib-1.2.11/include -I//$HOME/Programme/bzip2-1.0.6/include -I//$HOME/Programme/xz-5.2.3/include -I//$HOME/Programme/pcre-8.40/include -I//$HOME/Programme/curl-7.52.1/include -I"/$HOME/Programme/R-3.3.1/lib64/R/library/Rcpp/include" -I../inst/include -fpic -g -O2 -c RcppExports.cpp -o RcppExports.o
g++ -I/$HOME/Programme/R-3.3.1/lib64/R/include -DNDEBUG -I//$HOME/Programme/zlib-1.2.11/include -I//$HOME/Programme/bzip2-1.0.6/include -I//$HOME/Programme/xz-5.2.3/include -I//$HOME/Programme/pcre-8.40/include -I//$HOME/Programme/curl-7.52.1/include -I"/$HOME/Programme/R-3.3.1/lib64/R/library/Rcpp/include" -I../inst/include -fpic -g -O2 -c fastLm.cpp -o fastLm.o
g++ -shared -L/$HOME/Programme/R-3.3.1/lib64/R/lib -L//$HOME/Programme/zlib-1.2.11/lib -L//$HOME/Programme/bzip2-1.0.6/lib -L//$HOME/Programme/xz-5.2.3/lib -L//$HOME/Programme/pcre-8.40/lib -L//$HOME/Programme/curl-7.52.1/lib -o RcppArmadillo.so RcppArmadillo.o RcppExports.o fastLm.o -L/$HOME/Programme/R-3.3.1/lib64/R/lib -lRlapack -L/$HOME/Programme/R-3.3.1/lib64/R/lib -lRblas -lgfortran -lm -L/$HOME/Programme/R-3.3.1/lib64/R/lib -lR
/usr/bin/ld: cannot find -lgfortran
collect2: error: ld returned 1 exit status**
оказалось, что gfortran
не может быть найден. , но когда я проверил существование gfortran
она существует:
$ which gfortran
/usr/bin/gfortran
$ gfortran --version
GNU Fortran (GCC) 4.4.7 20120313 (Red Hat 4.4.7-17)
Copyright (C) 2010 Free Software Foundation, Inc.
GNU Fortran comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of GNU Fortran
under the terms of the GNU General Public License.
For more information about these matters, see the file named COPYING
Поэтому я предположил, что НКУ не мог найти gfortran, который находится в корневом каталоге. Как я могу решить проблему? Или может быть, что проблема несоответствия между gcc и gfortran - проблема? если это так, что можно сделать, чтобы обойти это?
Мой R Версия:
> sessionInfo()
R version 3.3.1 (2016-06-21)
Platform: x86_64-pc-linux-gnu (64-bit)
Running under: Red Hat Enterprise Linux Server release 6.7 (Santiago)
locale:
[1] LC_CTYPE=ja_JP.UTF-8 LC_NUMERIC=C
[3] LC_TIME=ja_JP.UTF-8 LC_COLLATE=ja_JP.UTF-8
[5] LC_MONETARY=ja_JP.UTF-8 LC_MESSAGES=ja_JP.UTF-8
[7] LC_PAPER=ja_JP.UTF-8 LC_NAME=C
[9] LC_ADDRESS=C LC_TELEPHONE=C
[11] LC_MEASUREMENT=ja_JP.UTF-8 LC_IDENTIFICATION=C
attached base packages:
[1] stats graphics grDevices utils datasets methods base
Ваш g ++ - версия 6.1, но gfortran очень старый 4.4. Это странно. Если вы установили новый GCC, вы должны установить его полностью, включая часть Fortran. –
@VladimirF. Привет, Владимир. Gfortran установлен в корневом каталоге, а gcc был установлен мной в моем собственном каталоге. Это может объяснить, почему версия g ++ и gfortran не совпадают.Ваш комментарий, казалось, подразумевал, что Fortran будет установлен автоматически, если будут установлены новые GCC. Поэтому, я думаю, я что-то испортил или пропустил некоторые варианты. У вас есть представление об этом? – Jun
Gfortran является частью пакета GCC. Это необязательная часть, но в этом случае вы действительно хотите, чтобы она была включена. Это зависит от способа установки GCC. –