【问题标题】:Fatal error: auc_.cpp:2:10: fatal error: omp.h: No such file or directory致命错误:auc_.cpp:2:10:致命错误:omp.h:没有这样的文件或目录
【发布时间】:2019-09-01 07:33:15
【问题描述】:

我在 AWS 上的 Linux 机器上运行 RServer Studio。

我尝试安装 ModelMetrics,这是 caret 的依赖项,但收到此错误:

auc_.cpp:2:10: fatal error: omp.h: No such file or directory
 #include <omp.h>
          ^~~~~~~
compilation terminated.
make: *** [auc_.o] Error 1
ERROR: compilation failed for package ‘ModelMetrics’

这是完整的输出消息

Installing package into ‘/home/User/R/x86_64-pc-linux-gnu-library/3.5’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/src/contrib/ModelMetrics_1.2.2.tar.gz'
Content type 'application/x-gzip' length 16974 bytes (16 KB)
==================================================
downloaded 16 KB

* installing *source* package ‘ModelMetrics’ ...
** package ‘ModelMetrics’ successfully unpacked and MD5 sums checked
** libs
g++  -I"/opt/R/3.5.3/lib64/R/include" -DNDEBUG  -I"/home/User/R/x86_64-pc-linux-gnu-library/3.5/Rcpp/include" -I/usr/local/include   -fpic  -g -O2  -c RcppExports.cpp -o RcppExports.o
g++  -I"/opt/R/3.5.3/lib64/R/include" -DNDEBUG  -I"/home/User/R/x86_64-pc-linux-gnu-library/3.5/Rcpp/include" -I/usr/local/include   -fpic  -g -O2  -c auc_.cpp -o auc_.o
auc_.cpp:2:10: fatal error: omp.h: No such file or directory
 #include <omp.h>
          ^~~~~~~
compilation terminated.
make: *** [auc_.o] Error 1
ERROR: compilation failed for package ‘ModelMetrics’
* removing ‘/home/User/R/x86_64-pc-linux-gnu-library/3.5/ModelMetrics’
Warning in install.packages :
  installation of package ‘ModelMetrics’ had non-zero exit status

The downloaded source packages are in
    ‘/tmp/Rtmpr06k8i/downloaded_packages’

我环顾四周,似乎编译器有错误。我尝试了here 列出的解决方案,特别是我运行了这些命令

yum groupinstall 'Development Tools'
mkdir ~/.R
echo "CC=gcc64" >> ~/.R/Makevars
sudo sed -i 's/CC = gcc -m64/CC = gcc64 -m64/g' /usr/lib64/R/etc/Makeconf

即使在重新启动 RStudio Server 后,我也会得到相同的输出和错误消息。

看起来此错误与problem here 非常相似。遵循这些说明后我仍然没有解决方案,但我确实找到了我的 omp.h 文件的位置。

/usr/lib/gcc/x86_64-amazon-linux/4.4.6/include/omp.h
/usr/lib/gcc/x86_64-amazon-linux/4.8.5/include/omp.h
/usr/lib/gcc/x86_64-amazon-linux/6.4.1/include/omp.h

我安装了Developer Tools 并使用这些命令更新了Makeconf 文件。

sudo sed -i 's/CC = gcc -m64/CC = gcc64 -m64/g' /usr/lib64/R/etc/Makeconf
sudo yum groupinstall 'Development Tools'

然后,我将这些行添加到 Makevars 配置文件中。

mkdir ~/.R
vi ~/.R/Makevars

CC=gcc
VER=64
CC=gcc$(VER)
CXX=g++$(VER)
CXX11=g++$(VER)
CXX14=g++$(VER)

我重启了RStudio Server,尝试安装ModelMetrics,还是收到了这个错误,和之前一样。

Installing package into ‘/home/User/R/x86_64-pc-linux-gnu-library/3.5’
(as ‘lib’ is unspecified)
trying URL 'https://cran.rstudio.com/src/contrib/ModelMetrics_1.2.2.tar.gz'
Content type 'application/x-gzip' length 16974 bytes (16 KB)
==================================================
downloaded 16 KB

* installing *source* package ‘ModelMetrics’ ...
** package ‘ModelMetrics’ successfully unpacked and MD5 sums checked
** libs
g++  -I"/opt/R/3.5.3/lib64/R/include" -DNDEBUG  -I"/home/User/R/x86_64-pc-linux-gnu-library/3.5/Rcpp/include" -I/usr/local/include   -fpic  -g -O2  -c RcppExports.cpp -o RcppExports.o
g++  -I"/opt/R/3.5.3/lib64/R/include" -DNDEBUG  -I"/home/User/R/x86_64-pc-linux-gnu-library/3.5/Rcpp/include" -I/usr/local/include   -fpic  -g -O2  -c auc_.cpp -o auc_.o
auc_.cpp:2:10: fatal error: omp.h: No such file or directory
 #include <omp.h>
          ^~~~~~~
compilation terminated.
make: *** [auc_.o] Error 1
ERROR: compilation failed for package ‘ModelMetrics’
* removing ‘/home/User/R/x86_64-pc-linux-gnu-library/3.5/ModelMetrics’
Warning in install.packages :
  installation of package ‘ModelMetrics’ had non-zero exit status

The downloaded source packages are in
    ‘/tmp/RtmpTSUlz4/downloaded_packages’

【问题讨论】:

  • 你的 gcc --version 是什么?
  • 我启动了一台全新的linux机器,得到gcc (GCC) 7.2.1 20170915 (Red Hat 7.2.1-2)
  • 请注意,您找到的 omp.h 文件都不是 gcc 7.2.1 版。
  • 新的错误日志显示仍然使用g++而不是g++64R CMD config CXX 的输出是什么?
  • 输出是g++64

标签: c++ r amazon-web-services compiler-errors


【解决方案1】:

您已将 R 配置为在编译 C 文件时使用 gcc64,但 C++ 文件仍将使用 g++ 而不是 g++64 编译。 ~/.R/Makevars 中的以下配置将持续更改:

VER=64
CC=gcc$(VER)
CXX=g++$(VER)
CXX11=g++$(VER)
CXX14=g++$(VER)

由于上述对您不起作用,您可能会受到与此用户相同的问题的影响:https://stackoverflow.com/a/49876044/8416610 在这种情况下,您可以编辑 R 的 Makeconf 文件

sudo sed -i 's/g++/g++64/' $(R RHOME)/etc/Makeconf

(假设您已经将 gcc 更改为 gcc64

【讨论】:

  • 我不确定如何制作配置文件。我只是复制并粘贴这些命令吗?
  • 我添加了这个,我还安装了开发工具并运行了sudo sed -i 's/CC = gcc -m64/CC = gcc64 -m64/g' /usr/lib64/R/etc/Makeconf,但我得到了同样的错误
  • @Cauder 请在此更改后发布完整的错误输出。
  • 我会这样做的。谢谢拉尔夫。
  • 知道了!这两行修复了它sudo yum remove gcc72-c++.x86_64 libgcc72.x86_64 sudo yum groupinstall 'Development Tools'
【解决方案2】:

原来是linux盒子上gcc的版本有问题。

按照here 的说明,我能够用这两行代码解决问题。

sudo yum remove gcc72-c++.x86_64 libgcc72.x86_64
sudo yum groupinstall 'Development Tools'

【讨论】:

    猜你喜欢
    • 2014-07-02
    • 2017-05-09
    • 2021-05-15
    • 2014-10-31
    • 2022-01-11
    • 2021-09-19
    • 2016-06-23
    相关资源
    最近更新 更多