红联Linux门户
Linux帮助

如何成为一个linux开发人员

发布时间:2008-08-24 21:28:38来源:红联作者:basiozwq
(作者:yuqilin1012)当前linux作为server, database服务器,开发平台,嵌入式实时OS的作用都随着平台的发展, 越来越成熟, 产品的使用度也越来越高, 掌握linux作为application开发,嵌入式开发都成为优秀开发人员攻克的技术之一.

首先,程序员要了解在linux下的几个之最:

最有用开发语言: C/C++
最流行的工具集: gtk/gdk,qt/e
最好的可视化开发工具: glade,designer,kdeveloper
最cool的代码阅读工具: source navigator
最普及的调试工具: gdb, ddd , anjuta
最高级(主要指价格高级)的程序跟踪工具: BDM,ICE
最强大的开发平台: Redhat linux 6~8, Turbolinux 6~7,Hard Hat linux(HHL), Blue cat linux
最快但最年青(年青就是不成熟,吃不得)的图形:nano-X,microwindows,minigui

部分名词的意思:
gtk/gdk: 做 GIMP(linux很有名的图象处理软件的工具集
qt: trollteck公司的产品,有qt/x11跟qt/embedd
glade: 开发gtk/gdk程序的图形工具,能完成界面的编辑(这比用VI做界面好10^n 倍,本人曾经用vi 以每天2000行程序的速度写过gtk的应用,整整写了一个月,后来用glade用重来,一周就完成了)
anjut: 非常方便,功能强大的调试工具,程序出错不用再一行行试了,用它一目了然。
designer: 开发qt/x11程序的图形工具,能完成界面的编辑,也可以开发qt/embedded的程序
kdeveloper: 类似VC一样,功能强大
source navigator: redhat公司出的代码阅读器,supper cool.
microwindows: win32接口GUI,又小又快,用于PDA
nano-X: 多任务的microwindows
miniGUI: 类似上面两种图形,国产的,虽然我没用过,但基于支持国产软件的原则,我想绝对比nano-X及microwindows好。

知道了如上的一些东西,我们就可以决定开发的方向了:
1. 对于C程序员 C + gtk/gdk + glade +anjuta+ 中文turbolinux
2. 对于C++程序员 C++ + qt/x11 + designer + kdeveloper + anjuta+中文turbolinux
3. embedded程序员 c/c++ + qt/embedded + gtk+ HHL
4. embedded爱好者 c/c++ + microwindows + HHL

我们Step by Step,只要肯下苦功钻研Linux,按照这条路走一定可以成为优秀的Linux开发人员。这个开发途径不一定是最好的,但肯定是一条正道,也是目前 Linux的潮流所在,是我多年开发Linux及做Linux项目的经验总结,出于对中国Linux事业的极大热情,愿意奉献出来与大家共享。

Step 1: 掌握Linux的安装运行方法,包括:
a. 从CDROM直接安装Linux
b. 用fdisk或pqmagic的协助手工分区安装Linux
c. 硬盘上本身有Linux,但不能启动,要懂得使用软盘或CDROM恢复Linux系统
d. 使用vpc或vmware等工具安装启动Linux
e. 在dos/windows下安装Linux,使用loadlin来启动系统
f. 通过网络无盘来启动Linux,其实这个原理很简单,只要懂上面所说的loadlin使用,无盘启动Linux系统和无盘启动dos做法一模一样。

Step 2: 掌握Linux的运行原理,Linux系统启动的标准流程:
Bios ->Lilo/Grub->Kernel->/sbin/init(init等于是一个批处理,它将从/etc/inittab读取将要运行的指令,因此我们可以自己写这个批处理,往后要运行什么都可以自己控制)->login-> /usr/X11R6/bin/startx

Step 3: 掌握Linux的常用命令,命令列表请查阅Tomlinux文档"Linux开发常用命令"

Step 4: 了解Linux专业名词及开发资源,请查阅Tomlinux文档"嵌入式Linux名词及资源"

Step 5: 如果从step1到step4你都掌握或比较熟悉,那么进行嵌入式Linux开发的基础就算扎实了,接下来考虑的是开发的方向,一般是从X86的开发开始,进行X86开发的最佳组合为:
a . Kernel 使用最终稳定版而非最新版进行裁减,如果功能可达到,甚至可以退回到更旧的稳定版,旧版kernel可以做得更小更快。
b. bash和常用命令集要使用busybox而不是使用标准的
c. 如果存储空间足够,lib可使用标准libc,对于存储空间紧张的使用uClibc
d. 图形系统使用Tinyx
e. 窗口系统使用icewm
f. 开发选用语言,个人认为使用C/C++是主力,其它只能作为辅助
g .图形应用选用免费而又非常优秀的GTK工具集,可以在其图形开发环境galde和anjuta、SNavigator的配合下进行,这个组合简直是黄金搭档,我自己觉得这加起来比vb/vc还好用。当然另一个不错的选择是使用QT工具集,可配置Designer、Kdeveloper来使用。
h. 开发字符应用可使用ncurses辅助,开发无图形服务器的系统可使用直接写屏framebuffer方式或SDL、QT/E方式
i. 发行时选用的存储器一般是DOC或者DOM而不使用HD

根据上面的组合开发出来的系统,装到8M的DOC/DOM上完全没有问题,如果是以没有图形服务器方式h.进行的,最小1M的DOC就够了。

Step 6: 掌握X86的开发方法后,在其它平台上进行开发也是大同小异,所需更换的主要是引导方式,kernel、基本库及编译器等。这些东西在安装相应的开发包后即可解决,不要自己耗大量时间去进行,开发精力应放到产品级的开发上去,必竟中国目前的水平还没有到编译器这一类的级别。不同的平台及相关的Linux支援主查阅 Tomlinux文档"嵌入式CPU" 。

对于非X86平台的开发,经常会需对硬件进行分析,还需要使用硬件辅助除错,比如在ARM的开发中,ARM Debugger支持连接ICE(In-Circuit Emulator)到Remote进行调试,还可通过JTAG接个ICD调试,在PPC开发中则使用BDM去调。 这些设备都比较贵,如果公司里面有现成的,那么一定要积极去使用它,即使有时有其它的代替方法,因为这样才可以表现出你是一个高手高手高高手。如果没有就要看情况是否购买它了,不是必要的就尽量为公司节省费用才是好员工。

当你成为一个优秀的嵌入式Linux开发人员时,不要因此而满足,那怕你是技术最最强的一个,但在一个公司里不表示你是值钱的。只有那些有长远目光,有想法有创意的,能为公司赚到钱的才是最棒的,所以要多了解市场信息,多了解Linux的发展动向,争取写出killer application 为公司赚钱。这也是我一向在努力的,只是至今还没能力实现,希望大家一起努力,一个是为了赚到银子,更重要的为中国的Linux发展及至软件事业作出贡献。
文章评论

共有 6 条评论

  1. gudansinian 于 2008-10-29 20:32:53发表:

    写的很好,你当中也提到了glade和amjuta
    想问问,我的anjuta安装的2.24版本的调试功能不可用,一打开调试其进行调试anjuta就自动关闭
    问问这是撒回事?
    还有用galde或者anjuta在打开一个窗口的同时想启动一个线程,应该响应窗口的哪个信号
    我用的是pthread_create(...) 可以吗?不太会用thread_entry();

  2. victoria508 于 2008-08-29 16:05:01发表:

    写得非常好,学习中!

  3. office97 于 2008-08-28 19:51:33发表:

    这样的好贴值得一顶!:49ab:1

  4. 小白菜 于 2008-08-27 15:02:05发表:

    :0wmjh(1 很赞同

  5. linuxfc8 于 2008-08-26 12:18:54发表:

    受教受教

  6. wangyu 于 2008-08-24 21:57:46发表:

    经典