游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

Linux平台Makefile文件的编写基础篇

  目的:
  基本掌握了make的用法,能在Linux系统上编程。
  环境:
  Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。
  准备:
  准备三个文件:file1。c,file2。c,file2。h
  file1。c:
  includestdio。h
  includefile2。h
  intmain()
  {
  printf(printfile1);
  File2Print();
  return0;
  }
  file2。h:
  ifndefFILE2H
  defineFILE2H
  ifdefcplusplus
  externC{
  endif
  voidFile2Print();
  ifdefcplusplus
  }
  endif
  endif
  file2。c:
  includefile2。h
  voidFile2Print()
  {
  printf(Printfile2);
  }
  基础:
  先来个例子:
  有这么个Makefile文件。(文件和Makefile在同一目录)
  makefile开始
  helloworld:file1。ofile2。o
  gccfile1。ofile2。oohelloworld
  file1。o:file1。cfile2。h
  gcccfile1。cofile1。o
  file2。o:file2。cfile2。h
  gcccfile2。cofile2。o
  clean:
  rmrf。ohelloworld
  makefile结束
  一个makefile主要含有一系列的规则,如下:
  A:B
  (tab)
  (tab)
  每个命令行前都必须有tab符号。
  上面的makefile文件目的就是要编译一个helloworld的可执行文件。让我们一句一句来解释:
  helloworld:file1。ofile2。o:helloworld依赖file1。ofile2。o两个目标文件。
  gccFile1。oFile2。oohelloworld:编译出helloworld可执行文件。o表示你指定的目标文件名。
  file1。o:file1。c:file1。o依赖file1。c文件。
  gcccfile1。cofile1。o:编译出file1。o文件。c表示gcc只把给它的文件编译成目标文件,用源码文件的文件名命名但把其后缀由。c或。cc变成。o。在这句中,可以省略ofile1。o,编译器默认生成file1。o文件,这就是c的作用。
  file2。o:file2。cfile2。h
  gcccfile2。cofile2。o
  这两句和上两句相同。
  clean:
  rmrf。ohelloworld
  当用户键入makeclean命令时,会删除。o和helloworld文件。
  如果要编译cpp文件,只要把gcc改成g就行了。
  写好Makefile文件,在命令行中直接键入make命令,就会执行Makefile中的内容了。
  到这步我想你能编一个Helloworld程序了。
  上一层楼:使用变量
  上面提到一句,如果要编译cpp文件,只要把gcc改成g就行了。但如果Makefile中有很多gcc,那不就很麻烦了。
  第二个例子:
  makefile开始
  OBJSfile1。ofile2。o
  CCgcc
  CFLAGSWallOg
  helloworld:(OBJS)
  (CC)(OBJS)ohelloworld
  file1。o:file1。cfile2。h
  (CC)(CFLAGS)cfile1。cofile1。o
  file2。o:file2。cfile2。h
  (CC)(CFLAGS)cfile2。cofile2。o
  clean:
  rmrf。ohelloworld
  makefile结束
  这里我们应用到了变量。要设定一个变量,你只要在一行的开始写下这个变量的名字,后面跟一个号,后面跟你要设定的这个变量的值。以后你要引用这个变量,写一个符号,后面是围在括号里的变量名。
  CFLAGSWallOg,解释一下。这是配置编译器设置,并把它赋值给CFFLAGS变量。
  Wall:输出所有的警告信息。
  O:在编译时进行优化。
  g:表示编译debug版本。
  这样写的Makefile文件比较简单,但很容易就会发现缺点,那就是要列出所有的c文件。如果你添加一个c文件,那就需要修改Makefile文件,这在项目开发中还是比较麻烦的。
  再上一层楼:使用函数
  学到这里,你也许会说,这就好像编程序吗?有变量,也有函数。其实这就是编程序,只不过用的语言不同而已。
  第三个例子:
  makefile开始
  CCgcc
  XXg
  CFLAGSWallOg
  TARGET。helloworld
  。o:。c
  (CC)(CFLAGS)clt;o
  。o:。cpp
  (XX)(CFLAGS)clt;o
  SOURCES(wildcard。c。cpp)
  OBJS(patsubst。c,。o,(patsubst。cpp,。o,(SOURCES)))
  (TARGET):(OBJS)
  (XX)(OBJS)o(TARGET)
  chmodax(TARGET)
  clean:
  rmrf。ohelloworld
  makefile结束
  函数1:wildcard
  产生一个所有以。c结尾的文件的列表。
  SOURCES(wildcard。c。cpp)表示产生一个所有以。c,。cpp结尾的文件的列表,然后存入变量SOURCES里。
  函数2:patsubst
  匹配替换,有三个参数。第一个是一个需要匹配的式样,第二个表示用什么来替换它,第三个是一个需要被处理的由空格分隔的列表。
  OBJS(patsubst。c,。o,(patsubst。cc,。o,(SOURCES)))表示把文件列表中所有的。c,。cpp字符变成。o,形成一个新的文件列表,然后存入OBJS变量中。
  。o:。c
  (CC)(CFLAGS)clt;o
  。o:。cpp
  (XX)(CFLAGS)clt;o
  这几句命令表示把所有的。c,。cpp编译成。o文件。
  这里有三个比较有用的内部变量。扩展成当前规则的目的文件名,lt;扩展成依靠列表中的第一个依靠文件,而扩展成整个依靠的列表(除掉了里面所有重复的文件名)。
  chmodax(TARGET)表示把helloworld强制变成可执行文件。

