红联Linux门户
Linux帮助

走进Linux编程的大门

发布时间:2006-04-16 00:46:05来源:红联作者:西西
  随着Linux的不断普及,使用Linux的人也越来越多了。然而在Linux中如何进行程序设计,用什么样的开发工具好呢?本文就以我初学Linux编程的一点心得体会,和大家共同探讨有关Linux编程的问题。

  Linux作为一个遵循GNU的操作系统,其源代码开放性已成为其最大的特点,我们可以方便地得到Linux系统及其应用软件的源代码。Linux编程也就是在这样的环境下对程序进行编写或修改工作的,学会了Linux编程,不但可以自己编写一些共享的小程序供大家使用,也可以对现有的软件进行一点修改,让它们更适合自己的口味。

  Linux下编程的工具很多,不同发行版本的Linux也提供了不同的开发工具,但是通常情况下都提供了在控制台终端下的C语言编译程序GCC。我们只要建立一个C语言源程序文件,比如hello.c,然后在终端下运行:gcc hello.c,系统便会自动对程序进行编译,如果没有出错的话,在当前目录生成a.out文件,否则显示出错提示。生成a.out后,我们只需在其所在目录键入 ./a.out就可以运行这个程序了。但是这样的文本命令方式的开发工作实在很不方便,所以现在许多发行版本的Linux都在X-Windows的图形界面下提供了集成开发环境,比如蓝点Linux的Kdevelop等等。这些集成环境不但为我们提供了一个良好的编程界面,也为编程工作提供了极大的方便。

  首次运行Kdevelop时系统会自动运行它的设置安装程序,这个程序将验证Kdevelop所必须的文件是否齐全,通过设置后就可以使用了。Kdevelop为我们在Linux下展现了一个类似于Visual C++的集成开发环境。在这个环境的左半边有CV、LFV、RFV等几个标签,分别表示了类列表、逻辑文件列表和实际文件列表,里面包含了整个工程所有的类和文件的概貌。开发环境的右半边则是文档显示区,用于显示源程序或帮助信息。




  下面我们就一起来使用Kdevelop开发两个小程序,试试Linux编程的感觉!

  我们先来尝试用它制作一个最简单最经典的“Hello world!”程序,它是在Linux的文本界面即终端中运行的,如同在初学C语言时开发的第一个程序----在DOS下运行的“Hello world!”一样。

  先打开“项目”菜单,选择“新建…”,在弹出的Application Wizard中选择“终端程序-C程序”并单击“下一页”。




  在向导的第二页中输入项目的名称等信息,然后把“生成源文件和头文件”前的勾去掉。




  如果不这样做的话,Application Wizard会自动生成一些源代码,碰巧还正是我们要做的“Hello world”程序,但我们为了说明问题,就不图这个方便了,一切自己做。最后单击“生成”按钮,等屏幕出现“Ready“信息后单击“退出” 按钮,我们的项目便生成了。

  接着我们就得输入源程序了。选择文件菜单中的“新建”命令,新建一个“C/C++程序”(我们的例子是C程序),系统自动按照Application Wizard中选定的文件头模板生成一个空文件。现在输入下面这段“经典”的程序,输入时一定要注意大小写。

引用:
#include
main()
{
printf("Hello world!\n");
}



  然后选择菜单或工具条中的“运行”命令。经过一段时间的编译,终端中就会输出“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的第一步中要选择“Qt程序-普通”。同样为了说明问题,在Wizard的第二步中,我们也把“生成源文件和头文件”前的勾去掉,我们自己来写程序。工程文件建好后,同样新建一个C/C++程序,并输入下面的源程序:

引用:
#include
#include
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!”按钮(如图5),并且这个窗口还可以移动、改变大小等等。不过这时“Hello world!”这个按钮还没有作用,点击它不会有任何效果。如何给Hello world编写一个事件响应的函数呢? 比如我们想让“Hello world”按钮被点击后程序结束运行,该如何做呢?

  在Qt库中,消息的响应是通过connect函数实现的。所以,我们只要在源程序中“a.setMainWidget(&hello)”前加上一行:”Qobject::connect( &hello, SIGNAL(clicked()), &a, SLOT(quit()) );”就可以了。这一行的意思就是把hello按钮的clicked事件与a程序的quit()函数连接起来。至此,相信你对Linux的编程已经有了一个感性的认识,是不是很有意思呢?

  另外,Kdevelop不但为我们提供了强大的开发环境,还给我们提供了详细的文档资料,包括“编程手册”、“KDE库”、“Qt库”等一系列文档。“Qt库”文档中还包含了一个14步教程,从头讲述Qt程序的设计方法,最后一讲与我们一起完成了一个完整的游戏程序,这可是Linux编程入门难得的好教材。

  以上是我初学Linux编程的一点心得和体会,拿出来和大家分享,有不当之处还请多多指教。
文章评论

共有 3 条评论

  1. shinelong 于 2012-03-17 16:36:23发表:

    路过 100

  2. honglianqxw123 于 2012-03-14 08:53:52发表:

    谢谢楼主,
    kdevelop开发,记住了。

  3. vccode 于 2006-04-20 18:22:11发表:

    我怎么按你的方法 不能够通过编译阿
    提示如下main.cpp:17:27: qapplication.h: 没有那个文件或目录
    main.cpp:17:27: qapplication.h: 没有那个文件或目录
    main.cpp:21: `Qapplication' undeclared (first use this function)
    main.cpp:21: (Each undeclared identifier is reported only once for each
    main.cpp:21: parse error before `(' token
    main.cpp:22: `Qpushbutton' undeclared (first use this function)
    main.cpp:23: `hello' undeclared (first use this function)
    main.cpp:24: `a' undeclared (first use this function)
    main.cpp:27:2: warning: no newline at end of file
    我是 刚刚才学习在Linux下开发应用程序请帮忙解决此问题