我对Linux还比较陌生,但我的操作系统类中有一项任务涉及多个文件。我的教授给了我们他的makefile,但它对我不起作用。Make只返回错误。我知道我有和我的教授相同的所有文件,尽管我的文件还没有完成,但我认为没有理由不编译代码。
这是Makefile:
sync: sync.c prodcons.c prodcons.h producer.c producer.h consumer.c consumer.h Makefile
${CC} -g -Wall -pthread -o sync ssync.c prodcons.c producer.c consumer.c ln -sf sync assn4
这是我收到的错误信息:
J_studentid@cs3060:~/assn4$ make
cc -g -Wall -pthread -o sync sync.c prodcons.c producer.c consumer.c ln -sf sync assn4
cc: error: ln: No such file or directory
cc: error: sync: No such file or directory
cc: error: assn4: No such file or directory
cc: error: unrecognized command line option ‘-sf’; did you mean ‘-Hf’?
Makefile:2: recipe for target 'sync' failed
make: *** [sync] Error 1
J_studentid@cs3060:~/assn4$
我看到教授在课堂上编译和运行代码,所以我知道它有潜力发挥作用,但它给我带来了问题。我非常乐意提供更多的信息或代码,但我不认为文件的内容与编译错误有关。非常感谢。
我确信这是您的makefile的预期源代码,它既有效又有效:
all:
${CC} -g -Wall -pthread -o sync ssync.c prodcons.c producer.c consumer.c
ln -sf sync assn4
你的makefile的问题是:
- 没有默认目标,即缺少
all:
ln -sf sync assn4
用作编译器参数
此外,请确保命令行(例如${CC} ...
(始终以TAB字符开头。我不知道你的代码块中是否有一些,因为它们在这里被自动更改为空格,但我想指出。