我正在为学校项目创建的makefile遇到一些问题。我正在编译和组装C文件和SPARC程序集文件(分别)并链接它们。我在Unix环境中工作。这是makefile:
proj09.exe: proj09.driver.o proj09.support.o
<tab>gcc -Wall proj09.driver.o proj09.support.o -o proj09.exe
proj09.driver.o: proj09.driver.c /user/cse320/Projects/project09.support.h
<tab>gcc -Wall -c proj09.driver.c /user/cse320/Projects/project09.support.h
proj09.support.o: proj09.support.s
<tab>gcc -Wall proj09.support.s
但是,当我尝试制作它时,我得到了一个读者错误,特别是:
“读者致命错误:proj09.makefile,第2行:看到意外的行尾”
现在我知道通常这意味着某些内容格式不正确,但我不知道在这种情况下可能是什么。此外,我不是100%确定这是makefile的正确代码(特别是我的support.s文件的组装,以及两个文件的链接)。如果这是一个重复的问题,我道歉,我事先查看了档案,找不到任何有用的东西。任何帮助将不胜感激!
编辑:我不明白为什么这会有所作为,但我使用gedit实际编写代码然后将文件传输到SSH进行链接。
答案 0 :(得分:2)
正如约阿希姆告诉你的那样,线条应该用制表符缩进,而不是用空格缩进,所以第二行应该是这样的:
[TAB]gcc -Wall proj09.driver.o proj09.support.o -o proj09.exe[NEWLINE]
其中[TAB]表示TAB字符。
命令后也不应该有任何空格。这就是为什么我把[NEWLINE] char。
答案 1 :(得分:0)
除了空格和制表符之外,这不会生成目标文件,甚至不应该编译(除非它有main()
):
gcc -Wall proj09.support.s
您也应该在这里使用-c
:
gcc -Wall -c proj09.support.s
注意:如果您在Unix / Linux上工作,请丢失.exe