Mac OS XR错误"ld:警告:找不到选项的目录"

bur*_*ger 13 macos gcc fortran r gfortran

我试图从源代码安装R包,但收到错误:

* installing *source* package ‘mclust’ ...
** package ‘mclust’ successfully unpacked and MD5 sums checked
** libs
gfortran-4.8   -fPIC  -g -O2  -c mclust.f -o mclust.o
gfortran-4.8   -fPIC  -g -O2  -c mclustaddson.f -o mclustaddson.o
clang -dynamiclib -Wl,-headerpad_max_install_names -undefined dynamic_lookup -single_module -multiply_defined suppress -L/Library/Frameworks/R.framework/Resources/lib -L/usr/local/lib -o mclust.so mclust.o mclustaddson.o -L/Library/Frameworks/R.framework/Resources/lib -lRlapack -L/Library/Frameworks/R.framework/Resources/lib -lRblas -L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2 -lgfortran -lquadmath -lm -L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2 -lgfortran -lquadmath -lm -F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
ld: warning: directory not found for option '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'
ld: warning: directory not found for option '-L/usr/local/lib/gcc/x86_64-apple-darwin13.0.0/4.8.2'
ld: library not found for -lquadmath
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mclust.so] Error 1
ERROR: compilation failed for package ‘mclust’
* removing ‘/Library/Frameworks/R.framework/Versions/3.3/Resources/library/mclust’
Warning in install.packages :
  installation of package ‘mclust’ had non-zero exit status
Run Code Online (Sandbox Code Playgroud)

我没有/usr/local/lib/gcc/x86_64-apple-darwin13.0.0,所以无法找到它是有意义的.我有/usr/local/lib/gcc/i686-apple-darwin11/usr/local/lib/gcc/4.8(符号链接到Homebrew安装).从哪里来的x86_64-apple-darwin13.0.0

网上有很多类似错误的引用.但是,所有这些都与在Xcode中编译有关,并通过更新项目设置来解决,这在这里不适用.

coa*_*ess 14

您需要修改该~/.R/Makevars文件.有关此内容的更多概述,请参阅:https://cran.r-project.org/doc/manuals/r-release/R-admin.html#OS-X-packages

或者,之前已经通过@cvin-ushey在Rcpp警告中更深入地回答了这个问题:"找不到选项'-L/usr/local/Cellar/gfortran/4.8.2/gfortran'的目录."

发生的事情是你的代码没有被运行gcc而是被转发到clang

您需要将编译语句更改~/.R/Makevars/gcc使用:

VER=-5.3.0 
CC=gcc$(VER)
CXX=g++$(VER)
CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
FLIBS=-L/usr/local/Cellar/gcc/5.3.0/lib/gcc/5
Run Code Online (Sandbox Code Playgroud)

假设您已经gcc通过homebrew 安装了:

brew install gcc
Run Code Online (Sandbox Code Playgroud)

(gfortran现在正在酿造gcc)

  • 需要设置隐式变量“CXX11”、“CXX14”和“CXX17”才能像“CXX”一样使用“g++$(VER)”。它们定义了每种语言标准应使用的编译器。例如,“CXX11”是 C++11 标准。 (2认同)
  • 为了今天在 GCC 10.2.0 上工作,我必须将第二行更改为“CC=gcc”。 (2认同)

use*_*993 11

我在 Mac 上工作时遇到这个问题很长时间了。根据本页上的其他答案和其他问题,我执行了以下操作,终于成功了!

步骤 1 - brew install gcc(它为我安装了 gcc-11。如果将来这对您来说有所不同,请将下面的 gcc-11 替换为相应的版本。您可以通过检查文件夹并在其中查看/usr/local/bin最新的 gcc 版本文件来找到版本)

步骤 2 - xcode-select --install(这将安装 Xcode CLI)

步骤 3 - (这ln -sf /usr/local/bin/gcc-11 /usr/local/bin/gcc在 /usr/local/bin/.Source 下创建一个新的 gcc 符号链接)

第 4 步- 我没有~/.R/Makevars文件。哎呀,我连文件夹都没有~./R。制作了文件夹和文件。这是我在 Makevars 文件中编写的内容(请记住根据您拥有的版本更改第一行和最后一行中的 GCC 版本。还要记住不要在第一行中包含最后一行中的完整版本号。只需总体版本号 - 在我的例子中是 11) -

VER=-11
CC=gcc$(VER)
CXX=g++$(VER)
CXX11=g++$(VER)
CXX14=g++$(VER)
CXX17=g++$(VER)
CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
FLIBS=-L/usr/local/Cellar/gcc/11.2.0_3/lib/gcc/11
Run Code Online (Sandbox Code Playgroud)

现在重新启动,瞧!有用。


Jim*_*Jim 9

http://thecoatlessprofessor.com/programming/rcpp-rcpparmadillo-and-os-x-mavericks-lgfortran-and-lquadmath-error/您可以通过从http://r.research下载可选的gfortran库来解决此问题. att.com/libs/并提取它们.要在命令行上执行此操作

curl -O http://r.research.att.com/libs/gfortran-4.8.2-darwin13.tar.bz2
sudo tar fvxz gfortran-4.8.2-darwin13.tar.bz2 -C /
Run Code Online (Sandbox Code Playgroud)

  • 当我输入第二行时,我得到``tar:无法识别的存档格式``。我究竟做错了什么? (4认同)

hen*_*esu 6

我正在 MacOS Mojave (10.14.5) 和 R 4.0.0 上工作。这里的问题是“CRAN R 4.0.0 版本及更高版本不再使用任何自定义编译器”(请参阅​​此处),因此该Makevars解决方案似乎不再起作用。

我的解决方案是从官方R-Project 网站下载并安装 GNU Fortran 编译器。请注意,您还需要 Xcode 和 Xcode 命令行工具。

使用默认设置运行安装程序后,gfortran 代码的编译工作没有问题。


Meg*_*ron 5

将先前的解决方案与注释中的其他帮助结合在一起,以下解决方案在Mac OS X High Sierra上对我有用。

~/.R/Makevars使用以下内容创建/编辑:

VER=-8
CC=gcc$(VER)
CXX=g++$(VER)
CXX11=g++$(VER)
CXX14=g++$(VER)
CXX17=g++$(VER)
CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
FLIBS=-L/usr/local/Cellar/gcc/8.2.0/lib/gcc/8
Run Code Online (Sandbox Code Playgroud)

注意,我正在使用自制软件,并已安装gcc版本8.2.0。


Gio*_*tti 5

对于 R 4.3.0 及更高版本,您可以通过访问https://mac.r-project.org/tools/并安装 gfortran-12.2 通用来解决此问题:

R 4.3.0 及更高版本使用通用 GNU Fortran 12.2 编译器。您可以下载安装程序包 gfortran-12.2-universal.pkg (242MB) - 有关更多详细信息和其他下载选项,请参阅 GitHub 上的 R-macos GNU Fortran 版本。