Unix/Linux程序环境第1章概述1主讲:姜林美Email:clough@hqu.edu.cnUnix/Linux程序环境第1章概述2课程内容•Linux及Linux编程环境概述•C语言基础与提高•GNU开发工具链的使用•GTK+编程基础•Gtk+基本构件•Gdk与cairo绘图基础•文件•进程、信号和消息队列•shell编程(bash)俄罗斯方块Unix/Linux程序环境第1章概述3参考文献•Internet(google&baidu)•Devhelp•GNU/LINUX环境编程.M.TimJones•UNIX环境高级编程.W.RichardStevens•Linux程序设计(第4版).NeilMatthew.•Linux教程(第2版).孟庆昌,牛欣源.电子工业出版社•Linux应用程序开发指南.机械工业出版社.许宏松等•实用技术:开发Linux应用——用GTK+和GDK开发Linux图形用户界面应用.EricHarlow著.童寿彬等译•FoundationsofGTK+Development.AndrewKrause第一章Linux及Linux编程环境概述4Unix/Linux程序环境第1章概述5§1.1Linux操作系统概述•Linux的诞生和发展([Linux大事TOP100])1991年9月发布0.01版目前最新版本2.6.32查看内核版本:uname-a各版本规模比较Linux内核版本号文件数量(个)源代码行数(行)0.017684130.1299154860.97187389281.004871651652.0116436862012.4.221030246865342.6.27之后未统计1000万行以上Unix/Linux程序环境第1章概述6§1.1Linux操作系统概述•Linux名称的由来及发音Linus最初取名为Freax,后改名为与Linus谐音的Linux根据TorvaldsLinus本人的说法,依照国际音标其发音为[΄linəks]程序环境第1章概述7§1.1Linux操作系统概述•Linux发展要素UnixUnix1969年在Bell实验室诞生,Ken.Thompson和DennisRitchie开发的分时操作系统;大型系统采用的主流操作系统,采用固定机型的解决方案,各主要计算机产商有其自有版本的UNIX;Linux是Unix的一种典型的克隆系统,采用了几乎一致的API接口。Minix由荷兰AndrewS.Tanenbaum于1987年开发完成;主要目的:操作系统原理课程的教学使用。优点:小、有源码Unix/Linux程序环境第1章概述8§1.1Linux操作系统概述•Linux发展要素GNU计划RichardM.Stallman(RMS)1984年创立GNU项目,1985年创办FSF。GNU=GNU‘sNotUNIX,开发了:emacs编辑系统、bashshell程序、gcc系列编译程序、gdb调试程序等免费软件FSF=theFreeSoftwareFoundation,自由软件基金会依靠一些公司捐助和其它商业捐助来维持,进行软件开发的工作和保护、推广自由软件的工作GPL=GeneralPublicLicense(Copyleft),旨在推广自由软件的使用和学习,防止别有用心的公司在对免费软件进行一些修改后就申请版权。因此GPL协议要求在对软件进行修改后,如果要再次发布,就需要将已修改的部分同时发布出来。Unix/Linux程序环境第1章概述9§1.1Linux操作系统概述•Linux发展要素POSIX(PortableOperatingSystemInterfaceforComputingSystems)标准由IEEE和ISO/IEC开发的标准簇,POSIX.1标准(1988年9月批准);描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植运行,可称为Unix的国际标准。最新标准从获取在1991-1993年间,POSIX标准的制定处在最后投票敲定的时候,此时Linux刚刚起步,这个UNIX标准使得Linux能够与绝大多数UNIX系统兼容Internet网络如果没有Intenet网,没有遍布全世界的无数计算机骇客的无私奉献,那么Linux最多只能发展到0.13(0.95)版的水平。Unix/Linux程序环境第1章概述10§1.1Linux操作系统概述•Linux和Unix的异同开源软件vs商业软件;Unix大多与硬件配套,即操作系统与硬件绑定;Linux可运行于多硬件平台;Unix历史悠久,Linux源于Unix但设计思想更优秀;常见版本Unix:Sun的Solaris、IBM的AIX、HP的HP-UX和基于x86平台的SCOUNIX/UNIXware。Linux:Ubuntu、Debian、Slackware、Fedora和RHEL、CentOS、OpenSuSe、Mandriva、红旗Linux等,参见网站:Linux在安装和使用上较Unix容易。Unix/Linux程序环境第1章概述11§1.1Linux操作系统概述•Linux人才需求Linux人才需求超过Unix与Windows持平人才缺口极大(超过100万)程序环境第1章概述12§1.2Linux编程环境•Linux的安装(Ubuntu10.04LTS)在硬件上直接安装光驱安装硬盘安装在虚拟机上安装VMwareworkstationVirtualboxVirtualpc安装后系统更新与升级sudoapt-getupdatesudoapt-getdist-upgradesudoapt-getupgradeUnix/Linux程序环境第1章概述13§1.2Linux编程环境•编程环境的安装及配置中文输入法安装sudoapt-getinstallscimscim-modules-socketscim-modules-tablescim-pinyinscim-tables-zhscim-input-padsudosh-cecho'exportXMODIFIERS=@im=SCIM;exportGTK_IM_MODULE=scim;exportQT_IM_MODULE=scim;scim-d'/etc/X11/Xsession.d/95xinputsudochmod755/etc/X11/Xsession.d/95xinput中文乱码解决程序环境第1章概述14§1.2Linux编程环境•编程环境的安装及配置gvimsudoapt-getinstallvim-gtk选项setsyntax=onsetexpandtabsetnusetts=4setsw=4setsmsetcinsetaisetnowraplet&termencoding=&encodingsetfileencodings=utf-8,gb18030,gbk,gb2312,big5模式:指令、输入、末行基本命令移动:h,j,k,l,w,b,0,$,G;插入:a,i,o,O;更改:r,R,c复制:y;删除:x,d;查找:?,/,f取消:u;重做:ctrl+rUnix/Linux程序环境第1章概述15§1.2Linux编程环境•编程环境的安装及配置build-essentialsudoapt-getinstallbuild-essential编译:gcc–oxxxxfilename.cg++-oxxxxfilename.cpp/ccGTK+参见:编译选项:`pkg-config–cflags–libsgtk+-2.0`eclipsecdt安装参见:其它参见:程序环境第1章概述16§1.2Linux编程环境•Linux的文件组织结构结构图Unix/Linux程序环境第1章概述17§1.2Linux编程环境•Linux的文件组织结构环境变量$PATH:搜索路径$PS1:提示符显示环境变量命令:printenv,env由资源文件预先定义bashshell全局性系统环境变量的资源文件/etc/rcx.d/*/etc/rc.local/etc/profile/etc/environment(仅debain系列如ubuntu)/etc/bashrc或/etc/bash.bashrc(ubuntu下)用户定制的系统环境变量~/.bash_profile~/.bashrc/etc/profile中设定的变量(全局)可以作用于任何用户,用户定制的环境变量只作用于本用户执行顺序为:/etc/profile=[/etc/environment]=(~/.bash_profile|~/.bash_login|~/.profile)=~/.bashrc=/etc/bash.bashrc=~/.bash_logoutUnix/Linux程序环境第1章概述18§1.2Linux编程环境•Linux的文件组织结构环境变量各资源文件的作用:/etc/profile:为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置。/etc/bashrc:为每一个运行bashshell的用户执行此文件.当bashshell被打开时,该文件被读取。~/.bash_profile:用户可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件。~/.bashrc:该文件包含专用于某用户的bashshell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取。~/.bash_logout:当每次退出系统(退出bashshell)时,执行该文件.~/.bash_profile是交互式、login方式进入bash运行的,~/.bashrc是交互式non-login方式(终端窗口)进入bash运行的通常二者设置大致相同,所以通常前者会调用后者。Unix/Linux程序环境第1章概述19§1.2Linux编程环境•L