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

初学求帮忙解释一下makefile里这四行的意思。。。

    来源: 互联网  发布时间:2017-05-29

    本文导语:  PROG = 3510AppTest LIB = 3510api $(PROG):lib3510api.a $(CC) drv_socket.c pub.c machine.c systest.c -o $(PROG) -Wl,-elf2flt="-s 200000" -static -L. -l$(LIB) -lpthread 就是上面这四行 小弟初学 帮忙解释下着四行的意思  我想以此为例学习...

PROG = 3510AppTest
LIB = 3510api

$(PROG):lib3510api.a
$(CC) drv_socket.c pub.c machine.c systest.c -o $(PROG) -Wl,-elf2flt="-s 200000" -static -L. -l$(LIB) -lpthread

就是上面这四行 小弟初学 帮忙解释下着四行的意思  我想以此为例学习下
还有就是这四行最后输出的可执行文件到底是3510AppTest还是lib3510api.a?如果是其中的一个 那另外一个的作用是什么呢?

|

PROG = 3510AppTest
LIB = 3510api

$(PROG):lib3510api.a
    $(CC) drv_socket.c pub.c machine.c systest.c -o $(PROG) -Wl,-elf2flt="-s 200000" -static -L. -l$(LIB) -lpthread

前两行是变量赋值
第三行是依赖关系,表明 $(PROG) (即3510AppTest)是对lib3510api.a有依赖关系的:当lib3510api.a比$(PROG) 新、或者$(PROG) 不存在时,执行第四行的语句。

第四行可以简化抽象为 gcc 1.c -o 3510AppTest -l3510api。
生成的文件是 3510AppTest。
另一个文件(lib3510api.a)是一个静态库文件,可以理解成别人提供给你用的中间文件,和pthread这种类似。


makefile的学习,可以搜索一下《跟我一起写 Makefile.pdf》,比较容易入门。
可以搜索“ 静态库、动态库(如何使用)”来增加一些代价编译的知识。

|
Makefile中的变量其实非常类似于C语言中的宏定义,只是字符串替换罢了。
$(PROG):lib3510api.a : 冒号前的是目标,后的是依赖文件,即前面这个目标依赖于后面这个文件
这四行最后输出的可执行文件是哪个,是由-o 后面的$(PROG) 决定的,由上面的代码可知,为3510AppTest。

其实说白了,你要看最终的第四句到底是执行了什么,生成的东西也是由$(CC)这个命令来决定的,一般情况下CC会被赋值为gcc或"交叉工具链前缀+gcc", 而CXX或CPP则被赋值为g++,最终还是由Makefile中赋值决定。

|

关于makefile可以看下
陈皓 http://blog.csdn.net/haoel/article/details/2886

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 初学 java 的朋友来和我交朋友,我也是初学。我的 QQ 号是 33555085
  • 又一个初学者的困惑!如果您是个大虾,请你一定要进来看看,指点迷津!如果您也是个初学者,那么您也一定要进来,也许我们有一样的遭遇!
  • 初学者的问题我是linux初学者,我想问一下在windows里下载的大于1.44M文件如何转移到linux分区里?
  • 我是个初学者,希望指点明津
  • 初学者用什么工具好?JBUILDER?JDK?
  • 对于初学者应该看什么样的java书籍
  • 初学java应该看那些书?
  • 初学linux看哪本书好?
  • 初学java,该看那些书,请朋友们指教
  • 我是初学者,该用什么java的“编译器”????
  • 初学java什么书好?
  • 对于初学者应该看什么样的书
  • 初学者:不是问题的问题?
  • 初学者这样检验自己的学习效果呢?
  • 初学JAVA,用哪个软件来调试和编译程序?
  • 初学者的问题??在线等待。
  • 各位高手大家好,我是初学LINUX想请教几个问题
  • 初学者的疑问
  • 从初学Linux到内核开发
  • 初学java的话,从何入手呢?vj++,还是jbuilder?


  • 站内导航:


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

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

    浙ICP备11055608号-3