走进Linux编程的大门

转载 2004年06月24日 00:52:00

以我本人初学Linux编程的一点心得体会与大家分享。发表于《电脑爱好者》2001年第5期。以我现在的眼光看,这篇文章可真是不值得一提!

====


  随着Linux的不断普及,使用Linux的人也越来越多,其中不乏编程爱好者。但他们中间不少人刚学会了Linux的基本操作,对编程这一技术活还心存疑惑:在Linux中如何进行程序设计,用什么样的开发工具?本文就以我初学Linux编程的一点心得体会和大家共同探讨有关Linux编程的问题。
  Linux作为一个免费的操作系统,其源码开放性已成为其最大的特点,我们可以方便的得到Linux系统及其应用软件的源代码,Linux编程也就是在这样的环境下进行的对程序的编写或修改的工作,学会了Linux编程,不但可以自己编写一些共享的小程序供大家使用,也可以对现有的软件进行一点修改,让它们更适合自己的口味。
  Linux下编程的工具很多,不同版本的Linux也提供了不同的开发工具,常用的语言一般主要是C/C++,通常情况下Linux都提供了在控制台终端下的C语言编译程序GCC。我们只要建立一个C语言源程序文件,比如hello.c,然后在终端下运行:gcc hello.c,系统便会自动对程序进行编译,如果没有出错的话,在当前目录生成a.out文件,否则显示出错提示。生成a.out后,我们只需在其所在目录键入 ./a.out就可以运行这个程序。但是这样的文本命令方式的开发工作实在很不方便,所以现在不少版本的Linux都在X-Windows图形界面下为我们提供了集成开发环境,比如蓝点Linux环境下的KDevelop等等,这些集成环境不但为我们提供了一个良好的编程界面,也为编程工作提供了极大的使利。
  首次运行KDevelop时,系统会自动运行KDevelop设置安装程序,这个程序将验证正常运行KDevelop所必的文件是否齐全,通过设置后,我们就可以开始使用它了。KDevelop为我们在Linux下展现了一个类似于Visual C++的集成开发环境(见图一)。在这个环境的左半边有CV、LFV、RFV等几个标签,分别表示了类列表、逻辑文件列表和实际文件列表,里面保含了整个工程的所有的类和文件的概貌。开发环境的  右半边则是文档显示区,用于显示源程序或是帮助信息。
  下面我们就一起来使用这个开发工具来开发两个小程序,试试走进Linux编程的感觉。
  我们先来尝试用它来制作一个最简单最经典的“Hello World!”程序,它是在Linux的文本界面即终端中运行的,如同在初学C语言时开发的第一个程序--在DOS下运行的“Hello World!”一样。
  先打开“项目”菜单,选择“新建...”,在弹出的Application Wizard中选择“终端程序-C程序”(如果您熟悉使用C++程序的话可在此选C++程序,不过后面的程序清单就得修改修了),并单击“下一步”(见图二)。在向导的第二页中输入项目的名称等信息,然后把“生成源文件和头文件”前的勾去掉(见图三)。如果不是这样做的话,Application Wizard会自动生成一些源代码,碰巧还正是我们要做的“Hello World”程序,但我们为了说明问题,就不图这个方便了,我们自己做。单击“生成”按钮,稍等一会儿,等屏幕出现READY后,单击“退出” 按钮,我们的项目便生成了。
  接着,我们就得录入源程序了。选择文件菜单中的“新建”命令,新建一个“C/C++程序”(我们的例子是C程序),系统自动按照Application Wizard中选定的文件头模板生成了一个空文件,我们就将把下面的程序输入这个文件,输入时要注意大小写,C语言对字母大小写敏感的:
  #include <stdio.h>
  main()
  {
    printf("Hello World!/n");
  }
  学过C语言的朋友一定对这段代码感到很熟悉,这的确是一个经典的程序,几乎所有C语言的入门书上都有它。
  然后,我们选择菜单或工具条中的“运行”命令,执行这个程序,经过一段时间的编译,程序运行结果就出现在终端中,输出了“Hello world!” 这句话。
  别看这个程序很简单,但它确实是我们在Linux环境下做的第一个程序。Linux下的C和ANSI C是完全兼容的,对于学过C程序设计的朋友不能不说是个好消息。您是不是已经对Linux编程产生了很大的兴趣呢?
  不过,这个程序实在太简单了,能不能做一个在X-Window下运行的图形程序呢?做这样的程序很困难吗?别急,跟我一起来试一试。
