gnome编程
⑴ 在linux系统上使用c语言编程 - Hello World
C语言和 Linux 系统密切相关,因此在Linux系统上用C编程是一件非常自然的事。大部分的Linux kernel是用C写的,很多用户程序也是用C写的,比如GTK(Gnome和XFCE使用的图形库)。很多嵌入式系统和主机系统也是用C写的。因此,学习C将使我们具备解决Linux系统问题的能力。
C语言有40多年的 历史 ,由Brian Kernighan, Dennis Ritchie 和 Ken Thompson 在贝尔实验室创建。最初的操作系统Unix是用汇编语言编写的,因此有很多不便,当将Unix移植到PDP-11主机时,C语言被作为重新改写Unix系统的程序语言。1978年,Kernighan 和 Ritchie 编写了 “The C Programming Language”,推荐您阅读它。
C语言的编译过程如下:
在Linux上检查编译器的安装:
gcc -v
ld -v
第一个C语言程序:0001.hello.world.c
----------------------------------
#include
int main()
{
printf("Hello, world! ");
return 0;
}
--------------------------------------
编译:
gcc -o ./exes/0001.hello.world 0001.hello.world.c
运行
./exes/0001.hello.world
⑵ ubuntu linux的四个版本有什么区别详细
Ubuntu Kylin:是一个专门为中文用户定制的Ubuntu版本,预置了大量中国用户熟悉的应用,是开箱即用的Ubuntu官方中国定制版本,适合中国用户使用。
Ubuntu Studio:个为专业多媒体制作而打造的Ubuntu版本,可以编辑和处理音频、视频和图形图像等多媒体文件。
Ubuntu desktop:是官方桌面版本的标准版,是现在用户范围最广泛的。
Ubuntu server :是Ubuntu的服务器版没有桌面环境,只有命令行,主要应用于大型服务器。
(2)gnome编程扩展阅读:
ubuntu linux基本命令:
1.根目录:一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录
2.bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
3.boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
4.dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
5.etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
6.home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~e 表示用户 e 的家目录。
7.lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
⑶ ubuntu C编程有没有获取gnome窗口大小的函数
安装dev-help吧。肯定有。只宏咐是源码握答都丢了。以前做过截屏等程序蔽皮纯。
dev里面搜索xwin类似的函数,一层一层找。
⑷ 如何基于ubuntu定制自己 发行版
UbuntuLinux四个版本KDE、Gnome、Cinnamon和XFCE。一物皮昌、KDE4自最初的4.0版本以来,KDE已取得了长足发展。不仅更加稳定了,而且外观变得更漂亮了,这归功于KWin窗口管理器带来的流畅的动画效果和出色的合成支持。在安装这些替代的桌面时有好几条路可以走,可以通过下面这几种方法来安装:sudoapt-getinstallkde-plasma-desktop--如果只想打量一番,只需安装带极少应用程序的KDEPlasma桌面;sudoapt-getinstallkde-standard--安装Plasma桌面和标准的KDE应用程序(gedit、Konqueror、KMail、Dolphon和Konsole等);sudoapt-getinstallkde-full--为我提供程序库中与KDE有关的一切内容(注意:这个过程要花点时间,上一次检查的程序库大罩扒小超过1.2GB);sudoapt-getinstallkde-plasma-netbook--在此添加纯粹是为了力求完整。不过,顾名思义,这是最基本的上网本安装。一握稿旦这一切安装完毕,登录后,会看到诸如此类的界面:二、GnomeUnity与Gnome3有诸多共同之处(包括使用方面和代码库方面),但是没有像Fedora那样全盘照搬"GnomeShell"。如果喜欢这种外观,并且想在Ubuntu中试一下,可以通过这几个法做到这一点:sudoapt-getinstallubuntu-gnome-desktop--与KDE一样,会提供Gnome3Shell体验,无须安装许多专门针对Gnome的程序包。sudoapt-getintallubuntu-gnome-desktopubuntu-gnome-default-settings--这里要小心,当程序包安装完毕后,如果打算使用GnomeShell,就要确保选择GDM显示管理器。注意:如果想为Gnome3安装一切,就算进行了全面安装,也会缺少几项内容。添加下列命令,以获得GnomeDocuments和GnomeBoxes应用程序:sudoapt-getinstallgnome-documentsgnome-boxes几分钟过后,会看到这个外观相当漂亮的桌面:三、Cinnamon当Gnome3和GnomeShell推出时,一大批人对界面上与Gnome2发生天翻地覆的变化深表不安。于是,许多昔日的Gnome编程员开发出了Cinnamon,这个桌面基本上实现了Gnome2界面和兼容性库。除了在外观和工作流程上酷似Gnome2外,对视频硬件的要求低一点,还支持第三方合成--即Compiz,这个窗口管理器将提供那些花哨的桌面效果。将Cinnamon安装在Ubuntu中实际上非常容易,但有点不一样,要添加第三方程序库;只需要遵照这些步骤,就可以让顺利安装Cinnamon。sudoadd-apt-repositoryppa:gwendal-lebihan-dev/cinnamon-stable--这将把Cinnamon的"稳定"分支添加到程序库列表。还可以通过UbuntuSoftwareCenter应用程序来添加该稳定分支。sudoapt-getupdate--拉入刚添加的程序库的索引;sudoapt-getinstallcinnamon--这将为Cinnamon安装桌面环境,大多数底层应用程序已安装,还有在默认情况下需要的所有兼容性库。四、XFCEXFCE是最干净、耗用系统资源最少的桌面、最容易安装的系统。安装步骤如下:sudoapt-getinstallxubuntu-desktop--按这种方法安装会提供全面的XubuntuXFCE体验,提供了带有品牌的背景和默认的应用程序。sudoapt-getinstallxfce4--这个选项为提供了与发行版无关的XFCE桌面,不管选择哪个发行版;之前Ubuntu11.04中存在的冲突已得到了解决。
⑸ GTK和GNOME之间到底是什么关系
gtk 是 一个 图形界面编程接口, gnome 利用这个编程接口来实现图形界启神察面 打个粗浅的比方,gtk 是画悄茄布、画笔和颜瞎毕料,gnome 是用这些画布、画笔和颜料画出的作品
⑹ 求助,Linux下如何用C++编程创建一个窗体
做界面,你要学习界面库,linux 下比较出名的界面库就是GTK,QT和wxWidgets,自己google下吧,建议学习GTk,整个gnome就是用它做出来的。
本人学的是wxWidgets,就以它为例了。
#include <wx/app.h>
#include <wx/image.h>
#include <答搭者wx/msgdlg.h>
#include <wx/string.h>
#include <wx/intl.h>
#include <wx/menu.h>
#include <wx/statusbr.h>
#include <wx/枝巧frame.h>
//*)
class SampleApp : public wxApp
{
public:
virtual bool OnInit();
};
IMPLEMENT_APP(SampleApp);
bool SampleApp::OnInit()
{
/清薯/(*AppInitialize
bool wxsOK = true;
wxInitAllImageHandlers();
if ( wxsOK )
{
SampleFrame* Frame = new SampleFrame(0);
Frame->Show();
SetTopWindow(Frame);
}
return wxsOK;
}
class SampleFrame: public wxFrame
{
public:
SampleFrame(wxWindow* parent,wxWindowID id = -1);
virtual ~SampleFrame();
private:
//(*Handlers(SampleFrame)
void OnQuit(wxCommandEvent& event);
void OnAbout(wxCommandEvent& event);
//*)
//(*Identifiers(SampleFrame)
static const long idMenuQuit;
static const long idMenuAbout;
static const long ID_STATUSBAR1;
//*)
//(*Declarations(SampleFrame)
wxStatusBar* StatusBar1;
//*)
DECLARE_EVENT_TABLE()
};
//(*IdInit(SampleFrame)
const long SampleFrame::idMenuQuit = wxNewId();
const long SampleFrame::idMenuAbout = wxNewId();
const long SampleFrame::ID_STATUSBAR1 = wxNewId();
//*)
BEGIN_EVENT_TABLE(SampleFrame,wxFrame)
//(*EventTable(SampleFrame)
//*)
END_EVENT_TABLE()
SampleFrame::SampleFrame(wxWindow* parent,wxWindowID id)
{
//(*Initialize(SampleFrame)
wxMenuItem* MenuItem2;
wxMenuItem* MenuItem1;
wxMenu* Menu1;
wxMenuBar* MenuBar1;
wxMenu* Menu2;
Create(parent, id, wxEmptyString, wxDefaultPosition, wxDefaultSize, wxDEFAULT_FRAME_STYLE, _T("id"));
MenuBar1 = new wxMenuBar();
Menu1 = new wxMenu();
MenuItem1 = new wxMenuItem(Menu1, idMenuQuit, _("Quit\tAlt-F4"), _("Quit the application"), wxITEM_NORMAL);
Menu1->Append(MenuItem1);
MenuBar1->Append(Menu1, _("&File"));
Menu2 = new wxMenu();
MenuItem2 = new wxMenuItem(Menu2, idMenuAbout, _("About\tF1"), _("Show info about this application"), wxITEM_NORMAL);
Menu2->Append(MenuItem2);
MenuBar1->Append(Menu2, _("Help"));
SetMenuBar(MenuBar1);
StatusBar1 = new wxStatusBar(this, ID_STATUSBAR1, 0, _T("ID_STATUSBAR1"));
int __wxStatusBarWidths_1[1] = { -1 };
int __wxStatusBarStyles_1[1] = { wxSB_NORMAL };
StatusBar1->SetFieldsCount(1,__wxStatusBarWidths_1);
StatusBar1->SetStatusStyles(1,__wxStatusBarStyles_1);
SetStatusBar(StatusBar1);
Connect(idMenuQuit,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SampleFrame::OnQuit);
Connect(idMenuAbout,wxEVT_COMMAND_MENU_SELECTED,(wxObjectEventFunction)&SampleFrame::OnAbout);
//*)
}
SampleFrame::~SampleFrame()
{
//(*Destroy(SampleFrame)
//*)
}
void SampleFrame::OnQuit(wxCommandEvent& event)
{
Close();
}
void SampleFrame::OnAbout(wxCommandEvent& event)
{
wxString msg = wxT("This is a sample windows!");
wxMessageBox(msg, _("Welcome to..."));
}
⑺ linux 下的c语言编程
一、工具的使用
1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。
2、学会makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成makefile文件。
3、掌握gcc和gdb的基本用法。掌握gcc的用法对于构建一个软件包很有益处,当软件包包含的文件比较多的时候,你还能用gcc把它手动编译出来,你就会对软件包中各个文件间的依赖关系有一个清晰的了解。
4、掌握svn/cvs的基本用法。这是linux,也是开源社区最常用的版本管理系统。可以去试着参加sourceforge上的一些开源项目。
二、linux/unix系统调用与标准C库
系统调用应用软件与操作系统的接口,其重要性自然不用说,一定要掌握。推荐学习资料为steven先生的UNIX环境高级编程(简称APUE)。
三、库的学习
无论是在哪个平台做软件开发,对于库的学习都很重要,linux下的开发库很多,我主要介绍一下我常常用到的一些库。
1、glib库
glib 库是gtk+和gnome的基础库,并具是跨平台的,在linux、unix和windows下都可以用。glib库对于linux平台开发的影响就像 MFC对windows平台开发的影响一败高样,很多开源项目都大量的使用了glib库,包括gimp、gnome、gaim、evolution和 linux下的集群软件heartbeat.因为glib库自带有基本的数据结构实现,所以在学习glib库的时候可以顺便学习一下基本的数据结构(包括链表、树、队列和hash表)。
2、libxml库
libxml是linux平台下解析XML文件的一个基础库,现在很多实用软件都用XML格式的配置文件,所以也有必要学习一下。
3、readline库
readline 库是bash shell用的库,如果要开发命令行程序,那么使用readline库可以减少很多工作量,比如bash里的命令行自动补全,在readline里就已经有实现,当然你也可以用自己的实现替代库的行为。readline库有很多网站介绍的,只要google一下readline就可以找到一堆了。
4、curses库
curses 库以前是vi程序的一部分,后来从vi里提取出来成为一个独立的库。curses库对于编写终端相关的程序特别有用,比如要在终端某一胡判行某一列定位输出,改变终端字体的颜色和终端模式。察做尺linux下的curses库用的是GNU实现的ncurses(new curses的意思)。
5、gtk+和KDE库
这两个库是开发GUI应用程序的基础库,现在linux下的大部份GUI程序都是基于这两个库开发的,对于它们 的学习也是很有必要的。
四、网络的学习
⑻ linux系统下用什么开发工具进行C,C++,编程
编辑器有vi joe emacs和gedit kwirte等
emacs hello.c 编写代码
编译器是gcc g++
gcc hello.c
g++ hello.cpp
调试器 gdb
执行程序
./a.out
⑼ Centos7桌面左上角菜单编程活动了,怎么变回来
关机,重启,登陆的时候先不要输入密码,在登陆按钮的左边有个齿轮按钮,点这个齿轮按钮,在里面选“gnome经典模式”,再输入密码进入。就变回原来的了