gpt4 book ai didi

c - sh: 1:/my_path/ompi-1.1/compiler/ompi: 运行 C 程序时权限被拒绝

转载 作者:行者123 更新时间:2023-11-30 16:31:09 25 4
gpt4 key购买 nike

我安装了一个名为“OMPi”的软件(make后,生成了两个可执行文件ompiccompi,你可以使用ompicc -x file 执行某些操作,ompi 将由 ompicc 调用)。

当我在目录“/my_path/ompi-1.1/compiler”中运行命令 ompicc ~/Documents/example.c 时(ompicc 位于此处,ompi 位于子路径“./ompi/”中),发生错误sh: 1:/my_path/ompi-1.1/compiler/ompi: 权限被拒绝。但是当我在任何其他目录中运行相同的命令时,错误没有发生。

sudo chmod 777 -R ompi-1.1 没有用。

我认为这可能是因为子路径“./ompi/”与文件ompi同名。因此,我在 home_path 中创建了一个名为“ompi/”的目录,然后运行上述命令。令我惊讶的是,错误没有发生。似乎只有当我在目录中运行命令时才会出现错误:/my_path/ompi-1.1/compiler/

information in terminal

最佳答案

从外观上看(我简单地检查了 ompi 的源代码),ompicc 期望 ompi 程序位于同一目录中。在主目录中创建/ompi/后,它工作正常,因为在与 ompicc 相同的目录中仍然有同名的可执行文件。它在您指定的目录中不起作用,因为那里只有一个ompi,它是一个目录。

在 ompicc.c 中执行的行(然后通过 system() 调用运行构造的命令:

sprintf(cmd, "%s%s%s \"%s.pc\" __ompi__%s%s%s%s%s%s%s %s > \"%s\"%s",
usegdb ? "gdb " : "", /* Run gdb instead of running _ompi directly */
RealOmpiName,
usegdb ? " -ex 'set args" : "", /* Pass the arguments */
/* ...further arguments here... */

为了确认 RealOmpiName 是“ompi”,我遵循了该程序并且RealOmpiName 可追溯到(通过外部符号 OmpiName)Makefile.am:

-DOmpiName='"_@PACKAGE_TARNAME@"' \

然后像这样使用(安装软件):

cp -f ompi $(DESTDIR)$(bindir)/_@PACKAGE_TARNAME@
cp -f ompicc $(DESTDIR)$(bindir)/@PACKAGE_TARNAME@cc

我认为,如果安装程序一开始不要求两个程序位于同一目录中,则不会将这两个程序放在一起。

解决方案: ompi 和 ompicc 必须位于同一文件夹/目录中。

关于c - sh: 1:/my_path/ompi-1.1/compiler/ompi: 运行 C 程序时权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50752785/

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