首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Makefile问题:错误127,255,在makefile中运行程序

Makefile问题:错误127,255,在makefile中运行程序
EN

Stack Overflow用户
提问于 2014-05-03 17:53:19
回答 2查看 2.5K关注 0票数 1

我是欧洲经委会的一名学生,从事编程作业;它已经提交并正在评分,但我仍然想知道为什么我的makefile不起作用。当我用命令“make test”在学校服务器上运行文件时,它会响应

' make : testq:命令未找到。

如果我运行'make testq12345‘,它实际上会运行我的程序"myar“并生成输出文件,但是它会给出一个错误255。我不明白这个问题,也不明白为什么makefile找不到目标。我通过堆栈溢出和其他来源搜索了这些错误,但不理解,也找不到可行的解决方案。如果有关系,我会在Linux服务器上运行它。

我在it 311/Homework4 4/test中运行它,其中包含makefile、程序和文本文件。

感谢您的时间和帮助,非常感谢。

代码语言:javascript
运行
复制
#
#  $RCSfile$
#  $Revision$
#  $Author$
#  $Date$
#  $Log$
#
# Author: Cody R Crawford
# Email: crawfoco@onid.orst.edu
# Course: CS311-400
# Homework: 4
# Citations:
#   http://mrbook.org/tutorials/make/
#       For examples, guidance, and genera understanding
# Assumptions: I assume you want the .o files to show up unless 
# you specifically command 'clean'
#########################################################

CC=gcc
DEBUG=-g
CFLAGS=$(DEBUG) -Wall
PROGS=sig_demo myar 
OBJECTS=$(PROGS:.c=.o)

all: $(PROGS)

sig_demo.o: sig_demo.c
    $(CC) $(CFLAGS) -c sig_demo.c

sig_demo.c: sig_demo.o
    $(CC) $(CFLAGS) -c sig_demo.c

myar.o: myar.c
    $(CC) $(CFLAGS) -c myar.c

myar.c: myar.o
    $(CC) $(CFLAGS) -c myar.c

tests:
    testq
    testt
    testv

testq:
    testq24 
    testq135
    testq12345

testq24:
    rm -f ar24.ar 
    ar q ar24.ar 2-s.txt 4-s.txt
    myar q myar24.ar 2-s.txt 4-s.txt 
    diff ar24.ar myar24.ar

testq135:
    rm -f ar135.ar 
    ar q ar135.ar 1-s.txt 3-s.txt 5-s.txt 
    myar q myar135.ar 1-s.txt 3-s.txt 5-s.txt 
    diff ar135.ar myar135.ar

testq12345:
    rm -f ar12345.ar 
    rm -f myar12345.ar
    ar q ar12345.ar 1-s.txt 2-s.txt 3-s.txt 4-s.txt 5-s.txt
    ./myar -q myar12345.ar 1-s.txt 2-s.txt 3-s.txt 4-s.txt 5-s.txt
    diff ar135.ar myar135.ar

testt:
    testt24
    testt135
    testt12345

testt24:
    rm -f ar24.ar
    ar q ar24.ar 2-s.txt 4-s.txt
    ar t ar24.ar > ar-ctoc.txt 
    myar -t ar24.ar > myar-ctoc.txt 
    diff ar-ctoc.txt myar-ctoc.txt 

testt135:
    rm -f ar135.ar
    ar q ar135.ar 1-s.txt 3-s.txt 5-s.txt
    ar t ar135.ar > ar-ctoc.txt 
    myar -t ar135.ar > myar-ctoc.txt 
    diff ar-ctoc.txt myar-ctoc.txt 

testt12345:
    rm -f ar12345.ar
    ar q ar12345.ar 1-s.txt 2-s.txt 3-s.txt 4-s.txt 5-s.txt
    ar t ar12345.ar > ar-ctoc.txt 
    myar -t ar12345.ar > myar-ctoc.txt 
    diff ar-ctoc.txt myar-ctoc.txt  

testv:
    testv24
    testv135
    testv12345

testv24:
    rm -f ar24.ar
    ar q ar24.ar 2-s.txt 4-s.txt
    ar v ar24.ar > ar-ctoc.txt 
    myar -v ar24.ar > myar-ctoc.txt 
    diff ar-ctoc.txt myar-ctoc.txt 

testv135:
    rm -f ar135.ar
    ar q ar135.ar 1-s.txt 3-s.txt 5-s.txt
    ar v ar135.ar > ar-ctoc.txt 
    myar -v ar135.ar > myar-ctoc.txt 
    diff ar-ctoc.txt myar-ctoc.txt 

testv12345:
    rm -f ar12345.ar
    ar q ar12345.ar 1-s.txt 2-s.txt 3-s.txt 4-s.txt 5-s.txt
    ar v ar12345.ar > ar-ctoc.txt 
    myar -v ar12345.ar > myar-ctoc.txt 
    diff ar-ctoc.txt myar-ctoc.txt 




clean:
    rm -f $(PROGS) $(OBJECTS) *.o *~
EN

回答 2

Stack Overflow用户

发布于 2014-05-03 17:58:19

依赖关系应该列在同一行中,否则它将尝试以命令的形式执行它们;

例如;

代码语言:javascript
运行
复制
tests:
    testq
    testt
    testv

只需尝试执行不存在的shell命令testqtestttestv,同时给出错误;

代码语言:javascript
运行
复制
tests: testq testt testv

只需确保makefile目标testqtestttestv在执行目标tests之前完成。在这种情况下,tests不包含任何命令,因此目标所做的唯一事情就是确保执行这些依赖项。

票数 2
EN

Stack Overflow用户

发布于 2014-05-03 18:03:35

我想你是在找

一个简单的makefile由具有以下形状的“规则”组成:

代码语言:javascript
运行
复制
target ... : dependencies ...
        command
        ...
        ...

这是您需要解决的问题:

代码语言:javascript
运行
复制
tests: testq testt testv

testq: testq24 testq135 testq12345

testv: testv24 testv135 testv12345
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23447963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档