HTCondor gcc: 尝试执行时出错 'cc1': execvp: 没有那个文件或目录
HTCondor gcc: error trying to exec 'cc1': execvp: No such file or directory
当我使用 HTCondor 提交 shell 脚本时,其中包含类似 gcc code.c -o code.o
的内容,错误文件显示 error trying to exec 'cc1': execvp: No such file or directory
。
但是,当我在执行机器上的 shell 中键入 gcc code.c -o code.o
时,一切正常。
有人知道原因吗?我正在研究 ubuntu-16.04.2-server-amd64。
HTCondor环境中可能定义了环境变量,导致gcc在错误的地方搜索cc1
(内部编译器可执行文件),如GCC_EXEC_PREFIX
和COMPILER_PATH
,或者,HTCondor 中的 PATH
中可能缺少 gcc(请参阅 here 关于有影响力的 GCC 环境变量)。
我建议执行以下故障排除步骤:
- 在正常的 shell 中,检查 gcc (
which gcc
) 的位置。
- 确保 gcc 所在的文件夹是 HTCondor 中
PATH
的一部分 - 或者将其附加到 PATH
(export PATH=/path/to/gcc:$PATH
) 的开头。
- 确保未在 HTCondor 环境中设置变量
GCC_EXEC_PREFIX
和 COMPILER_PATH
。
- 如果上述方法不起作用,您可以尝试另一种方法,将
GCC_EXEC_PREFIX
设置为 HTCondor 脚本中 gcc 的位置。
编辑:
根据您的发现,将 getenv = true
命令添加到 condor_submit
(doc) 可解决问题:
getenv = (True | False)
If getenv is set to True, then condor_submit will copy all of the user's current shell environment variables at the time of job submission into the job ClassAd. The job will therefore execute with the same set of environment variables that the user had at submit time.
当我使用 HTCondor 提交 shell 脚本时,其中包含类似 gcc code.c -o code.o
的内容,错误文件显示 error trying to exec 'cc1': execvp: No such file or directory
。
但是,当我在执行机器上的 shell 中键入 gcc code.c -o code.o
时,一切正常。
有人知道原因吗?我正在研究 ubuntu-16.04.2-server-amd64。
HTCondor环境中可能定义了环境变量,导致gcc在错误的地方搜索cc1
(内部编译器可执行文件),如GCC_EXEC_PREFIX
和COMPILER_PATH
,或者,HTCondor 中的 PATH
中可能缺少 gcc(请参阅 here 关于有影响力的 GCC 环境变量)。
我建议执行以下故障排除步骤:
- 在正常的 shell 中,检查 gcc (
which gcc
) 的位置。 - 确保 gcc 所在的文件夹是 HTCondor 中
PATH
的一部分 - 或者将其附加到PATH
(export PATH=/path/to/gcc:$PATH
) 的开头。 - 确保未在 HTCondor 环境中设置变量
GCC_EXEC_PREFIX
和COMPILER_PATH
。 - 如果上述方法不起作用,您可以尝试另一种方法,将
GCC_EXEC_PREFIX
设置为 HTCondor 脚本中 gcc 的位置。
编辑:
根据您的发现,将 getenv = true
命令添加到 condor_submit
(doc) 可解决问题:
getenv = (True | False)
If getenv is set to True, then condor_submit will copy all of the user's current shell environment variables at the time of job submission into the job ClassAd. The job will therefore execute with the same set of environment variables that the user had at submit time.