【发布时间】:2015-04-30 08:50:44
【问题描述】:
好的,所以这个问题是非常特定于项目的,但这对我来说仍然是个问题。
我有一个 Python/django 网站,由 Vagrant 设置的 Ubuntu VM 托管在本地主机上。我想从这个网站粘贴 C 代码并通过一系列 Python 函数对其进行编译。在其中一个函数中,我像这样调用make:
arg2 = os.path.join(Default_SDK_PATH, "examples/peripheral/blinky")
arg4 = os.path.join(Default_SDK_PATH, "examples/peripheral/blinky/makefile")
args = ' '.join(['make', '-C', arg2, '-f', arg4])
p = subprocess.Popen(
args,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
shell=True
)
output, errors = p.communicate()
p.wait()
我指定arg2 和arg4 用于测试比其他任何事情都多 - 只是为了 100% 确保使用了正确的 makefile。
### ### ###
好的!
所以当子进程运行时我的问题就来了。使用make 调用makefile,但失败。当我检查构建日志时,我可以看到错误消息arm-none-eabi-gcc: error: nano.specs: No such file or directory。
当我第一次调用vagrant up 时,会调用一个名为 bootstrap.sh 的文件。我已尝试向此文件添加新命令
sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi
sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
sudo apt-get update
sudo apt-get install gcc-arm-none-eabi=4.9.3.2015q1-0trusty13
卸载 Ubuntu 的原始 GCC 并安装最新的 GCC 工具链。那里也没有成功。我还尝试将整个文件结构返回到文件中,以检查相关文件是否存在,它们确实存在!
任何人都可以在这里指出正确的方向吗? 提前致谢。
【问题讨论】:
-
您能否仅从终端成功执行该命令,并且在您启动脚本的同一工作目录中?
-
@skrrgwasme Vagrant VM 中使用的项目对于项目和我使用的 SDK 具有完全不同的目录。但是我的主机上有一个相同的项目副本,其中文件路径与主机设置匹配,我可以在那里调用
make没有任何问题。 -
@skrrgwasme 另外:Vagrant VM 是一个封闭的盒子,由于各种原因我无法访问。
-
能否在引导文件中包含 make 命令?只是试图消除您的 python/c 运行的环境是否存在问题。
标签: python ubuntu gcc makefile vagrant