C语言 使用MinGW 64位在非unix系统上安装FFTW库

7jmck4yq  于 2023-08-03  发布在  Unix
关注(0)|答案(3)|浏览(233)

在Windows上安装FFTW库时遇到问题。我正在遵循以下链接中的说明:
http://www.fftw.org/fftw3_doc/Installation-on-non_002dUnix-systems.html#Installation-on-non_002dUnix-systems
1)下载minGW 64位后,我想知道如何访问“kernel”和“simd-support”目录来编译推荐的c文件。
2)由于我不熟悉这个库,有没有更好的方法使用命令行安装库?
正如这个链接中所写的,在副标题“在minGW下构建FFTW 3”下:
http://www.fftw.org/install/windows.html
当我运行以下命令时:

./configure --with-our-malloc16 --with-windows-f77-mangling --enable-shared --disable-static --enable-threads --with-combined-threads --enable-portable-binary --enable-sse2 --with-incoming-stack-boundary=2

字符串
我得到:

'.' is not recognized as an internal or external command


任何帮助都将不胜感激

qgelzfjb

qgelzfjb1#

对于FFTW 3.3.10,我用mingw 64-gcc包安装了Cygwin。在Cygwin命令窗口中,我设置了以下两个变量:

export CC=x86_64-w64-mingw32-gcc.exe
export AR=x86_64-w64-mingw32-ar.exe

字符串
接下来,我在构建前将“#define FFTW_DLL”添加到fftw3.h头文件中。我使用以下命令配置了构建:
第一个月
然后我就跑了

make
make check
make install


完成后,所需的DLL位于bin目录中,而不是lib目录中。我按照www.example.com网站上BUILD-MINGW64.sh中的说明fftw.org创建了.def文本文件,并运行

lib /machine:x64 /def:libfftw3-3.def


获取所需的. lib。VS 2017似乎对此很满意。

l2osamch

l2osamch2#

1.您正在cmd/power shell中运行配置脚本。您必须在MinGW shell中运行configure命令。

  1. http://www.fftw.org/install/windows.html具有预构建的库。它们为32位和64位应用程序提供了良好的维护和优化版本。
ffx8fchx

ffx8fchx3#

我完全确定这个答案已经太晚了,但我仍然想展示我是如何解决这个问题的,以防将来它能帮助到别人。作为一个快速说明,我已经验证了我即将提供的解决方案在Linux上可以工作,但在Windows上不能工作。然而,我仍然提供了这个解决方案,假设是这个过程在两个操作系统(都使用MinGW)上相对相同(如果不是完全相同的话)。如果我使用了一些不正确的/不成熟的术语,请原谅,因为我不是一个专业的开发人员。
我将从解决上述错误消息开始:* “.”不被识别为内部或外部命令*。我更熟悉Linux命令行,但我对这个错误的解释是,系统找不到您试图运行的可执行文件-configure。这有两个明显的解释:1)可执行文件尚未安装,或者2)可执行文件安装在与您当前所在的 * 不同的目录中(作为后来的编辑,我意识到在Windows中运行可执行文件时,您不需要将**./放在前面-您只需键入名称;另外,我之前没有想到这一点,但Windows目录是由*而不是*/**分隔的,这是另一个可能的错误原因)*。这让我想到。。

第一步:安装configure可执行文件

配置可执行文件通常与像fftw 3这样的库捆绑在一起。它们基本上允许您指定参数,以确定如何以及在何处构建库(如果您想要更详细的解释,您可以观看this video,它也有第二部分)。这些可执行文件并不是自己来的-它们与构成库的源代码捆绑在一起。configure可执行文件的工作是提供一个接口,用于确定cmake(在本例中)将如何为库创建构建脚本。当然,这意味着你需要下载fftw 3库。下载链接可以在此页面找到。在Linux上,你可以使用wget沿着这个库的链接地址(请记住链接地址可能会随着新版本而改变):

wget https://www.fftw.org/fftw-3.3.10.tar.gz

字符串
您最终将得到一个tar.gz文件,它本质上是一种在压缩归档中存储多个不同文件的方法。您可以使用tar工具提取原始文件(请记住,tar文件的名称可能会随新版本而更改):

tar -xf fftw-3.3.10.tar.gz


您现在应该在当前工作目录中有一个包含库源代码和配置可执行文件的文件夹。

第二步:配置并构建库

configure可执行文件接受确定(或者configure,如果您愿意的话)如何构建fftw 3库的值(因此得名)。看起来您尝试运行的configure命令是在此处找到的。我个人不能确认这个configure命令是否可以与所有指定的选项一起工作(当我尝试时它坏了),但它确实可以使用更简约的方法。如果您需要指定的某些选项,您将不得不做一些修改-我的回答只是为了提供一个一般性的指导。下面是我运行的命令:

./configure CC=x86_64-w64-mingw32-gcc --prefix=${Path to the directory you want the library installed in}


要避免问题中指定的错误,请确保您在找到configure可执行文件的目录(也称为库目录)*中运行该命令。 此外,此配置将仅构建静态库。如果您想构建共享的,则需要添加以下两个选项:--enable-shared--disable-static**。* 指定的选项中,CC选项指定编译库时要使用的程序名称。在本例中,您希望将其设置为MinGW 64位编译器。如果您正在为Linux构建库,则应将其设置为使用本机gcc(CC=gcc)。--prefix选项指定了库将安装在您的计算机上的目录。请记住,这必须是一条绝对路径,而不是一条相对路径。现在,您需要做的就是在库目录中运行以下两个命令:

make
make install

Make根据您设置的配置构建库,make install将构建输出安装到您指定的**--prefix**目录。如果您没有指定前缀,它可能会将构建输出安装在系统的默认库目录中,这自然需要管理权限。

第三步:使用库

既然已经在系统上安装了fftw 3库,就可以在程序中使用它了。我不确定这一点,但我听说(从emperor的回答和其他研究中),当编译使用fftw 3库的源代码时,需要在构建库之前将“#define FFTW_DLL”宏添加到fftw3.h头文件 * 而不是MinGW。以下是如何使用MinGW使用这个库编译一个简单的程序(MinGW实际上使用与原生gcc相同的标志):

x86_64-w64-mingw32-gcc ${source file(s)} -o ${output executable} -I${Directory where you installed the library}/include -L${Directory where you installed the library}/lib -lfftw3

你现在已经完成了(希望如此,但我们都知道在这个领域的第一次尝试中没有任何工作)!

如果在Windows上无法使用

没问题。事实上,我(技术上)自己在Windows上通过Microsoft's Linux Subsystem (Ubuntu)做到了这一点,你可以在微软商店买到。之后,您所需要做的就是将库从子系统上安装它的位置复制到Windows机器上安装MinGW的基本lib目录;还将产生的头文件复制到基本MinGW包含目录。

相关问题