要编写图形程序,一个优秀的开发包是必不可少的。如同在VC++中的MFC类库,KDevelop为Linux下编程提供了功能强大的Qt库和KDE库,用它们都可以方便的编写X-Window下的 KDE图形界面程序。除此之外,KDevelop还提供了“对话框编辑器”等一系列实用的工具使开发图形程序变得更方便。
  同上面一样,我们一起来开发一个X-Window下的图形版“Hello World”程序。我们选择使用比较简单的Qt库来写我们的程序,一起来体验一下这个强大而又易用的开发包。
  第一步还是建立工程文件,方法和前面建立终端程序的工程文件类似,不同的是在Application Wizard的第一步中不再是选择“终端程序-C程序”,而是选择“Qt程序-普通”,同样的,为了说明问题,在Wizard的第二步中,我们也把“生成源文件和头文件”选择前的勾去掉, 我们自己来写程序。工程建好后,我们就可以写程序了,同上面一样,我们新建一个C/C++程序,并输入下面的源程序:
  #include <qapplication.h>
  #include <qpushbutton.h>
  int main( int argc, char **argv )
  {
    QApplication a( argc, argv );
    QPushButton hello( "Hello World!" );
    hello.resize( 100, 30 );
    a.setMainWidget( &hello );
    hello.show();
    return a.exec();
  }
  与前面的C程序相比,这个程序要复杂的多,不过不要紧,我们一行行进行分析。
  程序前两行调用了两个头文件,其中qapplication.h是建立一个Qt程序所需的最基本的库,任何Qt程序都要用到它。由于我们打算用一个按钮来显示“Hello world!”的文字,所以还要包含qpushbutton.h这个头文件。
  主程序第一句建立了一个名为a的Qt程序,并把命令行参数传递给它。第二行建立了一个名为hello的按钮,它的标题为“Hello World!”,这就实现了我们要在屏幕上显示“Hello world!”文字的愿望。第三行使用PushButton的resize方法改变了这个hello按钮的大小。第四行设置了a程序的主控件为这个hello按钮(Widget这个词可以翻译为控件)。由于在Qt库做程序时,新建控件默认是不显示的,所以在第五行要用show方法把hello按钮显示出来。程序最后一行返回了a程序的运行返回值。
  这么一解释,这个程序也就显得不是很困难了。怎么样,与VC++中的MFC类库相比,Qt库有过之而无不及吧。
  下面我们就可以运行程序了,单击工具栏上的“运行”按钮,通过编译就可以了。程序运行后,屏幕上将出现一个小窗口,里面一个“Hello World!”按钮,它占满了整个窗口(这是由于它是此程序的主控件的原因),并且这个窗口还可以移动、改变大小等等。不过这时“Hello World!”这个按钮还没有作用,点击它不会有任何效果。如何给Hello World编写一个事件响应的函数呢? 比如我们想让“Hello   World”按钮被点击后程序结束运行该如何做呢?
  在Qt库中,消息的响应是通过connect函数实现的。所以,很简单的,我们只要在源程序中“a.setMainWidget(&hello)”前加上一行:
  QObject::connect( &hello, SIGNAL(clicked()), &a, SLOT(quit()) );
  就可以了。这一行的意思就是把hello按钮的clicked事件与a程序的quit()函数连接起来。
  至此,相信您对Linux的编程已经有了一个感性的认识吧!是不是很有意思呢,经过一通时间的学习,您一定会喜欢上Linux编程的。
  另外,KDevelop不但为我们提供了强大开发环境,还给我们提供了详实的文档资料,包括了“编程手册”、“KDE库”、“Qt库”等一系列的文档,“Qt库”文档中还包含了一个14步教程,从头讲述Qt程序设计方法,最后一讲与我们一起完成了一个完整的游戏程序,是Linux编程入门难得的好教材。以上这些资料,都是学习Linux程序设计必不可少的优秀的参考资料,大家应当尽量用好它们。
  以上都是我初学Linux编程的一点心得和体会,拿出来和大家分享,有不当之处还请多指正。

