【问题标题】:Error in linking fftw libraries for pyFFTW installation为 pyFFTW 安装链接 fftw 库时出错
【发布时间】:2014-07-28 17:37:50
【问题描述】:

我尝试将 pyFFTW 0.9.2 安装到 OSX 小牛,但遇到以下错误:

/usr/bin/clang -bundle -undefined dynamic_lookup
-L//anaconda/lib -arch x86_64 -arch x86_64 
build/temp.macosx-10.5-x86_64-2.7/anaconda/lib/python2.7/site-packages/pyFFTW-master/pyfftw/pyfftw.o 
-L//anaconda/lib -lfftw3 -lfftw3f -lfftw3l -lfftw3_threads -lfftw3f_threads -lfftw3l_threads 
-o build/lib.macosx-10.5-x86_64-2.7/pyfftw/pyfftw.so

ld: library not found for -lfftw3

clang: error: linker command failed with exit code 1 (use -v to see invocation)

pyFFTW installation -> cannot find -lfftw3_threads所说,我尝试编译安装fftw 3.3.4 3次。但这对我不起作用。

我的做法是:

./configure --enable-float --enable-share  => make => make install
./configure --enable-long-double --enable-share  => make => make install
./configure --enable-threads --enable-share  => make => make install

然后我在 pyFFTW 文件夹中运行 python (2.7) 安装文件,我得到了上面的错误。

感谢您的帮助。

【问题讨论】:

    标签: python-2.7 installation pyfftw


    【解决方案1】:

    我在 OSX 10.9.4 Maverick 上遇到了同样的问题。 试试这个: 下载 FFTW 3.3.4,然后打开终端窗口并进入解压的 FFTW 目录并运行以下命令:

    $ ./configure --enable-long-double --enable-threads
    $ make
    $ sudo make install
    $ ./configure --enable-float --enable-threads
    $ make
    $ sudo make install
    

    比建议使用 pip 安装 pyFFTW:

    $ sudo pip install pyfftw
    

    【讨论】:

    • 非常感谢,@teoreda
    【解决方案2】:

    我正在使用通过conda 安装的 MacOX 10.11.4 和 Python 3.5.1,上述答案对我不起作用。

    我仍然会收到此错误:

    ld: library not found for -lfftw3l
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    error: command 'gcc' failed with exit status 1
    
    ----------------------------------------
    Failed building wheel for pyfftw
    

    或:

    ld: library not found for -lfftw3l_threads
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    error: command 'gcc' failed with exit status 1
    
    ----------------------------------------
    Failed building wheel for pyfftw
    

    对我有用的与我发现的 here 略有不同:

    先安装long-double库

    comp:fftw-3.3.4 user$ ./configure --enable-threads --enable-shared --disable-fortran --enable-long-double CFLAGS="-O3 -fno-common -fomit-frame-pointer -fstrict-aliasing"
    comp:fftw-3.3.4 user$ make
    comp:fftw-3.3.4 user$ sudo make install
    

    然后安装float和double库

    comp:fftw-3.3.4 user$ ./configure --enable-threads --enable-shared --disable-fortran --enable-sse2 --enable-float CFLAGS="-O3 -fno-common -fomit-frame-pointer -fstrict-aliasing"
    comp:fftw-3.3.4 user$ make
    comp:fftw-3.3.4 user$ sudo make install
    comp:fftw-3.3.4 user$ ./configure --enable-threads --enable-shared --disable-fortran --enable-sse2 CFLAGS="-O3 -fno-common -fomit-frame-pointer -fstrict-aliasing"
    comp:fftw-3.3.4 user$ make
    comp:fftw-3.3.4 user$ sudo make install
    

    然后安装pyfftw

    comp:fftw-3.3.4 user$ sudo -H  pip install pyfftw
    

    我不认为--disable-fortran--enable-sse2 标志是必需的,我不确定sudo 对于pip 是否必要,但这对我有用。

    请注意,完成后,您的 /usr/local/lib 文件夹应包含以下文件:

    libfftw3.3.dylib
    libfftw3.a
    libfftw3.dylib
    libfftw3.la
    libfftw3_threads.3.dylib
    libfftw3_threads.a
    libfftw3_threads.dylib
    libfftw3_threads.la
    libfftw3f.3.dylib
    libfftw3f.a
    libfftw3f.dylib
    libfftw3f.la
    libfftw3f_threads.3.dylib
    libfftw3f_threads.a
    libfftw3f_threads.dylib
    libfftw3f_threads.la
    libfftw3l.3.dylib
    libfftw3l.a
    libfftw3l.dylib
    libfftw3l.la
    libfftw3l_threads.3.dylib
    libfftw3l_threads.a
    libfftw3l_threads.dylib
    libfftw3l_threads.la
    

    【讨论】:

      猜你喜欢
      • 2012-08-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多