g++起步

来源:互联网 发布:typedef struct node 编辑:程序博客网 时间:2024/04/28 23:57

写在前面

本文是关于Linux下使用g++进行C++开发的一些个人不成熟的思考,这里仅作记录,给自己提个醒,如果能够帮助到类似于本人目前处境的同学,也是极好的。
项目需要,不得不着手C++程序开发。奈何C++基础本就不好的情况下,又是这么久没有任何的实际实践,更坑爹的是要在虽然操作熟悉、但开发习惯不在此处的 Linux 环境下直接写代码,阿西吧,感觉整个人都不好了。

OK,吐槽完毕,继续乖乖写代码。

g++ 起步及其他

思考

谈及Linux下的C++开发,必然会提及gccg++编译器,以及VimEmacs等等神一般的存在,感觉大神们都在使用如此高端顺手的工具进行开发,本人不才,看到后也是心生仰慕,不自觉的想要向大神们学习。然而几天的配置环境都已经折腾的够呛,后面的Vim使用真是不敢想象。

关于上面的神器,网上的介绍资料很多,自行查阅即可。

而结合本人实际情况,以及后面将要记录的小问题的突破过程,感觉还是要脚踏实地,即使是想要使用Vim也得有了一定的知识储备后再转换过来。从熟悉的知识引申、迁移到未知的知识,阻力会相应的小很多。当然,如果有大神带着,随时可以吸收实战派的一手经验,那可以忽略后面的扯淡部分了。

背景介绍

本人目前使用较多的开发工具是各种集成度较高的 IDE,主要语言是Java,因此对EclipseIntelliJ IDEA更熟悉,VS也简单的使用过一段时间。Linux系统还算熟悉,但是对Linux下的C++开发很不自信。两个 “陌生” 的属性叠加:不熟悉的开发环境 + 生疏的语言,对自信心很是考验。

个人思考

但其实问题也不是无解,个人觉得心虚的主要原因在于LinuxG++编译的各种命令不熟悉(-c、-o、-g),且没有高手指点,因此茫然无措。但是参阅官方文档等资料,还是可以解决的。虽然看官方文档很蛋疼。

关于工具

目前来说,备选工具为Linux下的g++Eclipse IDE for C/C++ Developers、最近不考虑的VimWindows下的Visual Studio,也可以包括各种轻量级编辑器,如sublime text 3VS Code等。排除短期内本人掌握不了的Vim和编译器g++,剩余的主要分为IDE和编辑器,关于如何取舍,个人认为文章 [1] 里讲的很有道理:

我认为应当使用正确的工具去做有价值的事情,并把效率最大化,所以我会用 Eclipse 编写 Java 项目,用 Vim 编写 Shell,用 Sublime Text 编写 JavaScript/HTML/Python,用 Visual Studio 编写 C#。

应当使用正确的工具去做有价值的事情,并把效率最大化,那么选择不言而喻。Linux下用sublime text 3写的一些C++小 Demo,发现效果并不理想,对个人编程素养要求较高,当然估计配合代码提示插件会好很多,但是何必呢。

综合考虑,sublime text 3不适合长期开发C++,偶尔打开个别文件调整某些简单错误,还是蛮适合的,当然替换Ubuntu的默认文档阅读器也是极好的。因此,最终选择项即为:命令行调用g++Linux下的Eclipse IDE for C/C++ DevelopersWindows下的Visual Studio这三种。

最终还真摸索出一条不是” 很完美” 的路,不过过程比较有意思。

具体操作

按照前人的建议,可以在WindowsVS中写好代码后将代码转移到Linux下,然后编译运行。
代码是通用的,不存在平台问题,因此选择VS写代码,借助其代码提示、代码格式化等功能,使用中会顺手很多。至于是选择Eclipse还是直接g++或者编写 makefile 文件,就看个人选择了。

问题描述

总体来说,最大的问题是对g++命令的不熟悉。那就只能是学习新知识,或者借力于成熟的 IDE 了。
关于参数,文章 [2] 很详细了,对比man g++查看到的信息,完全一致。可以查阅学习之。
如果是 IDE,简单粗暴,写代码,然后操作工具即可,不必了解 makefile 文件编写及g++命令。

摸索–> 方案

观察Eclipse编译代码时Console中的提示,会发现有g++命令出现,推测是Eclipse自己生成的语句,在Linux命令窗口中运行这些命令正确无误。bingo,跟着Eclipse提示走,g++操作命令够用了。
继续观察会发现,Eclipse建立项目时是有自己的 makefile 文件的,刚才的编译语句就在这里。bingo,问题又一次得到部分解决,心里感觉踏实多了。

到这里会发现,其实Eclipse扮演的是实战经验丰富的高手的角色,菜鸟本人观察高手的动作,然后学习提升自己。

“够用” 的g++命令

整理出现的g++命令,如下:
编译成. o 文件:

g++ -O2 -g -Wall -fmessage-length=0   -c -o Main.o Main.cpp

生成. out 文件:

g++ -o Main Main.o 

根据编译规则,只有发生变化的源码才会进行重新编译;如果. o 文件影响后续的. out 文件,也就是有依赖关系,则继续进行编译。
如果Eclipse中关于上面的命令没观察清楚的话,可以在菜单 Project 中 clean 后重新 build。

其实Eclipse也是根据 makefile 进行的操作,因此 makefile 的编写才是真正的关键所在。关于 makefile,文章 [3] 介绍的非常详细,时间充足的话非常推荐阅读学习。

小结及引申

一种 “不登大雅之堂” 的学习方法,不过算是 get 了新技能。而且学习的方式很有意思,mark 一下。

参考文章

  • [1] http://lucida.me/blog/sublime-text-complete-guide/
  • [2] http://linux.die.net/man/1/g++
  • [3] http://www.chinaunix.net/old_jh/23/408225.html
0 0
原创粉丝点击