话说Linux编程

文章来源:     发布时间:2013-03-01

一、引言
    随着嵌入式智能设备的广泛普及,开源易裁剪的Linux越来越引起我们众多研发人员的喜爱,那么如何才能从我们熟悉的windows环境下编程转到Linux下编程呢?在这里抛砖引玉,希望能给广大Linux
编程爱好者一个小小的启发。
    现在市场上主流的Linux操作系统有UbuntuFedoraOpenSUSEDebian等,这些发行版的Linux虽然在桌面系统上看起来很像,但是在一些细节上还是有所不同。Ubuntu很容易安装,也方便使用,它适合Linux新手初次接触Linux时使用。Fedora在系统层的开源上做的更好,与此同时它要求使用者至少要具备一定的基础,它对设备的硬件配置要求很低,运行速度很快,适合低功耗的操作系统应用。OpenSUSE在桌面系统设计上更接近WindowsXP,它的一个控制面板能完成各种系统设置和配置功能,它可以很轻松的安装Adobe FlashWindows Media和其他各类多媒体软件,娱乐功能十分丰富,界面也很华丽,适合家庭娱乐使用。至于DebianUbuntu系统就是在Debian上发展起来的,与Ubuntu相比,Debian更加稳定,但是汉化上没有Ubuntu做的好。综上所述,推荐使用Ubuntu
作为入门使用的选择。
    回到编程的话题上,我们在windows下开发,使用过微软的开发工具像VC6VS.NET等在Linux下就没用了,我们首先要选一款编程用的工具,也许有人会推荐viemacs,但是对于笔者来说,推荐Code::Blocks。它是一款开源、免费的跨平台的C++ IDE平台。支持语法彩色提示和代码完成,集成了图形界面库wxWidgets。它的运行速度比Eclipse快了很多。当然其他的IDE还有AnjutaQT
等。
二、如何设计一个简单的Linux
用户层程序
    打开Code::Blocks(以下简称cb),创建一个控制台应用程序,经过简单配置后,自动生成了main.cpp代码,在代码中我们可以看到工程向导自动为我们生成了最简单的helloworld示例代码。对此我们以这个示例代码为例介绍linux
程序。
       #include <iostream>
       using namespace std;
       int main()
       {
       cout << “Hello world!” << endl;
       return 0;
       }
        在上面的代码中,我们看到这就是一个使用了C++标准库的单纯控制台程序,std是标准库的名字,cout为控制台终端,endl输出一个回车符。写好了这个程序后,我们下一步就要编译我们的程序,使用快捷键Ctrl+F9对工程进行编译,当编译通过后,我们通过快捷键Ctrl+F10来运行我们的程序,随即我们在弹出的控制台窗口中看到了Hello world!
字样,表示程序成功运行。
    对于我们的可执行程序,我们可以选择tar打包发布,也可以使用rpm
制作安装包,此处不再累述。
三、
如何管理好我们的源代码
    对于我们辛辛苦苦写的源代码,一定要多加备份和管理,对此,ubuntu提供了svn工具,方便我们对工程源码进行登入、登出、修改和提交。在shell控制台下输入sudo apt-get install subversion 安装SVN工具,它可以保存任何时刻的版本代码,方便我们对程序进行管理,还可以比较出新旧版本代码的不同之处,方便我们使用patch
工具给客户发布软件升级补丁。
四、Linux
高级开发介绍
    由于Linux分为核心层和用户层两个层面,我们上面的那个程序就是运行在用户层的应用程序,有时我们需要让Linux
运行一些更底层更实时的程序时,我们就要在内核中进行开发。
    开发一个内核应用程序就和windows下设计一个动态链接库类似,我们要编写模块的初始化、执行和释放的代码,设计任务执行的线程处理,考虑到核心层和用户层的数据交换,数据保护和实时处理,模块设计好以后,通过insmod 加载模块,通过rmmod
卸载模块就可以完成对模块的调用了。
        Linux是一个开源的平台,正是得益于它的开源特性,我们才能在使用基于其上的各种开源产品来设计我们的产品,而且由于我们的开发设计,Linux平台应用又更加壮大,对于我们设计人员来说,有什么能比我们的产品有健壮性和生命力更令人开心的事呢!