【问题标题】:mpicc - clang: error: no such file or directory:mpicc - clang:错误:没有这样的文件或目录:
【发布时间】:2019-05-28 04:45:25
【问题描述】:

一个月前,我在this Stack Overflow answer 之后在 macOS Mojave 上安装了 Open MPI 4.0.1。

当时一切正常,我设法编译并运行了 hello.c 和其他一些程序。

但是,当我今天尝试使用 $HOME/opt/usr/local/bin/mpicc -o program_name ./program_name.c 编译任何程序时,我收到错误 clang: error: no such file or directory: './program_name.c',即使这些文件位于该目录中。 它甚至不适用于 hello.c。

但是当我尝试使用$HOME/opt/usr/local/bin/mpirun -np 4 hello 运行现有程序时,例如你好,它可以工作。

所以我不明白如果 mpi 可以找到并运行现有程序,但无法编译同一目录中的文件,我怎么会收到错误 no such file or directory

我也尝试使用cd $HOME/opt/usr/local/bin 在该目录中定位,然后执行mpicc -o hello ./hello.c,但随后出现错误-bash: mpicc: command not found

有谁知道问题出在哪里以及如何解决?

【问题讨论】:

  • $HOME/opt/usr/local/bin/mpicc -o /my_full_path/program_name /my_full_path/program_name.c 工作得更好吗?它不是抱怨找不到编译器,而是找不到.c 文件。
  • 一般的方法是在$PATH后面加上mpicc(比如export PATH=$HOME/opt/usr/local/bin:$PATH)然后mpicc -o program_name program_name.c启动的时候,你确定你的当前目录里面有program_name.c (例如ls 应该列出它)?
  • 命令 $HOME/opt/usr/local/bin/mpicc -o $HOME/opt/usr/local/bin/program_name ./$HOME/opt/usr/local/bin/program_name.c 没有帮助,但我尝试将文件复制到桌面,然后运行命令 $HOME/opt/usr/local/bin/mpicc -o Desktop/program_name ./Desktop/program_name.c 并且它有效!
  • 我没有将mpicc 添加到$PATH,我可以试试。是的,当前目录有program_name.c,并以ls 列出。
  • 在完整路径命令中,.c 列为./$HOME/...(与$HOME/... 相比)。这是你做的,还是这里的错字?我的第二个例子应该工作。如果没有,则可能是某些 macOS 特定问题(即,它在不应该更改当前目录时更改了当前目录)。您可以在strace 下运行mpicc 来跟踪编译器正在执行的chdiropen 等,看看它是否有什么奇怪的事情。

标签: c macos mpi


【解决方案1】:

如果出现此类问题,最好使用选项 -v 运行 mpicc。这样一来,你就可以查看所有在你背后执行的命令

> mpicc -v -o main ./main.c
Apple LLVM version 9.0.0 (clang-900.0.39.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
 "/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang" -cc1 -triple x86_64-apple-macosx10.13.0 -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -emit-obj -mrelax-all -disable-free -disable-llvm-verifier -discard-value-names -main-file-name main.c -mrelocation-model pic -pic-level 2 -mthread-model posix -mdisable-fp-elim -fno-strict-return -masm-verbose -munwind-tables -target-cpu penryn -target-linker-version 305 -v -dwarf-column-info -debugger-tuning=lldb -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/9.0.0 -I ... -fdebug-compilation-dir /Users/... -ferror-limit 19 -fmessage-length 173 -stack-protector 1 -fblocks -fobjc-runtime=macosx-10.13.0 -fencode-extended-block-signature -fmax-type-align=16 -fdiagnostics-show-option -fcolor-diagnostics -o /var/folders/cx/76hd7pcs41g_vdj4qjfx0d4h0000gn/T/main-29e74d.o -x c ./main.c
clang -cc1 version 9.0.0 (clang-900.0.39.2) default target x86_64-apple-darwin17.7.0
...
...

这样,您可以发现与编译器相关的问题。此外,请确保您的工具链在系统/XCode 升级后没有更改。如果您从源代码编译 MPI,则可能是您在编译期间使用的内容与您现在拥有的内容之间存在一些差异。

【讨论】:

  • 使用 Open MPI,-showme 可用于查看编译器是如何被调用的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多