好的,所以这个问题非常针对具体项目,但对我来说这是一个问题。
我有一个Python / django网站,由Vagrant设置的Ubuntu VM托管在localhost上。从这个网站我想粘贴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。
OK!
所以我的问题出现在子进程运行时。使用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工具链。也没有成功。我也尝试将整个文件结构返回到文件,以检查有问题的文件是否存在,并且它们确实存在!
有人能指出我在正确的方向吗? 提前谢谢。
答案 0 :(得分:0)
Whoop-di-hoo,我解决了!
我并不完全知道为什么,但sudo apt-get remove binutils-arm-none-eabi gcc-arm-none-eabi
似乎没有做任何事情,所以当我尝试安装新的GCC时,原始的GCC文件仍然存在。< / p>
此外,新的GCC安装在/usr/bin
,而旧的GCC有自己指定的文件夹。
所以我编辑了我的Makefile以从arm-none-eabi-gcc-4.9.3
而不是旧的/usr/bin
获取arm-none-eabi-gcc
。现在包括nano.specs
,生活很棒!