首页 > 解决方案 > make 不识别命令

问题描述

我正在尝试编写一个 makefile 来正确地自动编译我当前的项目。

$(kernel): $(assembly_object_files) $(linker_script)
    @echo $(PWD)
    @echo $(PATH)
    @x86_64-elf-ld -n -o $(kernel) -T $(linker_script) $(assembly_object_files)

这是失败的代码。使用它时唯一的错误信息是

make: x86_64-elf-ld: No such file or directory

我已经检查了该x86_64-elf-ld命令是否存在于路径中,并且我确实可以在 make 文件之外使用这些确切的参数来执行它。我已经确保所有其他变量等都存在,这是缺少的命令。如何make使它也包含在它的路径中?

编辑:

因此,编辑后的代码(带echos)的输出是:

/Repository of Things/Coding/Full Code/Etc/Neutron-OS
/Library/Frameworks/Python.framework/Versions/3.6/bin:/opt/local/bin:/opt/local/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/cross/bin:/opt/local/bin:~/opt/cross/bin:/usr/local/MacGPG2/bin:/Library/Frameworks/Python.framework/Versions/3.6/bin:/opt/local/sbin
make: x86_64-elf-ld: No such file or directory
make: *** [build/kernel-x86_64.bin] Error 1

工作目录与预期一致,PATH 正确。

标签: makefile

解决方案


PATH 变量肯定会出现问题,尝试在命令提示符之外打印 PATH,它的工作位置以及在 GNU make 内部,它会有所不同。

一种选择是,在执行此命令之前,您需要设计一些机制来更新 make 内部的 PATH。

或者使用命令[可执行文件]的绝对路径。


推荐阅读