Loading
新闻中心库存中心价格中心PDF中心图片中心
ICGLE 电子技术支持中心,为电气人员和相关企业提供全面的信息(IC技术\IC库存\IC图片\PDF资料等)服务
总线设计PCB设计单片机DSPARM
JAVA驱动设计C/C++汇编J2EE网络协议中间件技术嵌入式系统无线通信通信网络模拟技术接口电路显示光电传感与控制EDA/PLD
气流体控制电子产品电机及工具通信设备仪器仪表电线电缆建筑电气低压电器高压电器电源工控自动化广电设备医疗器械More..
电源设计仪器仪表技术专递电路图片电子专栏储存技术汽车电子测量测试音响技术家用电器
成功方案市场分析行业标准应用前沿芯片应用综合专区
Linux系统下搭建C/C++开发的IDE环境
来源:赛迪网   作者:yuanjian
字体大小:[大][中][小]

  RedHat Linux上面没有提供Anjuta软件包,上面提供了一个Glade应用程序界面设计工具。Linux上面使用Anjuta和Glade以及Glademm软件包可以搭建一个Linux下面进行C/C++软件开发的IDE环境,可以进行GTK+/Gnome的应用程序开发。

  以前开发 Linux 程序时写出好的图形化用户界面比较难。 在 GIMP 工具包 (GTK)诞生之后,这件事就变得比较容易了。当 Damon Chaplin 写出 GLADE 这个用于在 GTK 环境下生成图形化用户界面的工具后,就更容易了。但是 GLADE 仍然不能算是一个“集成开发环境”(如 Visual Basic 等等。), 因为程序员不能在 GLADE 的环境下手动修改 GLADE 产生的代码。现在,这一切都已成为过去: Anjuta诞生了!

  Anjuta 利用 GLADE 生成优美用户界面的能力,加之以自己强大的源程序编辑能力,正成为一个极好的应用程序快速开发的集成环境(IDE)。以前,人们使用 GLADE 做界面,用 emacs 或 vi 等等编辑程序,再用某种终端模拟器编辑开发项目。使用 Anjuta,所有这些繁杂零散的任务都可以在一个统一的、集成的、自然而然的环境下完成。

  一、软件准备

  下载libzvt-2.0.1-0.ximian.6.6.i386.rpm
  http://tux.cprm.net/pub/ximian/xd2/redhat-9-i386/libzvt-2.0.1-0.ximian.6.6.i386.rpm
  
  下载anjuta-1.1.97-1.rh90.i386.rpm
  http://rpm.pbone.net/index.php3/stat/4/idpl/772608/com/anjuta-1.1.97-1.rh90.i386.rpm.html
  
  下载anjuta-1.0.2-1.i386.rpm
  http://heanet.dl.sourceforge.net/sourceforge/anjuta/anjuta-1.0.2-1.i386.rpm
  
  下载gtkmm2-2.2.3-fr1.i386.rpm
  http://ftp.freshrpms.net/pub/freshrpms/redhat/9/gtkmm2/gtkmm2-2.2.3-fr1.i386.rpm

  下载gtkmm2-devel-2.2.3-fr1.i386.rpm
  http://ftp.freshrpms.net/pub/freshrpms/redhat/9/gtkmm2/gtkmm2-devel-2.2.3-fr1.i386.rpm

  下载libsigc++-1.2.5-fr1.i386.rpm
  http://ftp.freshrpms.net/pub/freshrpms/redhat/9/libsigc++/libsigc++-1.2.5-fr1.i386.rpm

  下载glademm-1.1.3d-SNAP.i586.rpm
  http://loban.caltech.edu/gchch/glademm-1.1.3d-SNAP.i586.rpm
  
  下载libsigc++-devel-1.2.5-fr1.i386.rpm
  http://ftp.freshrpms.net/pub/freshrpms/redhat/9/libsigc++/libsigc++-devel-1.2.5-fr1.i386.rpm

  二、安装软件包

  安装RedHat Linux 9选择安装上软件开发项,这样就安装上了Glade,然后以root用户登陆,安装如下软件包。

  rpm -ivh libzvt-2.0.1-0.ximian.6.6.i386.rpm //anjuta的依赖软件包
  rpm -ivh ibsigc++-1.2.5-fr1.i386.rpm rpm -ivh gtkmm2-devel-2.2.3-fr1.i386.rpm
  rpm -ivh ibsigc++-devel-1.2.5-fr1.i386.rpm rpm -ivh gtkmm2-2.2.3-fr1.i386.rpm
  rpm -ivh glademm-1.1.3d-SNAP.i586.rpm rpm -ivh anjuta-1.0.2-1.i386.rpm
  rpm -Uvh anjuta-1.1.97-1.rh90.i386.rpm

  注:直接安装anjuta-1.1.97会发现无法编译软件,这里要注意的几个问题。

  1、要安装 Ximian版本的 libzvt 软件包,就是要安装我上面提到那个。

  2、要先安装 Anjuta 1.0.1,然后才updated via rpm -Uvh Anjuta 1.1.97。

  三、进行开发第一个Anjuta1.1.97上的C/C++的程序

  让我们先用 Anjuta 建立一个简单的Hello World 程序。

  建立一个新的项目

  先请打开 Anjuta。请选择菜单项 编程-> 更多编程工具-->Anjuta IDE。GNOME应用程序精灵 "GNOME2.0 Application Wizard" 将会出现。尽管人们只要点击“下一个”(Next)按钮就可以,而不必去管精灵对话框上有些什么信息,这里还是希望您能读一下对话框上的每一条信息。现在,在您读完精灵第一步的对话框上的信息后,请按Next 按钮。
  第二步非常关键。这里您需要决定您要建立的应用程序的类型。让我们选择 "Gnome2.0 project" ,然后继续走下去。第三步要确定应用程序的基本配置。请非常仔细地填入应用程序的配置信息。在本教程中,请输入以下信息。

  项目名称: HelloWorld(程序项目名)注意项目名称中间不能有空格。

  程序版本: 0.1(版本号)。
  程序作者: (你的名字)。
  程序名称: helloworld(程序名)。
  程序语言: 有C,C++和C/C++三种选择,这里选择C。
  程序类型: 有三种选择可执行程序,动态链接库和静态链接库。

  第四步编写项目的描述信息。

  第五步是项目的其他选项,GNU版权声明和程序的本地化支持项,如果您不想要,您可以去除他们。您最好为本应用程序项目选择一个图标,该图标将会出现在GNOME 应用程序菜单中。这里我们选取 Hello World example作为项目名,在 Group 域选取 Applications。最后点击 Next 按钮和 Finish 按钮。这时本应用程序项目就建立起来了。

  因为我们只是在建立一个例子程序,我们可以轻松前行。如果我们是在建立一个要在现实世界使用的应用项目, 那我们在填写应用程序精灵每一步的参数时可要格外小心,因为它们对您的应用程序项目来说非常重要。

  设计用户界面

  在与应用程序精灵对话结束之后,Anjuta 就开始建立您的应用程序项目的目录结构,运行参数配置脚本并建立应用项目本身。整个创建过程的进行情况显示在 Anjuta 开发环境的下部。创建过程结束后,屏幕的左边示出应用项目树结构。这个树结构中包含您的源程序文件,说明文件和图形文件。

  现在是启动 GLADE 并用其设计图形用户界面的时候了。请到菜单项 项目->编辑图形界面 去运行 GLADE。您将看到三个窗口: 1) Glade 主窗口,2) 属性窗口,and 3) 绘图工具窗口。

  取一个简单的 GTK 视窗就行了。请点击 Glade 主视窗上列出的第一项 (hello_app), 然后按 Del 删除键。现在到工具视窗(Palette),点击第一个图标。这时一个空白的 GtkWindow 建起来了。这将是我们的应用程序的主视窗 window1。再到属性视窗(Properties),敲入标题“Hello World!”。现在再到工具视窗上选取一个表格(table)2行2列放到主视窗 window1 上。这样,主视窗被切分为同等大小的4个部分。

  现在再从工具视窗中取出两个按钮,分别加到主视窗下面的两个框中。再把这两个按钮的名字和标签属性设置如下:

  左按钮:
  名字: BT_OK
  标签: OK
  右按钮:
  名字: BT_EXIT
  标签: Exit

  在视窗的上半部,左边再加上一个标签控件;在上半部右边加上一个输入框 Entry 控件。该输入框的名字取为 ENTRY。将上述标签控件的标签属性置为 Whats your name, sir?。

  现在在属性视窗的属性档(Signals tab)上把两个按钮都和Clicked事件连接起来。使用GLADE预设的反向调用函数名。请不要忘记点击 Add 按钮.这种常见的错误会导致产生空白的 callbacks.c 文件。在源文件callbacks.c上,我们将会通过 Anjuta界面加入源代码。

  现在,主视窗看起来似乎不那么漂亮。您可以试试改变视窗的宽度和高度,以及试试改改水平和垂直包容框的几个属性, 看看能不能让视窗好看些。(注意:您可到菜单View,选择控件树,然后选择控件。) 下面是一些属性的设置:

  *将下面的水平包容框的属性 Homogeneous 置为Yes;

  *将属性视窗的定位档的按钮的属性Fill 置为 Yes;

  *将主视窗window1的属性Grow置为No。

  设计好界面后,在Glade主视窗上点击“存盘”按钮,然后再点击“联编”按钮. 这就按您新设计的界面更新了您的 应用项目的src目录下的源文件 interface.c。现在,让我们选菜单 Project -> Exit,回到 Anjuta 用户界面下。开始编程啦!

  编辑程序

  现在回到 Anjuta 环境中来,您应该可以在屏幕左边的项目源程序列表中看到 callbacks.c. 双点击打开该程序. 这样我们在Anjuta集成开发环境的左边就可以编辑该程序了。

  有时一事物如果是有色彩的话就会变得更容易理解、更有趣。Anjuta 的“语法强调色”功能 (在“Format”菜单上)就属于这种情况. Anjuta还有很多很多有用的功能,您可以慢慢品玩。也许现在花点时间熟悉熟悉这个集成环境是很有好处的。

  现在回到 callbacks.c 文件,我们看到两个反向调用函数: on_BT_OK_clicked 和on_BT_EXIT_clicked. 让我们在第二个函数中加入一个函数调用:gtk_main_quit()。这样,该函数变成:

  #ifdef HAVE_CONFIG_H
  #include
  #endif
  #include
  #include "callbacks.h"
  #include "interface.h"
  #include "support.h"
  void on_BT_OK_clicked(GtkButton *button, gpointer user_data)
  {
  gtk_main_quit();
  }

  这个函数调用的目的是当用户点击退出按钮时,整个应用程序会结束。与此相仿,我们在 on_BT_OK_clicked函数中加入下列函数调用:

  void on_BT_OK_clicked (GtkButton *button, gpointer user_data)
  {
      GtkWidget *entry = lookup_widget (GTK_WIDGET(button), "entry");
      GtkWidget *msgbox = gnome_app_new("Hello World", "Hello World");
      gchar *text1, *text2;
      text1 = gtk_entry_get_text (GTK_ENTRY(entry));
      text2 = strcat ("Hello, ", text1);
      gnome_app_message (GNOME_APP(msgbox), text2);
  }

  生成目标代码,执行,以及发行。

  现在到了测试您程序的时候了;这一定很有趣。先选择菜单项创建->创建项目。这时Anjuta就开始编译和链接项目里的源程序main.c, interface.c, support.c and callbacks.c,然后将产生的可执行文件hello放到 src 目录。编译器一般会用 gcc。

  如果您幸运,编译过程没有任何错误信息的话,请选菜单项“创建->执行程序”于是Anjuta开辟一个终端视窗,并在其上运行您的应用程序 HelloWorld! 请在输入框上输入您的名字,然后点击 OK 按钮. 希望这时您的应用程序回您一个问候:Hello ... 您可再敲入一个问候词,然后点退出按钮 Exit,看看程序能否正常退出。如果正常退出,那真好! 您的辛勤劳动终于有了结果!

