走进Linux编程的大门

以我本人初学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编程的一点心得和体会,拿出来和大家分享,有不当之处还请多指正。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据