gpt4 book ai didi

python - 在 Python 中通过 `subprocess.run` 调用 g++ 导致可执行文件中的 "exec format error"

转载 作者:行者123 更新时间:2023-12-03 09:49:51 28 4
gpt4 key购买 nike

使用 Python 3.7,我正在尝试调用 g++ 来编译和构建 C++ 文件

#!/usr/bin/env python3

import subprocess

if __name__ == '__main__':
subprocess.run(
executable="/usr/bin/g++",
args=["/some/path/source.cpp", "-std=c++17"],
shell=True
)

当我运行脚本时,会生成可执行文件。然后我 chmod u+x 它。但是,当我尝试执行可执行文件时,它失败并显示:

-bash: ./a.out: cannot execute binary file: Exec format error

我已经阅读了一些关于此错误的其他帖子,但没有一个适用。由于某种原因,此方法失败了,但是当我在终端中本地运行 g++ 时,它按预期工作。

编辑:当我调用file a.out时,输出是

a.out: ELF 32-bit LSB relocatable, ARM, EABI5 version 1 (SYSV), not stripped

感谢任何帮助,谢谢!

最佳答案

subprocessexecutable 参数很少需要。使用 shell=False,它会覆盖 args[0] 作为要运行的程序(允许自定义 argv[0],至于登录 shell )。使用 shell=True(应尽可能避免,部分原因是它不会按照您仔分割隔的 args 列表的想法进行操作),它替换了隐式的 /bin/sh 调用以运行命令。运行一个命令的标准选项是 -c,所以你运行了

/usr/bin/g++ -c /some/path/source.cpp -std=c++17

这确实会产生一个可重定位的文件(,一个 .o 文件)。 a.out 不是此类的正常名称,但当包含源的目录不可写时,它可能是一种后备。

关于python - 在 Python 中通过 `subprocess.run` 调用 g++ 导致可执行文件中的 "exec format error",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62355012/

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