解析Linux C/C++开发的难度到底在哪

如题所述

相对于Linux下的C/C++开发,在windows下的初学者往往容易入门,原因是visual studio, 这个强大的工具隐藏了很多的细节,好多人甚至以为拖拖控件,写写消息响应函数就是软件工程师了,这点在入门的时候尤为明显。但是在这个强大工具的背后,隐藏了太多的东西,其中许多对于我们来说是非常重要的东西,比如Make, debug, call stack, 汇编代码,OS,哪些功能是系统提供的,哪些是工具提供的。所以很多人转过来的时候往往去类比以前windows的知识,但是又对不上,再加上无人指点,工作不用,可能慢慢的就会失去信心。

但是我认为作为一个有追求的软件工程师,如果不了解Linux, 我不认为他合格。对于软件工程师而言Linux给了我们另一个选择,另一种思路,同时也提供了我们很多的轮子和一座宝库。

如下总结出一些建议,希望对学习Linux开发的朋友有所帮助。
1. 不要一开始就去搞内核,先装上系统用Linux来完成一些日常的事情,比如:看电影,拷贝文件,添加修改用户,文件,学学shell 脚本。
2. 试着用命令行去编译一些简单的代码,然后逐步增加难度,然后学学make。
3. 学习Linux的一些基础知识,找本书看看。
4. 尝试自己去写一些小的东西,动起手来,别总看书而不去实践,实践出真知。
5. 学习如何调试代码。
6. 学习主要的一些系统调用,文件操作,socket操作等等。
7. 学习简单的驱动开发,比如:串口驱动。
8. 学习内核源代码。

另外在此需要指出的是,当你真正看透了Windows和Linux的软件开发的时候,你可能并不觉得他们有很大的区别,所谓殊途同归,说的可能就是这个道理,比如这两个平台的代码最后都会转换为IA32架构的指令序列,在转换过程中使用了不同的工具,反出来的汇编代码区别也不是太大。
温馨提示:内容为网友见解,仅供参考
第1个回答  2014-10-28
主要是和Windows下开发的学习过程不一样,Windows下的IDE将所有的链接、库集成都坐在了看不见的地方,程序员只要写代码就好了,其他的事情有IDE操心。

我个人感觉最深的就是编译这个环节。在Windows的集成环境下,你只要点“Build”,所有的事情就结束了

Linux下一是全命令行,而且编译的编译器要自己安装,如果你有不同的头文件、库,还要自己操心链接的事情。为了这个事情,Linux有了make,automake,autoconf等等工具,每个都要学习

主要就是思路的转变,都学过来之后就会发现其实做的事情都是一样的,只不过Windows里的很多过程被忽略了(VS都帮你做了)本回答被提问者和网友采纳
第2个回答  2014-10-28
搞清库文件的位置,一堆编译参数的意思,就没难度了。

软件开发,做linux下的C语言有前途呢?还是做window下的c++,VC++,MFC之...
linux下的开发一般分为三种:1。linux服务端程序开发;做这个需要较深的积累和持续的新技术学习,上手容易,深入难,应用面有一点窄,如果能做到高级非常吃香,因为这样的开发都是一个持续服务性系统的基石,一般用c语言;再往上发展可以做架构师。2。linux嵌入式开发(包括底层驱动);目前应用比较多的linu...

C\/C++真的有那么难学吗?其实不然,无非是你没有找对方法罢了
C\/C++并非难以掌握的语言,关键在于找到合适的学习方法。随着互联网的推动,这门语言在后端服务器、移动应用开发、图形分析等领域发挥着重要作用。对于想要学习C\/C++的人来说,以下是逐步进阶的指南:首先,从初级入门开始,学习C语言的基础知识,包括数据类型、内存布局、指针等,以及C++的面向对象编程思想。

C语言和C++的区别,难易程度!
第一:C语言语法结构相对简单。C语言属于面向过程的编程语言,语言自身的语法结构比较清晰,而C++属于面向对象的编程语言,C++有较高层次的抽象(类、对象、封装、继承、多态等),所以在概念的理解上会有一定的难度。第二:C++与C语言之间有较强的继承关系。C++语言是一个在C语言基础之上发展起来的编程语...

LINUX下可以使用C++么?为什么说C++与linux文化相抵触?
一、Linux下不仅可以用C++,而且可以很好的用C++。Linux的著名桌面框架KDE就是用QT开发的,QT是C++的一个程序框架。只要有C++库和编译器就可以编写、编译C++程序,这个放心。二、出处:参见《unix编程艺术》对c++的批评。C++由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C++的编译系统...

为什么LINUX下编程很少用C++,而是用C更多
1)肯定可以的呀!2)只是Linux下的编程通常偏向效率,而明显C的效率明显要好于C++,但是C++的面相对象特性,对于布局\/架构代码也明显不是C可以做得到的。3)现在很多Linux下的开发工作主要就集中于服务器和嵌入式,都比较偏重于效率性,尤其嵌入式;但是对于服务器,个人觉得如果不是对效率要求非常严苛,...

C++和C在linux下编程和与在WINDOWS下有什么区别
我觉得学习而言并没有多大区别,Windows下有集成环境方便一点,Linux下用命令行加VIM更加高大上一点,工作中大部分都是Linux环境下开发因为很少有再windows下开发C++的需求,Windows下还不如用C

2013毕业工作两年多的c\/c++程序员的迷茫?
第一,尝试新的。题主说没做过界面编程,又说自己想做独立项目。那么一个完整的界面开发必不可少,为什么不去尝试写一写呢?QT、wxWidgets等等都是不错的界面开发库,你可以尝试去搭建这些环境,去写一点,说不定就会喜欢上。python,gtk等等等等,实在太多。第二,不要刻意去抉择C还是C++。语言的...

linux平台,c语言\/c++开发,vscode和clion哪个好?
在Linux平台上进行C或C++开发,选择使用VSCode还是CLion主要取决于你的预算和开发需求。对于那些预算充裕的开发者,CLion无疑是一个更专业的选择。它是由JetBrains公司开发的,专门针对C和C++语言设计的集成开发环境(IDE),提供了丰富的特性,如代码分析、调试、重构和版本控制集成等。CLion能够显著提升开发...

关于Linux下的C\/c++编程
就目前我所了解的和现在正在开发的具体开发有:服务器(网络方向)、pos机(网络+数据库)、KTV点唱系统、应急系统等。其实这些在其他系统上做也可以,只不过由于linux的开源和免费,并且可裁剪,所以很多厂商喜欢在linux平台上进行开发。建议你先学会C\/C++这门语言,无论在windows平台上学还是在linux上学都...

linux 下的c和 C++ 有什么区别 ?linux 不是主要以c开发为主吗???c++...
C是面向过程的语言,C++是面向对象的语言,跟做不做图形界面没什么关系 linux kernel是c语言的。至于应用程序,用C或者C++写随便你。

相似回答