Upload by 小刘(2007-6-20)
IC
IC
推荐技术文章:
·Linux在信息家电(IA)上的应用..
·嵌入式Linux的动态扩展技术研究..
·基于Linux的嵌入式POS的GUI....
·Linux嵌入式系统与硬件平台的关系..
·基于嵌入式Linux的打印控制系统的....
·Linux下获得CPU利用率和内存使....
·擂台战:嵌入式Linux面临图形化挑....
·面向多媒体应用的嵌入式Linux实时....
·Linux系统内存磁盘初始化技术详细....
·Linux下的网络HOOK实现以及使....
·移动电话挑战嵌入式Linux..
·在嵌入式Linux上实现JFFS文件....
·基于嵌入式Linux系统界面的研究 ..
·Linux的向“心”力运动..
·支持基于Linux的USB设备的三种....
·基于ARM的嵌入式Linux开发平台..
·主流嵌入式Linux动态扩展技术比较....
·嵌入Linux基于MiniGUI信息....
·蓝牙模块在HHARM2410上的移植..
·基于Linux的嵌入式系统在测控系统....
·uClinux在嵌入式系统中的移植研..
·用busybox制作嵌入式Linux..
·基于uClinux的远程温度监控系统..
·uClinux内核移植相关代码分析
·linux驱动相关
·WinCE系统下BootLoader..
·Windows CE环境下无线网卡的..
·Windows CE中实现蓝牙串口驱..
·WinCE--嵌入式系统简介
·Windows CE OAL层的结构..
·Windows CE 软件开发入门(..
·Windows CE 软件开发入门 ..
·Windows CE 软件开发入门(..
·Windows CE开发初步教程
·使用 Windows CE .NET..
·Windows CE开发之起步停车
·基于Windows CE的嵌入式电子..
·浅谈Windows CE应用程序的可..
·Windows CE下驱动程序开发基..
·Windows CE上的声音处理
IC
IC

©2007 版权归ICGLE所有   页面执行时间:93.750毫秒