当前位置:  技术问答>linux和unix

makefile只执行到一半,就不执行,怎么回事?

    来源: 互联网  发布时间:2016-11-27

    本文导语:  main.o : factorial.h main.c  gcc -c main.c factorial.o : factorial.c factorial.h gcc -c factorial.c  all:main.o factorial.o gcc -o test main.o factorial.o clean: rm -fr *.o test 只执行gcc -c main.c,生成main.o文件。不执行gcc -c factorial.c...

main.o : factorial.h main.c 
gcc -c main.c

factorial.o : factorial.c factorial.h
gcc -c factorial.c 

all:main.o factorial.o
gcc -o test main.o factorial.o

clean:
rm -fr *.o test

只执行gcc -c main.c,生成main.o文件。不执行gcc -c factorial.c。
另外,如果将
factorial.o : factorial.c factorial.h
gcc -c factorial.c
放在文件的最前面,则只执行gcc -c factorial.c。
怎么回事,谢谢。编译没有错误。

|
按照makefile的规则,编译总是默认第一个目标和目标依赖,那么
root#make       # 按照楼主的文件,这样只会编译main.o
root#make all   # 这样才会编译all,从而编译所有,如果楼主只想make,要将all放到最前边
root#make clean # 删除目标文件

all:main.o factorial.o
gcc -o test main.o factorial.o   # jernymy 此处要用tab

main.o : factorial.h main.c  
gcc -c main.c  # jernymy 此处要用tab

factorial.o : factorial.c factorial.h
gcc -c factorial.c  # jernymy 此处要用tab

clean:
rm -fr *.o test  # jernymy 此处要用tab


|
all:main.o factorial.o
gcc -o test main.o factorial.o


把这个放在最前面试试

|
makefile不是按照顺序执行的,它只执行第一个目标和第一个目标所依赖的目标;

|
可以定义all:为伪命令,然后make all编译,或者按照楼上说的方法操作

|

up

|
Makefile只生成第一个目标,当然,要是想一次生成多个目标,可以

.PHONY:all AA BB
all:AA BB
......

|


正解

    
 
 

您可能感兴趣的文章:

  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 关于makefile的问题。一个makefile如何生成两个可执行文件。
  • 为何makefile中执行的结果和直接在命令行中执行结果不一致?
  • Makefile中目标的执行顺序
  • solaris下的makefile文件包含的shell脚本不执行
  • 怎样用Makefile生成两个可执行文件?
  • Makefile怎么写才能让生成的可执行文件让GDB调试呢?
  • 请问 makefile 嵌套执行,在不同目录中,同一文件的相对路径发生变化怎么办?
  • 急求!!一个makefile如何生成两个可执行文件
  • 执行make操作时显示"Makefile:5: *** 遗漏分隔符 。 停止。"
  • 关于makefile中无法执行mkdir,cp命令的问题
  • 执行makefile 时提示说 ' does not exist or cannot be read。
  • 奇怪:为什么我的Solaris上执行configure后生成的Makefile文件里面会有很多错误的指令?
  • 请问怎么样将linux下的makefile转成window下执行?
  • 利用Makefile生成可执行文件的问题
  • 请大侠帮帮忙,我的makefile的内容在执行make的时候怎么不连续?
  • 唉! 一样的shell, 在shell下执行没有问题,但在makefile里就是不行,请 大侠指教!
  • 请教在makefile中如何打包2个可执行文件?
  • Makefile 加了-g没有生成Debug可执行文件
  • 只有一行代码的Makefile文件,在执行make命令时出错。请帮忙看看 ,谢谢
  • makefile 18: *** Linux kernel source tree not found 是怎么回事?
  • 我自己写的Makefile出现cc: no input files错误怎么回事?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 求解makefile问题,makefile.conf的作用?
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • makefile如何调用文件目录下的makefile
  • 请教根据Makefile.am自动生成Makefile的问题
  • 怎麼樣使Makefile.in生成Makefile?
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • mysql iis7站长之家
  • win32下编译Linux 下的项目(makefile.am和makefile.in)
  • make -f makefile 时提示 Make: Must be a separator on rules line 5. Stop. 为什么,makefile 如下


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3