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