日期:2014-05-16  浏览次数:20685 次

makefile的小错误
本帖最后由 kunikida 于 2013-05-13 21:42:31 编辑
 getopt:getopt.o
    gcc -o getopt getopt.o
 
 getopt.o:main.c
    gcc -c  main.c
 
 clean:
    -rm *.o getopt

运行make命令后,显示如下:
gcc -c main.c
gcc -o getopt getopt.o
gcc:错误:getopt.o没有那个文件或目录
gcc:致命错误,没有输入文件
编译中断
make:***[getopt]错误4
不知道哪里错了,但是我若运行:
gcc -o getopt main.c
就能正确编译了。请教各位兄弟帮忙,谢谢


Makefile GCC

------解决方案--------------------
getopt.o:main.c
    gcc -o getopt.o -c  main.c
  

------解决方案--------------------
楼上正解 -o -c 都要有。
------解决方案--------------------
-o -c 参数的作用:
1. -o <file> Place the output into <file> 
如:#gcc -o file file.c
-o 告诉编译器将可执行程序放在何处,如果没有指定文件名称,编译器则会把程序放在一个名为a.out的文件里(a.out的含义是 assembler output,即汇编输出)。

2. -c Compile and assemble, but do not link  
如:#gcc -c file.c
-c 告诉编译器仅把源代码编译为目标模块(file.o)而跳过汇编和连接的步骤。在使用-c生成目标模块后,就
   可以通过-o选项来生成可执行文件。
   如:#gcc -o file file1.o file2.o 可以是多个目标模块。