Forest声明式HTTP客户端框架背景说明项目间互调RestFul接口时,需要写一堆代码,就算封装工具后也不轻松,尤其涉及到不同项目的权限问题,不同项目对外的权限认证不统一,有的是token认证,有的是密……外媒应用务实令中国机器人优势显现来源:经济参考报全球工业机器人应用需求在新冠疫情期间持续扩大。外媒近期纷纷表示,中国企业拥有在细分场景的解决方案,不仅成为近期机器人领域的亮点,还有望在全球市场竞争中占据……九州斛珠夫人结局,斛珠夫人汤乾自是好人吗奇幻剧《斛珠夫人》给带来九州大陆上的大徵王朝朝堂跟后宫当中有帝旭和权臣方诸,带上奇女子海市之间发生繁复杂的权利斗争,来去守护和平,期间有汤乾自做为好人出现,最后缇兰生下小皇子,……斛珠夫人鞠七七是什么人,斛珠夫人鞠七七扮演者言情剧《斛珠夫人》提前进行铺设好鞠七七的角色人设,并把做宫中绫锦司和精通盲绣的典衣,且主管线报的密探头目,而剧情中由曾泳醍扮演者鞠七七的人物来给观众带来很精彩的表演。1斛……斛珠夫人方卓英的真实身份,斛珠夫人方卓英的饰演者斛珠夫人说出很多人清楚,可斛珠夫人剧中方卓英存在什么样的真实身份,很多网友就想去了解一下有关的故事,看斛珠夫人剧情的方卓英身份先给隐藏起来,过后暴露显得情节很有趣,但有的网友就……斛珠夫人缇兰难产第几集,斛珠夫人缇兰扮演者斛珠夫人说出很多人清楚,可斛珠夫人剧情中缇兰难产发生在第几集,很多网友就想去了解一下有关的故事,看斛珠夫人提前把缇兰难产情节给做好铺垫,往后剧情给精彩的展现眼前,但有的网友就不……斛珠夫人帝旭喜欢谁,斛珠夫人帝旭扮演者斛珠夫人说出很多人清楚,可斛珠夫人剧情中帝旭到底是喜欢谁,很多网友就想去了解一下有关的故事,看斛珠夫人情节提前铺垫好帝旭喜欢人,不过初期没有多么明显,过后给展现出来,但有的网友……猫和老鼠导演活了多少岁,猫和老鼠电影有几部猫和老鼠说出来就有很多人熟悉,可猫和老鼠动画的导演到底活了多少岁,很多网友就不清楚,想去了解一下有关经典之作的导演到底经历了什么故事才活了多少岁,但有的网友就不清楚猫和老鼠到底……鸿蒙系统一经发布立即上交国家,华为格局大啊昨晚八点,备受关注的华为鸿蒙操作系统正式面向消费者发布,它也将正式搭载到手机、平板电脑,甚至豆浆机、烤箱等家电设备上。根据测试用户的反馈,这个系统支持几乎所有的安卓软件,……斗破苍穹播出时间曝光在哪个台什么时候播出斗破苍穹播出时间曝光:在哪个台什么时候播出电视剧《斗破苍穹》什么时候播出?在哪个台播?电视剧《斗破苍穹》定档啦,斗破苍穹电视剧什么时候播出?电视剧《斗破苍穹》由吴磊主演,……60部经典华语电影推荐国人一定要看的好电影60部经典华语电影推荐不要再说国产没好片:经典华语电影1。《活着》这个背人的桥段每次看的时候都觉得很神奇小儿子被压死了,巩俐喊叫着从远处跑来,却被人拦住看不到……攀登者预售破亿吴京和张译谁才是真正的影帝近日,在离国庆还有3天时间的时候,在国庆献礼大片《我和我的祖国》宣布预售票房破亿之后,电影《攀登者》也紧随其后,预售票房也破亿了。在这两部电影中,都有吴京和张译的参演,这次他们……
好看的韩剧电视剧推荐几部一秒都不舍得暂停的6部韩剧韩国发展的一直很好,在国内还没有限制韩剧的时候,很多人都在追韩剧,即便是国内不再引进韩剧了,但是大家还是在网上找韩剧资源,有没有好看的韩剧电视剧推荐几部?下面给大家推荐一秒都不……2021韩剧追剧排行榜前十名第一名你一定喜欢相信很多网友会和小编一样,特别喜欢看韩剧,有多经典的韩剧相信大家都是看过的,那么,2021年韩剧追剧排行榜前十名都有哪几部你?其中第一名你一定喜欢,一起看一下。12021韩剧追……韩剧女神降临剧情讲述了什么女神降临好看吗评价如何女神降临这个韩剧最近正在热播,那么,韩剧女神降临剧情讲述了什么呢?还有很多人想知道女神降临好看吗评价如何?接下来昕薇网小编为揭晓一起去了解下吧。1韩剧女神降临剧情讲述了什么……世界500强企业中国排名第一,含金量有多高500强近日,2021年《财富》世界500强企业排行榜发布500企业国家排名中国大陆(不含中国台湾)以135家排名第一,美国以122家位居第二,日本以53家排……有没有2000元左右的华为手机推荐?华为今年的出货量已经超过两亿部,成为了全球第二大手机厂商。随着华为的走红,许多人都想买一部华为手机尝尝鲜,但就题主的预算2000元,我可能要给你泼点冷水,这个价格就不要考虑华为……10部韩剧必看韩剧排名我在追的韩剧推荐说到韩剧,女孩子观看的在多说,像《太阳的后裔》、《请回答1988》、《花样男子》等,红遍中国的韩剧,那么接下来本文推荐10部韩剧必看韩剧排名,且都是我在追的韩剧,一起去看看有你……虐心催泪十大韩剧看一部苦一次的韩国电视剧虐心催泪十大韩剧:看一部苦一次的韩国电视剧在韩剧里,有很多虐心韩剧也非常经典,来看看,韩剧网最新韩国电视剧,十大虐心韩剧排行榜,近年来最虐心好看的韩剧有哪些?NO。……用TCL98ampamp39ampamp39IMAX巨幕智屏大家有没有发现,我们在选购电视的时候往往都容易陷入一个误区。就是买电视喜欢买刚刚够用的,等到感觉小了再换大一点的,比如七八年前买55英寸的电视,用个三五年换65英寸的电视,再用……剪刀门敞篷!名爵MGCyberster正式开始量产立项在今年4月份初,上汽名爵在战略发布上正式推出了Cyber全新子品牌,名爵旗下拥有潮系列和Cyber系列共两个系列。同时,名爵还公布了Cyber系列的首款概念车Cybers……华为nova9系列将成双11新爆款?好评如潮的原因在这里华为nova9系列自开售以来就在线上线下持续热销,并且在各电商平台都好评如潮。今年双11即将到来,华为商城及各大平台华为官方旗舰店也已经进入双11节奏,为用户带来不少的福利,其……你买我推荐,我买我不买,斯巴鲁森林人你们到底在嫌弃什么文车魔王原创有些车,从一开始就是为了大多数人而生,当你不知道该买一部什么样的车时,那买它绝对是不会出错的选择。也有些车,它的魅力实在过于独特,以至于不懂它的人,会对其嗤之……流金岁月莉莉安和谁结婚了,流金岁月莉莉安扮演者爱情剧《流金岁月》给展现莉莉安为一个配角在戏中,来促使感情线有新的发展,众多网友感觉进行最后莉莉安能选择一个人走到一起,真实状态为郭泱扮演的莉莉安没有选择任何人去结婚。1……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网