gpt4 book ai didi

compiler-errors - 设置代码::Blocks to compile MPI programs with MPICC.exe

转载 作者:行者123 更新时间:2023-12-02 10:42:15 25 4
gpt4 key购买 nike

我在Windows命令行上成功编译并运行MPI程序with some help。现在,我尝试使用我的IDE代码::: blocks编译该程序,但是它失败了。
Under Settings -> Compiler... -> Other Settings -> Advanced Options -> Command line macros我删除了所有不必要的标志,然后就离开了:
$compiler $fileSettings -> Compiler... -> Toolchain executables我很容易为C程序提供MPI包装器mpicc.exe和为C++提供mpic++.exe

现在,当我单击Build(Ctrl + F9)时,将打开一个小的 pop 窗口,指出:
cl.exe - application error
错误代码是0xc00000be
在code::blocks的构建日志窗口中,我得到:

mpicc.exe C:\Entwicklung\src\mpi_prime.c
Skipping linking (no linker program set): C:\Entwicklung\src\mpi_prime.exe
Process terminated with status -1073741634 (1 minutes, 37 seconds) 0 errors, 0 warnings (1 minutes, 37 seconds)


在这里,我再次陷入困境,还有几个问题?
  • 我应该保留mpicc.exe包装器吗?
  • code::blocks总是尝试调用链接器等。在哪里可以关闭它?
  • 我想从一开始就将编译器从cl更改为gcc,我应该先尝试一下吗?

  • 编辑1:

    mpicc.exe /nologo /W3  /MD /Ox /DNDEBUG    /IC:\Entwicklung\CUDA\VS2012~1\VC\include /IC:\Entwicklung\CUDA\VS2012~1\VC\include  /c main.c /Foobj\Release\main.obj
    link.exe /nologo /LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\include /LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\include /out:bin\Release\mpi_test_projektarbeit.exe "..\..\..\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib" msvcrt.lib msvcprt.lib "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib" obj\Release\main.obj
    Process terminated with status -1073741634 (0 minutes, 1 seconds)
    0 errors, 0 warnings (0 minutes, 1 seconds)


    我相信我已经按原样设置了所有内容,但是仍然出现带有错误代码的 pop 窗口。我会摆弄它。如果没有任何效果,我将尝试重新安装code::blocks,也许会有所帮助。

    编辑2:

    首先,它仍然没有运行。
    其次,我相信我对现在发生的事情和哪里出错了有更好的了解。

    通过尝试不同的东西,我尝试不使用mpicc.exe包装器直接使用cl.exe。我选择了 Settings -> Compiler... -> Microsoft Visual C++ 2010,代码块为我提供了。尝试构建项目时,我收到了与 mpicc.exe完全相同的 error message(必须训练我的noScript以向我显示消息)。 mpicc.exe在其 mpicc-wrapper-data.txt list 中调用cl.exe。

    因此,借助一些Google魔术,我在codeblocks论坛 this页面上发现了其他人完全相同的错误消息。他们的建议是添加其他环境PATH,这让我思考了。在我从命令行运行 mpicc之前,我必须先运行 vcvarsall.bat,因为我收到了 mspdb110.dll丢失的错误消息。因此,我仔细研究了 vcvarsall.bat,它正在调用另一个批处理文件 vcvars32.bat。该文件临时添加了PATH变量。所以我加了

    C:\Entwicklung\CUDA\VS 2012\Common7\IDE\



    永久保存到我的PATH中,并且可以调用 mpicc.exe而不丢失任何DLL错误消息,但是尝试进行编译时会显示一些链接器错误,无法找到 advapi32.lib。我将更深入地研究它,并且在没有 vcvars32.bat的帮助下在命令行上运行后,我将再次在CB中尝试它。我希望这会引起我所有的问题。

    还有另一件事使我有些困惑,没什么大不了的,但是当我卸载CB并重新安装它时,CB可能 "new" mpi编译器设置保存在某个位置。我检查了安装文件夹:卸载后所有文件都被删除了,所以我也删除了 USER\AppData\下的CB文件夹。但是,重新安装CB时,CB启动时仍会出现编译器设置,问我是否要导入它们?!

    最佳答案

    这将使您尽可能地构建一个32位的“Hello world”控制台项目
    使用OpenMPI Windows C编译器包装mpicc.exe在Code::Blocks(至少为12.11)中安装了MS Visual Studio 10工具链(或更高版本):

    我相信:

  • Code::Blocks已检测到MS VC++ 10编译器,并将其列为可用的编译器
    设置-> 编译器下拉菜单下选定的编译器
  • 您已经为MPI包装器配置了一个新的编译器,即 mpi ,即
    其中一项您已更改了高级编译器设置和其他内容。
  • 您已在C:\Program Files (x86)\OpenMPI_v1.6.2-win32
  • 中安装了OpenMPI

    然后:
  • 对于本机win32构建,您将需要链接kernel32.lib,为此,您将需要连接到最新的Windows SDK,例如http://msdn.microsoft.com/en-US/windows/desktop/bg162891
  • 在Code::Blocks IDE中,导航设置-> 编译器。选择 mpi 并删除该编译器。 (我们将再次开始)
  • 从下拉菜单中选择 Microsoft Visual Studio 2010 ;点击复制并调用
    新的编译器再次 mpi
  • 在选项卡菜单中,选择工具链可执行文件并设置:
  • 编译器的安装目录 = <empty>
  • C编译器 =“C:\ Program Files(x86)\ OpenMPI_v1.6.2-win32 \ bin \ mpicc.exe”
  • C++编译器 =“C:\ Program Files(x86)\ OpenMPI_v1.6.2-win32 \ bin \ mpicc.exe”
  • 将其他设置保留在工具链可执行文件中,然后按OK。
  • 编译器将需要访问标准C库头(至少),并且需要
    无空格(DOS)搜索路径名。因此,现在转到搜索目录-> 编译器
    您将在其中看到C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include
  • 选择此路径;单击编辑并将其替换为DOS版本C:\PROGRA~2\MICROS~1.0\VC\include
  • 可以使用之外的编译器设置

  • 接下来设置项目。
  • 导航文件-> -> 项目。单击控制台应用程序图标
  • 单击向导:
  • 设置语言 = C
  • 选择项目名称和位置
  • 设置编译器 = mpi
  • 完成

  • 然后代码::块将 pop 警告,提示 在您配置的文件中找不到编译器可执行文件
    搜索mpi
    的路径(每当您访问项目的构建选项时,也会这样做)。这个
    是一个错误的警报。
  • 在您的SDK安装下找到kernel32.lib并获取其路径名,例如:"C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib"
  • 导航设置-> 项目-> 构建选项并选择编译器 = mpi
  • li
  • 在选项卡菜单中,跳至链接器设置
  • 单击链接库列表下面添加。添加您记下的完整的引用路径名
    中获取kernel32.lib和OK生成选项
  • 生成项目。成功的构建日志应如下所示:
    -------------- Build: Debug in mpi_test (compiler: mpi)---------------

    "C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe" /nologo /W3 /MDd /Zi /D_DEBUG /IC:\PROGRA~2\MICROS~1.0\VC\include /c main.c /Foobj\Debug\main.obj
    main.c
    link.exe /nologo /LIBPATH:"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\lib" /out:bin\Debug\mpi_test.exe msvcrtd.lib msvcprtd.lib "C:\Program Files (x86)\Windows Kits\8.1\Lib\winv6.3\um\x86\kernel32.lib" obj\Debug\main.obj /DEBUG
    LINK : bin\Debug\mpi_test.exe not found or not built by the last incremental link; performing full link
    Output size is 17.50 KB
    Process terminated with status 0 (0 minutes, 0 seconds)
    0 errors, 0 warnings (0 minutes, 0 seconds)

  • 从那里,您可以继续进行一些实际的MPI项目,当然,您将需要为其配置其他搜索目录和链接选项。

    更新1:

    我发现您最近的构建日志失败有一些问题:
  • 编译器以mpicc.exe的形式被调用,但根据我的回答,应以其完整路径名(例如)调用。 "C:\Program Files (x86)\OpenMPI_v1.6.2-win32\bin\mpicc.exe"。您可以附加“工具链可执行文件”选项卡的屏幕快照吗?
  • 编译器选项/IC:\Entwicklung\CUDA\VS2012~1\VC\include出现两次。这表明您已为mpi编译器全局配置了此选项,并且
    也用于该项目。只需为项目配置它。
  • 链接器选项/LIBPATH:C:\Entwicklung\CUDA\VS2012~1\VC\include也出现两次,可能是出于相同的原因。但是/LIBPATH:应该指向包含以下内容的目录
    库二进制文件(.lib),您将其指向与CUDA头文件相同的位置-/IC:\Entwicklung\CUDA\VS2012~1\VC\include
  • 两次在链接中使用kernel32.lib,首先使用相对路径"..\..\..\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib"(可能无效),然后使用绝对路径"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\Kernel32.Lib"。同样,这可能是由于合并冗余或错误的全局编译器导致的
    用项目配置进行配置。

  • 敦促您按照我提供的步骤,使 mpi 编译器可用于默认的“Hello World”控制台应用程序,然后升级到基本MPI应用程序并使其正常运行,
    将所需的其他配置限制在项目而不是编译器中

    关于compiler-errors - 设置代码::Blocks to compile MPI programs with MPICC.exe,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21202271/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com