走进Linux编程的大门

...
  • jiangxinyu
  • jiangxinyu
  • 2007年11月06日 09:32
  • 1298

走进编程世界的大门

编程,这个对我来说有些陌生的领域,待我来慢慢撕开你神秘的面纱!
  • fmflb
  • fmflb
  • 2017年07月22日 09:56
  • 100

走进程序世界

前言 当我写这篇文章的时候,2012年已经开始10天了,貌似世界依然是静悄悄的,没有玛雅人预言的那些大风大浪。 然而,即使很平静,也是对于整体的形态而言,事实上世界几乎每分每秒都在发生变化。而对这...
  • IChuans
  • IChuans
  • 2012年01月10日 21:56
  • 565

Linux如何走进学校大门?

     如今,中小学里面几乎全是XP学生,蹦蹦跳跳,Linux(挤)进学校几乎无门。那么,我们该怎么办呢?能否不破而立?      昨天上午,我去北京市有关部门见一位老朋友,想谈谈这个问题。当前,在...
  • yuanmeng001
  • yuanmeng001
  • 2010年02月24日 06:56
  • 1736

走进ReactiveCocoa的大门

RAC的核心是RACSignal(信号) RACSignal: 就 RAC 来说是构造单元. 它代表我们最终将要收到的信息. 当你能将未来某时刻收到的消息具体表示出来时,...
  • JSON_6
  • JSON_6
  • 2016年08月25日 10:05
  • 364

走进Webpack大门

什么是Webpack?    本质上,webpack 是一个现代 JavaScript 应用程序的静态模块打包器(module bundler)。当 webpack 处理应用程序时,它会递归地构建一个...
  • huxiy1995
  • huxiy1995
  • 2018年01月17日 20:24
  • 21

走进ajax大门---基础

AJAX 指异步 JavaScript 及 XML(Asynchronous JavaScript And XML)。您应当具备的基础知识在继续学习之前,您需要对下面的知识有基本的了解:HTML / ...
  • guoqingcun
  • guoqingcun
  • 2010年04月14日 16:59
  • 296

黑马程序员-走进JAVA的大门

---------------------- ASP.Net+Android+IOS开发、.Net培训、期待与您交流! ---------------------- 1.JAVA Java是由Su...
  • u013020605
  • u013020605
  • 2013年12月07日 00:26
  • 246

走进大门的173dmba飞鸽

走进大门的173dmba飞鸽,而兔子家族的人呢,高兴极了,弟弟看中了超市的一个小玩具,但是它吐出来芬芳的香气在校门口就能闻的到,``,我去买东西,微风习习,弟弟的173dmba飞鸽眼珠一转,当我的手轻...
  • mynote
  • mynote
  • 2013年09月08日 21:15
  • 716

转瞬间,linux 3.0时代到来了!

为了调试ext3文件系统,登陆www.kernel.org下载内核代码。突然间发现2011-7-22 linux3.0版本已经可以下载了。这种感觉是五味杂陈,新老更替本就是这个世界不变的法则,这其中也...
  • yandongkm
  • yandongkm
  • 2011年07月27日 23:11
  • 448
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:走进Linux编程的大门
举报原因:
原因补充:

(最多只允许输入30个字)