使文件无法工作c

使文件无法工作c
A4: main.o testA4.o helper.o miscFunctions.o queueFunctions.o headerA4.h
    gcc -Wall -std=c99 main.o testA4.o helper.o miscFunctions.o queueFunctions.o

main.o: main.c headerA4.h
    gcc -Wall -std=c99 -c main.c -o main.o

testA4.o: testA4.c headerA4.h
    gcc -Wall -std=c99 -c testA4.c -o testA4.o

helper.o: helper.c headerA4.h
    gcc -Wall -std=c99 -c helper.c -o helper.o

miscFunctions.o: miscFunctions.c headerA4.h
    gcc -Wall -std=c99 -c miscFunctions.c -o miscFunctions.o

queueFunctions.o: queueFunctions.c headerA4.h
    gcc -Wall -std=c99 -c queueFunctions.c -o queueFunctions.o

clean:
    rm *.o

这是我的 make 文件,但是当我编译它时,会发生这种情况 -

zali05@ginny:~/A4$ make
gcc -Wall -std=c99 main.o testA4.o helper.o miscFunctions.o queueFunctions.o
zali05@ginny:~/A4$ A4
bash: A4: command not found
zali05@ginny:~/A4$ A4:
bash: A4:: command not found
zali05@ginny:~/A4$ ./A4
bash: ./A4: No such file or directory
zali05@ginny:~/A4$ ./a.out
Begining A4 Program Testing...
Creating Initial List...
Enter a username:

它适用于./a.out

答案1

link/load 命令缺少该-o A4选项。您可能想将其写为-o $@.同样,您可以将命令中的对象列表写为$^,导致GNU 使复制依赖项列表。 (唉,并非所有品牌都有此功能.)

Make 还将提供编译模式。您可以设置CFLAGS和 (可选)CC并省略所有编译命令。

另外,您在此处发布时错误格式化了 makefile 的第一行。

只是为了提供完整的结果,如果我正在编写这个 makefile (并且不使用汽车制造商或者依赖(使用一个!),并且目标不是 GNU make 特定的),我可能会写:

A4_OBJS = main.o testA4.o helper.o miscFunctions.o queueFunctions.o 

CC = gcc
CFLAGS = -Wall -std=c99

A4 : ${A4_OBJS}
        ${CC} ${CFLAGS} ${LDFLAGS} -o $@ ${A4_OBJS}

main.o : main.c headerA4.h
testA4.o : testA4.c headerA4.h
helper.o : helper.c headerA4.h
miscFunctions.o : miscFunctions.c headerA4.h
queueFunctions.o : queueFunctions.c headerA4.h

clean :
        rm *.o A4

相关内容