找不到命令,生成:错误127

Command not found, make: Error 127,

本文关键字:错误 生成 命令 找不到      更新时间:2023-10-16

我有一个编译成功的make文件:

CCC = g++
CFLAGS = -c -g -Wall
CCFLAGS = $(CFLAGS)
LDFLAGS = -g
common_objects = main.o tokens.o
flex_objects = flex_scanner.o 
hand_objects = hand_scanner.o 
both: flex_scanner hand_scanner
flex_scanner: $(flex_objects) $(common_objects)
$(CCC) $(LDFLAGS) $(flex_objects) $(common_objects) -o flex_scanner
flex_scanner.o: flex_scanner.l
flex -it flex_scanner.l > flex_scanner.cc
$(CCC) $(CCFLAGS) flex_scanner.cc
clean:
/bin/rm -f hand_scanner flex_scanner $(hand_objects) $(flex_objects) 
$(common_objects) flex_scanner.cc
test: both
flex_scanner < test1 > flex_test1.output
hand_scanner < test1 > hand_test1.output

但是当我尝试运行make test时,我会得到以下错误:

flex_scanner < test1 > flex_test1.output
/bin/sh: flex scanner:command not found
make *** [test] Error 127

这个错误是什么意思?

(该问题已在评论中得到回答。已转换为社区wiki答案以适应Stackoverflow的问答格式)。

如@Brett Hale所述,应使用./flex_scanner

test: both
./flex_scanner < test1 > flex_test1.output
hand_scanner < test1 > hand_test1.output

这是由@Beta解释的:

当您发出类似flex_scanner的命令时,您的操作系统必须查找该名称的可执行文件。它有一个查找此类内容的位置列表,其中可能包括也可能不包括"."(用于工作目录)。通过添加"./",你是在告诉操作系统"不要去寻找所谓的‘flex_scanner’,使用我给你的路径"。

现在,PATH可以按照@JJoao:的解释进行修改

如果您不在敌对机器中,您可以添加export PATH=$PATH:。到您的~/.bashrc或类似程序,在当前目录.中搜索命令

或者,通过@Wojciech Frohmberg:解释的链接,可以将二进制文件添加到PATHdiectory

或者您可以使用ln -s ~/bin/flex_scanner /path_to_exec/flex_scannerln -s ~/bin/hand_scanner /path_to_exec/hand_scanner

大多数有经验的unix用户都会避免在PATH上使用.,因为这会增加运行意外二进制文件的风险。