歡迎您光臨本站 註冊首頁

查看Linux內核、CPU、內存及各組件版本的命令和方法 

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0
查看內核版本: uname -a
more /etc/*release
more /etc/redhat-release
more /proc/version

查看CPU信息:grep "model name" /proc/cpuinfo
more /proc/cpuinfo

查看CPU位數:getconf LONG_BIT
ls 如果在root下ls有lib64 文件夾說明系統64

查看libc、gcc版本:ldd /sbin/mii-tool
rpm -qa | grep glibc
gcc –v

查看內存信息:more /proc/meminfo
grep MemTotal /proc/meminfo



linux是指GNU/Linux內核和GNU/Linux工具集組合而成的一套操作系統, 一個最基本的linux 由
內核 kernel,二進位工具包 binutils, GNU C library glibc和shell 組成

Linux下gcc編譯介紹
Linux系統下的Gcc(GNU C Compiler)是GNU推出的功能強大、性能優越的多平台編譯器,是GNU的代表作品之一.gcc是可以在多種硬體平台上編譯出可執行程序的超級編譯器,其執行效率與一般的編譯器相比平均效率要高20%~30%.
Gcc編譯器能將C、C 語言源程序、匯程式化序和目標程序編譯、連接成可執行文件,如果沒有給出可執行文件的名字,gcc將生成一個名為 a.out的文件.在Linux系統中,可執行文件沒有統一的後綴,系統從文件的屬性來區分可執行文件和不可執行文件.而gcc則通過後綴來區別輸入文件的類別,下面我們來介紹gcc所遵循的部分約定規則.
.c為後綴的文件,C語言源代碼文件;
.a為後綴的文件,是由目標文件構成的檔案庫文件;


.C,.cc或.cxx 為後綴的文件,是C 源代碼文件;
.h為後綴的文件,是程序所包含的頭文件;
.i 為後綴的文件,是已經預處理過的C源代碼文件;
.ii為後綴的文件,是已經預處理過的C 源代碼文件;
.m為後綴的文件,是Objective-C源代碼文件;
.o為後綴的文件,是編譯后的目標文件;
.s為後綴的文件,是彙編語言源代碼文件;
.S為後綴的文件,是經過預編譯的彙編語言源代碼文件.
Gcc的執行過程
雖然我們稱Gcc是C語言的編譯器,但使用gcc由C語言源代碼文件生成可執行文件的過程不僅僅是編譯的過程,而是要經歷四個相互關聯的步驟∶預處理(也稱預編譯,Preprocessing)、編譯(Compilation)、彙編(Assembly)和連接(Linking).
命令gcc首先調用cpp進行預處理,在預處理過程中,對源代碼文件中的文件包含(include)、預編譯語句(如宏定義define等) 進行分析.接著調用cc1進行編譯,這個階段根據輸入文件生成以.o為後綴的目標文件.彙編過程是針對彙編語言的步驟,調用as進行工作,一般來講,.S 為後綴的彙編語言源代碼文件和彙編、.s為後綴的彙編語言文件經過預編譯和彙編之後都生成以.o為後綴的目標文件.當所有的目標文件都生成之後,gcc就調用ld來完成的關鍵性工作,這個階段就是連接.在連接階段,所有的目標文件被安排在可執行程序中的恰當的位置,同時,該程序所調用到的庫函數也從各自所在的檔案庫中連到合適的地方.

Gcc的基本用法和選項
在使用Gcc編譯器的時候,我們必須給出一系列必要的調用參數和文件名稱.Gcc編譯器的調用參數大約有100多個,其中多數參數我們可能根本就用不到,這裡只介紹其中最基本、最常用的參數.
Gcc最基本的用法是∶gcc [options] [filenames]


其中options就是編譯器所需要的參數,filenames給出相關的文件名稱.
-c,只編譯,不連接成為可執行文件,編譯器只是由輸入的.c等源代碼文件生成.o為後綴的目標文件,通常用於編譯不包含主程序的子程序文件.
-o output_filename,確定輸出文件的名稱為output_filename,同時這個名稱不能和源文件同名.如果不給出這個選項,gcc就給出預設的可執行文件a.out.
-g,產生符號調試工具(GNU的gdb)所必要的符號資訊,要想對源代碼進行調試,我們就必須加入這個選項.
-O,對程序進行優化編譯、連接,採用這個選項,整個源代碼會在編譯、連接過程中進行優化處理,這樣產生的可執行文件的執行效率可以提高,但是,編譯、連接的速度就相應地要慢一些.
-O2,比-O更好的優化編譯、連接,當然整個編譯、連接過程會更慢.
-Idirname,將dirname所指出的目錄加入到程序頭文件目錄列表中,是在預編譯過程中使用的參數.C程序中的頭文件包含兩種情況∶
A)#include
B)#include 「myinc.h」
其中,A類使用尖括弧(< >),B類使用雙引號(「 」).對於A類,預處理程序cpp在系統預設包含文件目錄(如/usr/include)中搜尋相應的文件,而對於B類,cpp在當前目錄中搜尋頭文件,這個選項的作用是告訴cpp,如果在當前目錄中沒有找到需要的文件,就到指定的dirname目錄中去尋找.在程序設計中,如果我們需要的這種包含文件分別分佈在不同的目錄中,就需要逐個使用-I選項給出搜索路徑.
-Ldirname,將dirname所指出的目錄加入到程序函數檔案庫文件的目錄列表中,是在連接過程中使用的參數.在預設狀態下,連接程序ld在系統的預設路徑中(如/usr/lib)尋找所需要的檔案庫文件,這個選項告訴連接程序,首先到-L指定的目錄中去尋找,然後到系統預設路徑中尋找,如果函數庫存放在多個目錄下,就需要依次使用這個選項,給出相應的存放目錄.


-lname,在連接時,裝載名字為「libname.a」的函數庫,該函數庫位於系統預設的目錄或者由-L選項確定的目錄下.例如,-lm表示連接名為「libm.a」的數學函數庫.
上面我們簡要介紹了gcc編譯器最常用的功能和主要參數選項,更為詳盡的資料可以參看Linux系統的聯機幫助.
假定我們有一個程序名為test.c的C語言源代碼文件,要生成一個可執行文件,最簡單的辦法就是∶
gcc test.c
這時,預編譯、編譯連接一次完成,生成一個系統預設的名為a.out的可執行文件,對於稍為複雜的情況,比如有多個源代碼文件、需要連接檔案庫或者有其他比較特別的要求,就要給定適當的調用選項參數.再看一個簡單的例子.
整個源代碼程序由兩個文件testmain.c 和testsub.c組成,程序中使用了系統提供的數學庫,同時希望給出的可執行文件為test,這時的編譯命令可以是∶
gcc testmain.c testsub.c □lm □o test
其中,-lm表示連接系統的數學庫libm.a.

Gcc的錯誤類型及對策
Gcc編譯器如果發現源程序中有錯誤,就無法繼續進行,也無法生成最終的可執行文件.為了便於修改,gcc給出錯誤資訊,我們必須對這些錯誤資訊逐個進行分析、處理,並修改相應的語言,才能保證源代碼的正確編譯連接.gcc給出的錯誤資訊一般可以分為四大類,下面我們分別討論其產生的原因和對策.

第一類∶C語法錯誤
錯誤資訊∶文件source.c中第n行有語法錯誤(syntex errror).這種類型的錯誤,一般都是C語言的語法錯誤,應該仔細檢查源代碼文件中第n行及該行之前的程序,有時也需要對該文件所包含的頭文件進行檢查.有些情況下,一個很簡單的語法錯誤,gcc會給出一大堆錯誤,我們最主要的是要保持清醒的頭腦,不要被其嚇倒,必要的時候再參考一下C語言的基本教材.


第二類∶頭文件錯誤
錯誤資訊∶找不到頭文件head.h(Can not find include file head.h).這類錯誤是源代碼文件中的包含頭文件有問題,可能的原因有頭文件名錯誤、指定的頭文件所在目錄名錯誤等,也可能是錯誤地使用了雙引號和尖括弧.

第三類∶檔案庫錯誤
錯誤資訊∶連接程序找不到所需的函數庫,例如∶
ld: -lm: No such file or directory
這類錯誤是與目標文件相連接的函數庫有錯誤,可能的原因是函數庫名錯誤、指定的函數庫所在目錄名稱錯誤等,檢查的方法是使用find命令在可能的目錄中尋找相應的函數庫名,確定檔案庫及目錄的名稱並修改程序中及編譯選項中的名稱.
第四類∶未定義符號
錯誤資訊∶有未定義的符號(Undefined symbol).這類錯誤是在連接過程中出現的,可能有兩種原因∶一是使用者自己定義的函數或者全局變數所在源代碼文件,沒有被編譯、連接,或者乾脆還沒有定義,這需要使用者根據實際情況修改源程序,給出全局變數或者函數的定義體;二是未定義的符號是一個標準的庫函數,在源程序中使用了該庫函數,而連接過程中還沒有給定相應的函數庫的名稱,或者是該檔案庫的目錄名稱有問題,這時需要使用檔案庫維護命令ar檢查我們需要的庫函數到底位於哪一個函數庫中,確定之後,修改gcc連接選項中的-l和-L項.
排除編譯、連接過程中的錯誤,應該說這只是程序設計中最簡單、最基本的一個步驟,可以說只是開了個頭.這個過程中的錯誤,只是我們在使用C語言描述一個演算法中所產生的錯誤,是比較容易排除的.我們寫一個程序,到編譯、連接通過為止,應該說剛剛開始,程序在運行過程中所出現的問題,是演算法設計有問題,說得更玄點是對問題的認識和理解不夠,還需要更加深入地測試、調試和修改.一個程序,稍為複雜的程序,往往要經過多次的編譯、連接和測試、修改.下面我們學習的程序維護、調試工具和版本維護就是在程序調試、測試過程中使用的,用來解決調測階段所出現的問題.窗體頂端


窗體底端

什麼是gtk
GTK 的原始的作者是

Peter Mattis
Spencer Kimball
Josh MacDonald

GTK 是一個小型而高效的控制項庫,具有Motif的外觀和風格.實際上,它比Motif看起來好多了,它包含有基本的控制項和一些很複雜的的控制項:例如文件選擇控制項和顏色選擇控制項.

GTK 提供了一些獨特的特性,(至少,我知道其他的控制項庫不提供他們),例如,按鈕不提供標籤,它包含了一個子控制項,在很多的時候是一個標籤,但是,這個子控制項也可以是一個映射,圖像或者任何其他的程序員想要的集合.在整個的庫中,你隨處可見這種伸縮性


gtk整體說來還是不錯的不太難,另外vc 2003中也是可以編譯的,要設置庫,適合初學者,另外生成的.exe文件只能在裝有GTK的機器中運行,有點不方便.

樓主可以試試用PEG 類似GTK但更簡單,生成的exe文件可以在任何os運行.可以去他的官網下載免費版本.

glibc

  glibc 是gnu發布的libc庫,也即c運行庫.
  glibc是linux系統中最底層的api(應用程序開發介面),
  幾乎其它任何的運行庫都會依賴於glibc.
  glibc除了封裝linux操作系統所提供的系統服務外,
  它本身也提供了許多其它一些必要功能服務的實現,主要的如下:
  (1)string,字元串處理
  (2)signal,信號處理
  (3)dlfcn,管理共享庫的動態載入
  (4)direct,文件目錄操作
  (5)elf,共享庫的動態載入器,也即interpreter
  (6)iconv,不同字符集的編碼轉換


  (7)inet,socket介面的實現
  (8)intl,國際化,也即gettext的實現
  (9)io
  (10)linuxthreads
  (11)locale,本地化
  (12)login,虛擬終端設備的管理,及系統的安全訪問
  (13)malloc,動態內存的分配與管理
  (14)nis
  (15)stdlib,其它基本功能
  GLIBC 的內容
  由於 glibc 囊括了幾乎所有的 UNIX 通行的標準,可以想見其內容包羅萬有.而就像其他的 UNIX 系統一樣,其內含的檔案群分散於系統的樹狀目錄結構中,像一個支架一般撐起整個作業系統.以 glibc-2.2 為例,這些檔案群主要包括:
  1.分享函式庫群:
  這是 glibc 的主體,分?鴦 /lib 與 /usr/lib 中,包括 libc 標準 C 函式庫、libm 數學函式庫、libcrypt 加密與編碼函式庫、libdb 資料庫函式庫、libpthread 行程多執行緒函式庫、libnss 網路服務函式庫 .... 等等.這些都是可分享函式庫,檔名都以 .so 做結尾.其中,/lib/ld*.so 是程式與函式庫連結的工具.有的用於程式編譯時將程式與函式庫內的函式物件連結,在只支援靜態連結的系統中,此連結方式就是直接將所需的物件自函式庫中抽出?砼c程式的可執行檔相連,而在支援可分享函式庫的系統中,在程式編譯時期的連結只是在執行檔中紀錄了那些函式物件是存在那個函式庫檔案中,等該程式開始執行時,則由另一個負責動態連結的 ld*.so 將所需的函式庫連結好?K執行.
  一般而言,負責程式編譯時期的連結器檔名為 ld.so,而負責程式執行時的動態連結器檔名為 ld- .so 或 ld-linux.so (在 GNU/Linux 系統中).
  函式庫標頭檔與程式開發元件:
  這些標頭檔檔名都以 .h 為結尾,全部在 /usr/include/ 底下,其內容為函式庫中各函式的宣告、巨集定義、資料物件的型別 .... 等等,這些都是程式開發者不可或缺的部分.


  除此之外,在 /usr/lib/ 中還有若干 .o 與 .a 的檔案,這些是程式編譯過程中要連結為可執行檔時所需的元件,有些則為上述可分享函式庫的靜態連接版本,而後者可以在某些特殊場合下需要靜態連結程式時使用.
  函式庫說明文件:
  在一般的 UNIX 系統下,這些說明文件是放在 /usr/man 或 /usr/share/man 底下,統稱為 man pages,其底下還分若干章?,其中第二章 (man2) 講的是系統呼叫,而第三章 (man3) 講的就是 libc 標準函式庫,這些都是系統開發者重要的參考資料.
  而在 GNU 的系統中,除了 man pages 之外,還有一套稱為 info 的文件資料系統,裡頭的說明往往比 man pages 還要詳盡,這在 glibc 中也不例外.glibc 的 info 文件位於 /usr/share/info/libc.info* ,本文中有許多素材就是取自這些文件的內容.
  字集轉換模組與區域化資料庫:
  這些是與程式國際化與本土化相關的部分,主要可分成四大塊: /usr/lib/gconv/ 內含大量的字集轉換模組,大部分是各種字集及編碼方式與系統的基底字集之間的 轉換.第二塊是 /usr/lib/locale,內含以系統基底字集寫成的區域化資料庫 (locale),像是 LC_CTYPE、LC_TIME .... 等等.第三塊是
  /usr/share/locale/,內含可跨平台使用的區域化資料,主要是各應用程式的?息翻譯部分.而最後一塊是 /usr/share/i18n/,其內容是各區域化資料庫的原始碼,以及系統支援的內碼對應表 .... 等等.
  時區資料庫:
  主要分?鴦 /usr/share/zoneinfo 底下,內含世界各地時區與格林威治時間的轉換資料.
  其他工具程式與設定檔:
  工具程式分?言 /usr/bin 與 /sbin 底下,包括一些轉碼與區域化資料庫相關的程式如 iconv, locale, localedef 等,以及用?盹@示應用程式與可分享函式庫相依關係的 ldd, 還有可分享函式庫搜尋路?焦芾沓淌 ldconfig .... 等.而其相關的設定檔則位於 /etc 底下.


  disaos
  03-11-03, 10:42
  GLIBC 的規格
  在 GNU/Linux 系統中,其 C 函式庫的發展史點出了 GNU/Linux 演進的幾個重要里程碑,由此可以突顯出 C 函式庫在系統中的地位與重要性.早期的 GNU/Linux 系統?K不支援可分享函式庫,因此所有的應用程式都是以靜態連結的方式存於系統中.直到 1995-1996 年 libc5 問世以後,系統才開始支援 ELF 可分享函式庫,同時該版的 C 函式庫也?作了其他 UNIX 上大部分的功能與函式群,可謂 GNU/Linux 發展上的一大進步.
  然而 libc5 在程式國際化 (I18N) 與本土化 (L10N) 方面的支援很差,故那個時候若要開發所謂中文化的程式,就非得自行?作一套標準不可.直到一兩年後, GNU/Linux 換用了 GNU 所開發的 glibc-2.0 做為其 C 函式庫後,其國際化與本土化的支援才開始起步,後?須v經 glibc-2.1,到了現在的 2.2 版,整個多國語文的開發環境才大至成熟.
  用 glibc 做為系統的 C 函式庫,是 GNU/Linux 演進的一個重要里程碑.在 GNU 的計畫中,開發 glibc 原本是要給他們尚未問世的核心 GNU/Hurd 用的,由於當時幾乎 99% 的 GNU 系統工具已開發完成,就獨缺核心 Hurd,而恰巧 Linux 核心在 Torvalds 的帶領下已逐?u成熟穩定,可以順利執行所有的 GNU 系統工具.故 GNU 團隊便順應 Linux 核心的特性,改寫了他們的 glibc,使其可以適用於 Hurd 核心與 Linux 核心.如此,在這兩個平台上就有了一致的程式開發環境,是的所有的 GNU 程式可以在這兩個平台之間順利移植.
  比起過去的 libc5,glibc 系列 (一般又稱之為 libc6) 除了有完整的國際化與本土化支援外,同時還符合許多標準與規格,是的在 glibc 下開發的程式可以很容易移植到其他 UNIX 平台去.這些標準包括:
  ISO C:


  ISO C 是 International Standard for the C programming language 的縮寫,此標準明定了 C 語言的語法,標準 C 函式庫應具備那些標頭檔、巨集定義、函式與物件 .... 等等,幾乎在任何平台上的 C 語言 (包括非 UNIX 平台) 都支援此標準.
  POSIX:
  POSIX 是 Portable Operating System Interface for Computer Environments 的縮寫,它是 ISO C 的延伸,明定了一個可移植的作業系統所應具備種種條件,其範圍不只有系統函式庫而已,還同時包括一些標準的工具程式、系統核心應有的特色與?作、以及在 C 函式庫中某些與作業系統相關的低階控制支援 (如系統呼叫窗口) 等等.由於 glibc 是完全按照 POSIX 的標準製作的,同時搭配了符合 POSIX 標準的 Linux 核心,故在此環境下開發的程式可以做到完全符合 POSIX 的規格.
  Berkeley Unix:
  Berkeley Unix 泛稱柏克萊大學所開發的 UNIX 系列作業系統,包括 4.2 BSD、4.3 BSD、4.4 BSD 以及早期的 SunOS.這些系統的 C 函式庫中有許多傑出的設計,但卻沒有在上述兩個標準中,包括 select() 函式、sockets .... 等等,這些在 glibc 中都有支援.
  SVID:
  SVID 是 System V Interface Description 的縮寫,它是一份描述 AT&T UNIX System V 系統規格的文件,它是 POSIX 標準的延伸.Glibc ?作了大部分的 SVID 規格要求,其中較重要的包括了行程之間的通?標準以及分享式記憶體 (shared memory),至於其他的部分則較不常使用.?作 SVID 主要的目的是希望可以做到與 UNIX System V 的相容與程式的可移植性.
  XPG:
  XPG 是 X/Open Portability Guide 的縮寫,是由 X/Open Company, Ltd. 所發表,同時 X/Open 還擁有 UNIX 商標的版權.而這份規格不但是 POSIX 標準的擴充,同時也明定了一個 UNIX 作業系統所應符合的要求.其中包括了 iconv() 字集轉換介面,以及部分 BSD 與 SVID 的特色.


  除了上述的規格外,glibc 還內含了 GNU 特有的特色,稱之為 GNU Extension.這些特色在某些情況下可以方便程式的撰寫與維護,但就不見得可以移植到其他 UNIX 平台上,故在可移植性的考量下使用時必須留意.
  安裝下列程序: catchsegv, gencat, getconf, getent, glibcbug, iconv, iconvconfig, ldconfig, ldd, lddlibc4, locale, localedef, mtrace, nscd, nscd_nischeck, pcprofiledump, pt_chown, rpcgen, rpcinfo, sln, sprof, tzselect, xtrace, zdump 和 zic
  安裝下列庫文件: ld.so, libBrokenLocale.[a,so], libSegFault.so, libanl.[a,so], libbsd-compat.a, libc.[a,so], libc_nonshared.a, libcrypt.[a,so], libdl.[a,so], libg.a, libieee.a, libm.[a,so], libmcheck.a, libmemusage.so, libnsl.a, libnss_compat.so, libnss_dns.so, libnss_files.so, libnss_hesiod.so, libnss_nis.so, libnss_nisplus.so, libpcprofile.so, libpthread.[a,so], libresolv.[a,so], librpcsvc.a, librt.[a,so], libthread_db.so 和 libutil.[a,so]
  簡短說明
  catchsegv 當程序發生segmentation fault的時候, 用來建立一個堆棧跟蹤.
  gencat 建立消息列表.
  getconf 針對文件系統的指定變數顯示其系統設置值.
  getent 從系統管理資料庫獲取一個條目.
  glibcbug 建立glibc的bug報告並且email到bug報告的郵件地址.
  iconv 轉化字符集.
  iconvconfig 建立快速讀取的iconv模塊所使用的設置文件.
  ldconfig 設置動態鏈接庫的實時綁定.
  ldd 列出每個程序或者命令需要的共享庫.
  lddlibc4 輔助 ldd 操作目標文件.
  locale 是一個 Perl 程序,可以告訴編譯器打開或關閉內建的locale支持.
  localedef 編譯locale標準.
  mtrace...
  nscd 提供對常用名稱設備調用的緩存的守護進程.
  nscd_nischeck 檢查在進行NIS 偵查時是否需要安全模式.


  pcprofiledump 列印PC profiling產生的信息.
  pt_chown 是一個輔助程序,幫助grantpt設置子虛擬終端的屬主,用戶組和讀寫許可權.
  rpcgen 產生實現RPC協議的C代碼.
  rpcinfo 對RPC伺服器產生一個RPC呼叫.
  sln 用來創建符號鏈接,由於它本身是靜態連接的,在動態連接不起作用的時候,sln仍然可以建立符號鏈接.
  sprof 讀取並顯示共享目標的特徵描述數據.
  tzselect 對用戶提出關於當前位置的問題,並輸出時區信息到標準輸出.
  xtrace 通過列印當前執行的函數跟蹤程序執行情況.
  zdump 顯示時區.
  zic 時區編譯器.
  ld.so 幫助動態鏈接庫的執行.
  libBrokenLocale 幫助程序處理破損locale,如Mozilla.
  libSegFault 處理 segmentation fault 信號,試圖捕捉segfaults.
  libanl 非同步名稱查詢庫.
  libbsd-compat 為了在linux下執行一些BSD程序,libbsd-compat提供了必要的可移植性.
  libc 是主要的C庫--常用函數的集成.
  libcrypt 加密編碼庫.
  libdl 動態連接介面.
  libg g 的運行時.
  libieee IEEE浮點運算庫.
  libm 數學函數庫.
  libmcheck 包括了啟動時需要的代碼.
  libmemusage 幫助 memusage 搜集程序運行時內存佔用的信息.
  libnsl 網路服務庫.
  libnss* 是名稱服務切換庫,包含了解釋主機名,用戶名,組名,別名,服務,協議等等的函數.
  libpcprofile 幫助內核跟蹤在函數, 源碼行和命令中CPU使用時間.
  libpthread POSIX 線程庫.
  libresolv 創建,發送及解釋到互聯網域名伺服器的數據包.
  librpcsvc提供RPC的其他服務.
  librt 提供了大部分的POSIX.1b實時擴展的介面.


  libthread_db 對建立多線程程序的調試很有用.
  libutil 包含了在很多不同的 Unix程序中使用的「標準」函數.
  Glibc 安裝依賴關係
  Glibc 依賴於: Bash, Binutils, Coreutils, Diffutils, Gawk, GCC, Gettext, Grep, Make, Perl, Sed, Texinfo.

linux 下的X Window KDE GNOME
X Window是linux下的圖形終端,以客戶端、伺服器的形式運行,客戶端和伺服器可以處於一台機子,也可以在網路上訪問.客戶端和伺服器之間用協議溝通.當用戶處於客戶端上要顯示什麼東西時,客戶端把這個請求發送到伺服器由伺服器完成.

可見X Window並不是我們常見的圖形界面,他只是一套協議和介面,程序通過這套介面來顯示圖形,比如Xterm就是利用這些介面來顯示一個命令窗口,實際上X Window在後台運行,我們是看不見的.

光一個X Window是沒有像Windows下這樣的任務欄等功能的,只是一系列介面,使用起來當然不方便,不是人人都願意打命令.人們就利用X Window的介面做出了窗口最小化、切換等功能,叫窗口管理器,你說的KDE、Gnome等就是窗口管理器.

早期的窗口管理器只有簡單的窗口管理功能,只有一個桌面,上面一些窗口排列,最小化的窗口被放在某個地方,非常簡陋.現在的窗口管理器則功能強大,提供了大量的附加功能,已經不局限於管理窗口了.

綜上所述,你不裝KDE或Gnome,也是可以運行一些圖形界面的程序的,但如果你要像在windows下一樣的方便,窗口管理器必不可少.

什麼是KDE?
  KDE,K桌面環境(K Desktop Environment)的縮寫.一種著名的運行於Linux、Unix以及FreeBSD等操作系統上面自由圖形工作環境,整個系統採用的都是 TrollTech公司所開發的Qt程序庫.KDE和Gnome都是Linux操作系統上最流行的桌面環境系統.


  概覽
  KDE是一個用於UNIX工作站的網路透明的現代化桌面環境.KDE會為滿足在Unix工作站上對於易用桌面的需求而不斷探索,例如在Mac OS和微軟的Windows那樣的桌面環境.我們相信 UNIX操作系統是當今可用的最好的操作系統.實際上在這些年來UNIX已經成為信息技術專業人員無可爭議的選擇,當提到穩定性、可擴展性和開放性,沒有什麼可以和UNIX 競爭.但無論如何,在UNIX上缺乏易於使用的現代化桌面環境已成為了讓UNIX成為辦公和家庭場合中普通計算機用戶的桌面系統的重大阻礙.UNIX在伺服器市場佔有優勢,並且是計算機專業人士和科學領域中的首選計算平台,沒有UNIX,就沒有互聯網.但是UNIX也從事於滿足普通計算機用戶的需求.自從大量的類UNIX(Debian GNU/Linux、 FreeBSD和NetBSD等等)在互聯網上自由可用的時候,這種情況更加使人遺憾.上述的幾個平台都具有非凡的品質和穩定性.
KDE的一點歷史
  * KDE項目始建於1996年10月,確切的公布日期是1996年10月14日.
  * 1997年8月15日:KDE第一次代表會議於德國阿恩斯伯格市召開,共15人參加.
  * 1997年12月:KDE協會創建,這是一個為在法律和財政上保護核心成員避免相關糾紛而設立的組織.
  * 1998年4月8日:KDE Free Qt基金會成立.
  * 1999年10月20日,KDE Beta 1發布;1997年11月23日,KDE Beta 2發布;1998年2月1日,KDE Beta 3發布;1998年4月19日,KDE Beta 4發布.
  * 1998年4月19日,KDE 1.0發布.
  * 1999年2月2日,KDE 1.1發布.
  * 1999年5月5日,KDE 1.1.1發布.
  * 1999年9月13日,KDE 1.1.2發布.
  * 1999年10月7日至10日,KDE第二次代表會議在德國愛爾蘭根市召開.
  * 1999年12月15日,KDE 1.89發布.


  * 2000年5月12日,KDE 1.90 (KDE2 beta1)發布;2000年6月14日,KDE 1.91 (KDE2 beta2)發布.2000年7月31日,KDE 1.92 (KDE2 beta3)發布.
  * 2000年7月9日至19日,KDE第三次代表會議於在挪威特呂西爾市召開.
  * 2000年8月23日,KDE 1.93 (KDE2 beta4)發布.
  * 2000年9月4日,Qt開始使用GPL授權.
  * 2000年9月15日,KDE 1.94 (KDE2 beta5)發布.
  * 2000年10月10日,KDE 2.0 RC(發布候選版)發布.
  * 2000年10月23日,KDE 2.0發布.
  * 2000年12月5日,KDE 2.0.1發布.
  * 2000年12月16日,KDE 2.1 Beta 1發布.
  * 2001年1月31日,KDE 2.1 Beta 2發布.
  * 2001年2月26日,KDE 2.1 發布.
  * 2001年3月27日,KDE 2.1.1發布.
  * 2001年4月30日,KDE 2.1.2發布.
  * 2001年7月4日,KDE 2.2 Beta1發布.
  * 2001年8月15日,KDE 2.2 發布.
  * 2001年9月19日,KDE 2.2.1發布.
  * 2001年11月21日,KDE 2.2.2發布.
  * 2002年4月3日,KDE 3.0發布.
  * 2002年5月22日,KDE 3.0.1發布.
  * 2002年7月2日,KDE 3.0.2發布.
  * 2002年7月11日,KDE 3.1 Alpha1發布.
  * 2002年8月19日,KDE 3.0.3發布.
  * 2002年8月21日,KDE 3.1 Beta1發布.
  * 2002年10月2日,KDE 3.1 Beta2發布.
  * 2002年10月9日,KDE 3.0.4發布.
  * 2002年11月18日,KDE 3.0.5發布.
  * 2002年12月21日,KDE 3.0.5a發布.
  * 2003年1月28日,KDE 3.1發布.
  * 2003年3月20日,KDE 3.1.1發布.
  * 2003年5月19日,KDE 3.1.2發布.
  * 2003年7月29日,KDE 3.1.3發布.
  * 2003年9月10日,KDE 3.2 Alpha 1發布.
  * 2003年9月16日,KDE 3.1.4發布.
  * 2004年1月14日,KDE 3.1.5發布.
  * 2004年2月3日,KDE 3.2發布.


  * 2004年3月9日,KDE 3.2.1發布.
  * 2004年4月19日,KDE 3.2.2發布.
  * 2004年6月9日,KDE 3.2.3發布.
  * 2004年8月19日,KDE 3.3發布.
  * 2004年10月12日,KDE 3.3.1發布.
  * 2004年12月8日,KDE 3.3.2發布.
  * 2005年3月16日,KDE 3.4發布.
  * 2005年5月31日,KDE 3.4.1發布.
  * 2005年7月28日,KDE 3.4.2發布.
  * 2005年10月13日,KDE 3.4.3發布.
  * 2005年11月29日,KDE 3.5發布.
  * 2006年1月31日,KDE 3.5.1發布.
  * 2006年3月28日,KDE 3.5.2發布.
  * 2006年5月31日,KDE 3.5.3發布.
  * 2006年8月2日,KDE 3.5.4發布.
  * 2006年10月11日,KDE 3.5.5發布.
  * 2007年1月25日,KDE 3.5.6發布.
  * 2008年1月11日,革命版本——KDE 4.0發布
  * 2008年7月29日,更加完美更加成熟的4系列版本4.1發布,在不久的將來大部分kde發行版使用kde4作為預設桌面環境.

GNOME

GNOME 即GNU網路對象模型環境 (The GNU Network Object Model Environment),GNU計劃的一部分,開放源碼運動的一個重要組成部分. 是一種讓使用者容易操作和設定電腦環境的工具.
  目標是基於自由軟體,為Unix或者類Unix操作系統構造一個功能完善、操作簡單以及界面友好的桌面環境,他是GNU計劃的正式桌面.
GNOME計劃是1997年8月由Miguel de Icaza和Federico Mena發起,作為KDE的替代品.
  使用孟加拉國語的GNOMEKDE是一個基於Qt部件工具箱自由的桌面環境,而QT是由 Trolltech開發,當時並未使用自由軟體許可.GNU項目的成員關注於使用象這樣的一種工具箱構造自由的軟體桌面和應用軟體,從而發起兩個項目:一個是作為純粹Qt庫替代品的「Harmony」;還有就是目的在於使用完全與Qt無關的自由軟體構造桌面系統的GNOME項目.


  在GNOME變得實用和普及之後,2000年9月Trolltech在GNU GPL和QPL(去掉了大多數爭論多年的內容)雙重許可證下發布了GNU/Linux版的QT庫.但是Qt的許可證還是在許多人中間有爭議,GPL用於庫時對與之鏈接的代碼-例如的KDE框架和任何為其編寫的程序-都施加了許可證限制.
  GIMP Toolkit(GTK )被選中做為Qt toolkit的替代,擔當GNOME桌面的基礎.GTK 使用GNU寬通用公共許可證(LGPL,一個自由軟體許可證),允許鏈接到它的軟體——例如 GNOME的應用程序——使用任意的許可證.GNOME桌面的庫使用LGPL,而GNOME計劃內的應用程序使用GPL許可證.
  GNOME桌面系統使用C語言編程,但也存在一些其它語言的綁定是的能夠使用其它語言編寫GNOME應用程序,例如C , Java, Ruby, C#, Python, Perl 等等.

[火星人 ] 查看Linux內核、CPU、內存及各組件版本的命令和方法 已經有1180次圍觀

http://coctec.com/docs/linux/show-post-53754.html