共同设计一个与 MPI 一起运行的程序

问题描述 投票:0回答:1

我正在开发一些代码,我可以使用

mpirun
命令在 OSX 上运行。每次我编译代码时,执行后都会打开一堆弹出对话框,要求接受或拒绝传入连接。我使用的 MPI 等级有多少个弹出窗口。例如,如果我跑步

mpirun -np 4 myprogram

然后我得到 4 个弹出窗口。

我知道我应该

codesign
一些东西来阻止防火墙打开这些弹出窗口,所以我尝试了以下命令:

sudo codesign --force --deep --sign - /opt/local/libexec/openmpi-gcc48/orterun
sudo codesign --force --deep --sign - /opt/local/bin/mpi*

请注意,我的 OpenMPI 安装在

/opt/local
中。不幸的是,这不起作用。

我应该共同设计什么才能防止防火墙显示这些弹出窗口?

mpi code-signing osx-elcapitan openmpi
1个回答
0
投票

我相信即使在使用

codesign
后仍然出现弹出窗口的原因之一是您正在进行 ad-hoc 签名。正如codesign中所述:

临时签名根本不使用身份,并且仅标识一个代码实例。特别签名代码的使用受到重大限制;使用前请参阅文档。

相反,我认为您应该按照 @alfC 评论中提供的链接创建一个证书。在这篇 SO 文章中:在 mac os x 环境中对可执行应用程序文件进行签名的方法或技术是什么?

此外我还认为你需要在运行时对相关流程进行签名

mpirun
也就是说你需要签名

(1)

sudo codesign --force --deep --sign "<your certificate>" /opt/local/libexec/openmpi-gcc48/orterun

(2)
sudo codesign --force --deep --sign "<your certificate>" /opt/local/libexec/openmpi-gcc48/orted

(3)
sudo codesign --force --deep --sign "<your certificate>" /opt/local/bin/mpirun

(4)
sudo codesign --force --deep --sign "<your certificate>" /path/to/your/executable

如果仍然无法正常工作,您可以通过查看日志或检查可执行文件来进一步调试问题(见下文)。

记录

log show --predicate 'eventMessage contains "codesign"' --info

(SO 帖子中的更多信息:您可以使用 macOS“日志流”或“日志显示”从连接的 iOS 设备获取消息吗?

检查

codesign -dv --verbose=4 /path/to/your/executable

spctl --assess --verbose /path/to/your/executable

如果您想更深入地了解临时签名和使用证书之间的区别,stackexchange 上有一篇讨论临时签名限制的帖子:https://apple.stackexchange.com/ questions/288291/what-are-the-restrictions-of-ad-hoc-code-signing指的是macOS代码签名深度

© www.soinside.com 2019 - 2024. All rights reserved.