【问题标题】:FFTW linking issue in R 3.2.2 running on Mac OS X 10.10.5 Yosemite在 Mac OS X 10.10.5 Yosemite 上运行的 R 3.2.2 中的 FFTW 链接问题
【发布时间】:2015-12-16 05:03:45
【问题描述】:

我正在尝试解决应该在 R 3.2.2 中运行的包似乎对 fftw 的依赖。该软件包的作者声称此依赖项不再存在,但是当我尝试安装该软件包时,我收到以下输出

> install.packages("seewave")
Package which is only available in source form, and may need
 compilation of C/C++/Fortran: ‘seewave’
Do you want to attempt to install these from sources?
y/n: y
installing the source package ‘seewave’

trying URL 'https://cran.rstudio.com/src/contrib/seewave_2.0.2.tar.gz'
Content type 'application/x-gzip' length 2485930 bytes (2.4 MB)
==================================================
downloaded 2.4 MB

* installing *source* package ‘seewave’ ...
** package ‘seewave’ successfully unpacked and MD5 sums checked
** libs
clang -I/Library/Frameworks/R.framework/Resources/include -DNDEBUG
-I/usr/local/include -I/usr/local/include/freetype2 -I/opt/X11/include
-fPIC  -Wall -mtune=core2 -g -O2  -c stft.c -o stft.o 
stft.c:44:6: warning: unused variable 'i' [-Wunused-variable] 
       int i = 0; 
           ^ 
1 warning generated.
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 seewave.so stft.o -lfftw3 -lsndfile  
-F/Library/Frameworks/R.framework/.. -framework R -Wl,-framework -Wl,CoreFoundation
ld: library not found for -lfftw3
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [seewave.so] Error 1
ERROR: compilation failed for package ‘seewave’
* removing        /Library/Frameworks/R.framework/Versions/3.2/Resources/library/seewave’
Warning in install.packages :
installation of package ‘seewave’ had non-zero exit status

名为 fftw 的包已经在 R 中,版本为 1.0.3。但是,当我进入终端并键入以下命令时,我收到一个输出,指出 fftw 缺少“链接”

$ brew install fftw
Warning: fftw-3.3.4_1 already installed, it's just not linked

有趣(或愚蠢),在一个肯定不正确的路径中有一个 fftw3 文件夹,但没有 fftw3.3.4_1 的路径

/Users/mario/fftw-3.3.3

我怎样才能建立正确的链接并解决问题?

提前致谢

【问题讨论】:

  • @WhiteViking NO,sudo 永远不需要 brew link
  • @IKavanagh 您提供了一个很好且详细的答案。我删除了关于sudo brew link 的错误评论。谢谢指正。

标签: r osx-yosemite fftw


【解决方案1】:

由于/Users/mario/fftw-3.3.3 的存在以及 Homebrew 版本未链接的事实,您之前可能曾尝试从源代码安装 FFTW。如果您之前从源代码brew doctor 安装了 FFTW,则应该输出类似于

Warning: Unbrewed header files were found in /usr/local/include.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected header files:
    /usr/local/include/fftw3.h

注意: 正确安装应该有更多警告。

当您下载并解压 FFTW 时,生成的文件夹将具有名称 fftw-<major>.<minor>.<patch>。这很可能是/Users/mario/fftw-3.3.3。您应该可以使用

卸载此版本的 FFTW
$ cd /Users/mario/fftw-3.3.3
$ make uninstall
$ cd ..
$ rm -rf fftw-3.3.3/

注意:可能需要sudo,具体取决于您的安装方式。如果不存在makefile,则需要使用

创建它
$ ./configure
$ make uninstall

现在brew doctor 不应输出任何关于 FFTW 的信息,您可以安全地执行

$ brew link fftw

链接FFTW。如果在偶然情况下,这仍然不起作用,您可以使用

$ brew link --overwrite --dry-run fftw

由于--dry-run,这将告诉您 Homebrew 需要覆盖哪些文件才能正确链接 FFTW。

$ brew link --overwrite fftw

然后应该可以安全运行,因为 Homebrew 的设计目的是不会弄乱您的系统。现在应该解决安装 R 包时链接 FFTW 的问题,并且您的安装应该按预期进行。


一边

sudobrew link 一起使用是从不正确的选择。链接 Homebrew 公式的正确方法如上所述。

  1. 更正来自brew doctor 的任何警告
  2. 检查brew link --overwrite --dry-run 将覆盖的内容
  3. brew linkbrew link --overwrite 链接公式

【讨论】:

    猜你喜欢
    • 2023-03-18
    • 2015-11-28
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-14
    • 2016-02-24
    • 2015-09-04
    相关资源
    最近更新 更多