万博maxbetx官网网页登录最近做一个wsn研究

当前位置:万博maxbetx官网网页登录 > 万博maxbetx官网网页登录 > 万博maxbetx官网网页登录最近做一个wsn研究
作者: 万博maxbetx官网网页登录|来源: http://www.italy-seek.com|栏目:万博maxbetx官网网页登录

文章关键词:万博maxbetx官网网页登录,相比率

  我一个CUDA程序,在Mac下开发,linux-sever下调试,运行在tegra tk1,我也想直接用ide啊(首先你需要一个不是eclipse改版的适合人类使用的cuda开发ide)。

  没办法,选择有二,手写makefile或者cmake,于是我发现cmake+nvcc+clang的工具链在生成dynamic lib的时候在mac下有一个不大不小的bug折腾了我一晚上…最后改了cmake生成的link文件了事。

  而且你们要知道,cuda在mac下默认是没有arm-cross编译功能的。当然你可以自己替换host compiler…但是这一切在ide(诸如clion xcode)设置起来简直作死,尤其是xcode打开make工程都不给分析源码。我还是cmake/make+vim+cscope吧

  再有我们的无人机飞控系统基于pixhawk开发,这货的操作系统是一个叫nuttx的家伙……想用整套ide…先自己去织一套cross工具链吧。

  目前VS的很多功能,其实就连自家Windows上,也没做好,比如远程调试。所以,Win+VS都有没做好的地方,更何况Linux + 渣渣IDE环境。那些找不到IDE的,或者有Bug的,或者根本无法使用IDE的,没办法,才Makefile。

  我开始做后台开发的的时候就觉得Linux的shell编程和makefile就是两大傻,人生苦短啊,然后就去找了他们的替代品Python和cmake,后来被人问说不写makefile不知道编译连接的过程,我就呵呵了,之前我已经做客户端编程几年,vs编译输出窗口里面,过程写清清楚楚

  看上去会写Makefile的人越来越少了,实际上一套简单的Makefile就类似于一个库,是很容易重用的。像OpenWRT的build系统这种过度使用Makefile的可能不多,但是像*BSD系统那样提供一些常用模板是很常见的。

  # $NetBSD: Makefile,v 1.15 1997/10/18 15:31:20 lukem Exp $

  # from: @(#)Makefile 8.2 (Berkeley) 4/3/94

  # Uncomment the following to provide defaults for gate-ftp operation

  #CFLAGS+=-DGATE_SERVER=\ftp-gw.host\ # -DGATE_PORT=21

  cmds.c cmdtab.c complete.c domacro.c fetch.c ftp.c main.c

  这是/usr/bin/ftp的Makefile,注意里面的include,都是使用的现有的模板。至于autoconf那一套,在很多人眼中是只有不会写Makefile的人才会用的。

  Makefile 手写路过 ,感觉非常简单。Makefile 原则很简单 依赖什么 有没有 有就不管,没有啊,那就有没有生成步骤,推导到都有了就结束了。

  其实IDE在实现上也用的是makefile,只不过做了其他优化,使其更加方便。

  学makefile确实帮助你理解编译过程,更重要的是在linux下,很多时候你找不到合适的IDE,尤其是嵌入式软件开发时。

  可以试试 xmake 。。比起直接写makefile 简单多了。。而且跨平台。。基于Lua,灵活方便

  VS 里面集成了类似 make 的 nmake,VS作为集成开发环境,功能肯定是更多更方便的

  开发效率大部分情况是 VS 比 makefile 高,因为用 VS 可以忽略很多无关的细节。

  熟练了以后在小项目里面其实也不太 care 写不写 makefile,因为通常情况下自己备有通用的模板,而且对规则也熟练了所以花不了多少时间。

  看起来 VS 完胜,那么VS 的缺点在哪?庞大,复杂,占内存!Makefile (或者说通过终端开发)小而美,很容易控制更多的细节,做更多的定制化,版本控制前面也提到了。

  我在家里一台用了七八年的机器ssh连上一个512M内存的虚拟机两边都跑的很欢。VS还是算了。。。而且有时候我就想写个简单的 demo,也许 VS 启动的时间我已经在 VIM 里面把代码写完了。极简也是一种高效。

  你去看本书吧,make gnu项目管理,虽然我还在看,感觉思想很好,只要自己有一个规范,后期项目重用一个就好,最近做一个wsn研究,遇到这样一个问题,利用别人给你写好makefile去向传感器结点烧程序时(make 会调东西),老是不能下载,开始考虑平台兼容问题,后来下了狠心,将整个makefile工程看了一边,有些东西明显是autotools做不了的,当然也可能是我的水平比较低,万博maxbetx官网网页登录我前些阶段,看了些autotools书,auto tools也有很多使用限制,好的make file可以将项目每一模块功能部分分的清楚(当然你makefile水平要高),如果重新在这个软件平台的话,项目可能就只是改改项目名,填几个文件罢了,好吧,接着说我那个研究,很多使用这个实验用的软件系统的人,并不看make file,于是就提出各种方法,如果你真懂make file的,就是简单的改改几个文件的权限就好,make file的语法有点怪,但真的很有学习价值

  其实VS用的也是make,不过微软的make叫做nmake,如果你看过他的makefile会发现跟gnu的makefile很像,而实际上这东西都是从gnu的抄过来的啊。

  效率高不高关键看makefile写的好不好,万博maxbetx官网网页登录gnu的makefile写好了可以进行差量编译,并行编译。修改哪个编哪个。不仅速度快,计算资源还少。

  VS的话,其实也能实现,最终实现的都是用的make。效率高不高,现在来看编译器似乎占的比重更大些,尤其是c++编译器,差距很大。

  有多少大项目是手写makefile的。。单纯手写makefile去建一个 build system只能说他厉害了。。。OpenCV用的是cmake,在Linux上会自动生成makefile。万博maxbetx官网网页登录Android有自己的Android.mk,而Android.mk本身就很像BSD make或者叫pmake。

网友评论

我的2016年度评论盘点
还没有评论,快来抢沙发吧!