-1

我正在使用 Codeblocks 并且必须运行 OpenMP C 程序。因此,我在代码块(编译器设置)中添加了标志 -fopenmp,现在收到错误“ mingw32-g++.exe:错误:libgomp.spec:没有这样的文件或目录

所以在网上搜索了一下这个错误后,我下载了 TDM-GCC(安装在 C:\TDM-GCC-64 中)。但是代码块上仍然显示相同的错误。

我究竟做错了什么?

这是构建日志:

mingw32-gcc.exe -c "D:\Language Files\MatrixMultiplication.c" -o "D:\Language Files\MatrixMultiplication.o"

mingw32-g++.exe -o "D:\Language Files\MatrixMultiplication.exe" "D:\Language Files\MatrixMultiplication.o" -fopenmp

mingw32-g++.exe:错误:libgomp.spec:没有这样的文件或目录

4

1 回答 1

2

这有多种可能的原因:您没有使用编译器安装 OpenMP,或者您在 Code::Blocks 配置中犯了错误。无论如何,请通过以下步骤,您应该能够修复它。您似乎在 Windows 上工作,但我还添加了有关如何在 Linux 上进行操作的注释。

1) 您将需要一个OpenMP 附带的编译器。对于 Windows ,最好下载 TDM-GCC 64 位可执行文件(第二个文件)并安装它。确保在组件选项卡中选择OpenMP组件 > gcc (TDM current: ....) > OpenMP(最后一个条目)。Linux 已经带有 GCC,因此只需打开命令行并通过在终端中键入sudo apt-get install libomp-dev来获取自己的 OpenMP。

2) 您现在必须在 Code::Blocks 中配置 Compiler:转到Settings > Compiler在 Selected Compiler 下选择GNU GCC Compiler并单击Copy并为您的新编译器键入一个方便的名称,例如TDM-GCC Compiler。转到Toolchain 可执行文件并浏览所有程序文件(C 编译器、C++ 编译器、链接器、调试器、资源编译器、Make)的目录,您应该能够在C:\TDM-GCC-64\ ...\中找到它们垃圾桶如果您选择默认安装,则在 Windows 机器上。当我在 Linux 机器上工作时,我无法告诉你确切的子目录,但你应该可以很容易地找到它。根据您的安装,32 位和 64 位可能有两个文件夹。对于 Linux,此步骤不是必需的。

4)然后您需要设置链接器设置。这可以通过在上述菜单中执行以下步骤来为所有项目(我不推荐)完成,或者通过单击Project > Build options为您当前的项目完成。转到相应配置(调试发布)的链接器设置,然后单击链接库下的添加。在 Windows 机器上,您需要浏览一个名为libgomp-1.dll(32 位)或libgomp_64-1.dll(64 位)的文件,它们应位于与上述程序文件相同的文件夹中。在 Linux 下改为选择-lgomp其他链接器选项下。

3)通过转到编译器设置 > 其他编译器选项并在其中键入 -fopenmp来设置编译器标志-fopenmp (适用于所有项目或仅当前项目)。

4) 使用OpenMP "Hello World"之类的程序对其进行测试。

于 2019-10-24T17:34:45.150 回答