找不到-l <library> R.

时间:2017-12-05 23:19:53

标签: r linux ubuntu linux-kernel ubuntu-16.04

使用Linux Mint 18.3(Ubuntu 16.04)

我在Anaconda环境中使用R studio 1.1.383和R 3.4.2,并且在尝试安装许多不同的库时,我得到的似乎是编译器错误。

例如,当尝试安装“lmtest”(“tidyquant”的依赖项,它在我的Windows机器上毫不费力地安装)时,我收到以下错误。由于tidyquant有很多依赖项,我想为您提供多条错误消息。

install.packages('lmtest')
trying URL 'https://cran.rstudio.com/src/contrib/lmtest_0.9-35.tar.gz'
Content type 'application/x-gzip' length 183575 bytes (179 KB)
==================================================
downloaded 179 KB

installing *source* package ‘lmtest’ ...
package ‘lmtest’ successfully unpacked and MD5 sums checked
libs

/home/mikejames/anaconda3/bin/x86_64-conda_cos6-linux-gnu-gfortran   -fpic  -fopenmp -march=nocona -mtune=haswell -ftree-vectorize -fPIC -fstack-protector-strong -fno-plt -O2 -pipe -I/home/mikejames/anaconda3/include -L/home/mikejames/anaconda3/lib  -c pan.f -o pan.o

/home/mikejames/anaconda3/bin/x86_64-conda_cos6-linux-gnu-cc -shared -L/home/mikejames/anaconda3/lib/R/lib -Wl,-O2,--sort-common,--as-needed,-z,relro,-z,now -L/home/mikejames/anaconda3/lib -o lmtest.so pan.o -lgfortran -lm -lgomp -lquadmath -lpthread -L/home/mikejames/anaconda3/lib/R/lib -lR

/home/mikejames/anaconda3/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.2.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lgomp

/home/mikejames/anaconda3/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.2.0/../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lquadmath

/home/mikejames/anaconda3/lib/R/share/make/shlib.mk:6: recipe for target 'lmtest.so' failed

make: *** [lmtest.so] Error 1

ERROR: compilation failed for package ‘lmtest’
* removing ‘/home/mikejames/anaconda3/lib/R/library/lmtest’
Warning in install.packages :
  installation of package ‘lmtest’ had non-zero exit status

The downloaded source packages are in
    ‘/tmp/RtmpBzLASQ/downloaded_packages’
Updating HTML index of packages in '.Library'
Making 'packages.html' ... done

我所有错误消息中的常见错误消息似乎是:找不到-lgomp和-lquadmath

/home/mikejames/anaconda3/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.2.0    /../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lgomp
/home/mikejames/anaconda3/bin/../lib/gcc/x86_64-conda_cos6-linux-gnu/7.2.0    /../../../../x86_64-conda_cos6-linux-gnu/bin/ld: cannot find -lquadmath

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

不幸的是,例如,如果您正在使用像QIIME2这样的大型管道,它们在Python和R中都具有非常大的特定依赖性,则可能需要使用R的anaconda / miniconda。这个问题已经很老了,但是仍然出现在搜索结果中,因此我认为,当我不得不在这些限制下工作时,提供一些对我有用的东西会很有用:

  1. 尝试通过conda install安装软件包,而不要使用install.packages。 conda文档建议您使用conda search -f r-[pkgname]查找候选安装。 r频道可能特别有用。这可能是最简单的方法,但如果要安装的软件包很多,并且在依赖它们的地方有很多错误,则可能涉及一些乏味的“打扰人”。
  2. 查看您遇到的编译错误,然后确保通过conda实际安装了必要的库。 “找不到-lgomp”表明需要安装OpenMP。您可以使用conda install -c conda-forge libgomp来做到这一点。
  3. 如果第2步仍然不起作用,则ld可能会在错误的位置找到您的库(即使应该从conda环境中获取LDFLAGS)。 libgomp发生在我身上。受this question's answers的启发,我尝试在环境的lib文件夹ln -s ~/miniconda3/lib/libgomp.so ~/miniconda3/envs/qiime2-2020.6/x86_64-conda-linux-gnu/lib/中手动创建软链接。这样就可以了,并且该软件包可以通过install.packages()正常安装。

我想您也可以尝试将-L [/your/home/directory]/miniconda3/lib添加到LDFLAGS环境变量中,而不是第3步,这可能更优雅,但您每次启动环境时都必须找到一种方法。由于我目前有一个可行的解决方案,因此我不会对此做进一步的探讨。

希望这些答案有所帮助。