我安装了一个名为" OMPi" (在make
之后,它生成了两个可执行文件ompicc
和ompi
,您可以使用ompicc -x file
执行某些操作,并ompi
将调用ompicc
1}})。
当我在目录" /my_path/ompi-1.1/compiler"中运行命令ompicc ~/Documents/example.c
时; (ompicc
在此处且ompi
位于sub_path" ./ ompi /")中,发生错误 sh:1:/my_path/ompi-1.1/compiler / ompi:许可被拒绝。但是当我在任何其他目录中运行相同的命令时,错误都没有发生。
sudo chmod 777 -R ompi-1.1
没用。
我认为这可能是因为sub_path" ./ ompi /"与文件ompi
获取相同的名称。所以,我创建了一个名为" ompi /"的目录。在home_path中,然后运行上面的命令。令我惊讶的是,错误并没有发生。似乎只有在目录中运行命令时才会出现错误:/my_path/ompi-1.1/compiler/
答案 0 :(得分:0)
从它的外观(我已经简要检查过ompi的源代码), ompicc 预计 ompic 程序位于同一目录中。在主目录中创建/ 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必须位于同一文件夹/目录中。