Linux平台C及C++软件开发入门

合集下载

Linux平台C及C++软件开发入门共30页PPT资料

Linux平台C及C++软件开发入门共30页PPT资料
• 多任务并行:分时服务 • 资源共享
– 使用用户可以充分地利用系统资源 – 用户可忽略硬件设备控制细节,只需提出要求
• 操作系统负责操纵设备以完成所希望的工作
– 资源分配策略(如根据优先级) – 通过控制、调度、分配、管理计算机系统资源,
达到对计算机的自动控制
操作系统主要功能
• 存贮管理
– 为每个程序分配足够的存贮空间
• 使用条件
– 编译时要设置-g参数 – 编译结果包含调试信息
• 使用方式
– 利用gdb启动程序 – 指定进程ID,gdb自动attach上去并调试 – 同时调试一个运行程序和core文件
gdb的使用2
• 1、使用gdb启动程序
– gdb myprogram
• 2、设置断点(breakpointb)
短小精悍具有更高的灵活性和适应性linux与windows的不同?linux的应用目标是网络而不是打印纯文本易于跨网络工作linux配置文件和数据都以文本为基础?linux开发更多关注的是其内在功能而非表面的东西?图形环境并没有集成到linux中是运行于系统之上的单独一层可选择?linux不使用文件名扩展来识别文件的类型linux通过文件访问权限来判断文件是否为可执行文件?一旦开始运行将保持运行状态直到受到外来因素的影响除了linux内核之外其他软件的安装启动停止和重新配置都不用重新引导系统?可以远程地完成linux中的很多工作?如果系统中一个特定的服务出现了问题可以在进行故障诊断的同时让其他服务继续运行?命令区分大小写?用户操作没有windows系列方便linux系统的安装分配单独的硬盘分区
• -l(小L)参数
– 添加库文件
• -I(大i)参数
– 添加include文件路径

linux_cmake学习指导

linux_cmake学习指导

在 linux 下使用 CMake 构建应用程序级别:初级王程明 (wangchengming.jlu@), 硕士研究生, 吉林大学计算机科学与技术学院2009 年 2 月 05 日本文介绍了一个跨平台的自动化构建系统 CMake 在 linux 上的使用方法。

CMake 是一个比automake 更加容易使用的工具,能够使程序员从复杂的编译连接过程中解脱出来。

文中通过一些例子介绍使用 CMake 处理多源文件目录的方法、查找并使用其他开发包的方法以及生成 debug 版和 release 版程序的方法。

CMake 简介CMake 是一个跨平台的自动化建构系统,它使用一个名为 CMakeLists.txt 的文件来描述构建过程,可以产生标准的构建文件,如 Unix 的 Makefile 或Windows Visual C++ 的 projects/workspaces 。

文件 CMakeLists.txt 需要手工编写,也可以通过编写脚本进行半自动的生成。

CMake 提供了比autoconfig 更简洁的语法。

在 linux 平台下使用 CMake 生成 Makefile 并编译的流程如下:1.编写 CmakeLists.txt。

2.执行命令 “cmake PATH” 或者 “ccmake PATH” 生成 Makefile ( PATH 是 CMakeLists.txt 所在的目录 )。

3.使用 make 命令进行编译。

第一个工程现假设我们的项目中只有一个源文件 main.cpp清单 1 源文件 main.cpp1 #include<iostream>23 int main()4 {5 std::cout<<"Hello word!"<<std::endl;6 return 0;7 }为了构建该项目,我们需要编写文件 CMakeLists.txt 并将其与 main.cpp 放在同一个目录下:清单 2 CMakeLists.txt1 PROJECT(main)2 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)3 AUX_SOURCE_DIRECTORY(. DIR_SRCS)4 ADD_EXECUTABLE(main ${DIR_SRCS})CMakeLists.txt 的语法比较简单,由命令、注释和空格组成,其中命令是不区分大小写的,符号"#"后面的内容被认为是注释。

Linux下的C编程实战

Linux下的C编程实战

一、开发平台搭建1.引言Linux操作系统在服务器领域的应用和普及已经有较长的历史,这源于它的开源特点以及其超越Windows的安全性和稳定性。

而近年来,Linux操作系统在嵌入式系统领域的延伸也可谓是如日中天,许多版本的嵌入式Linux系统被开发出来,如ucLinux、RTLinux、ARM-Linux等等。

在嵌入式操作系统方面,Linux的地位是不容怀疑的,它开源、它包含TCP/IP协议栈、它易集成GUI。

鉴于Linux操作系统在服务器和嵌入式系统领域愈来愈广泛的应用,社会上越来越需要基于Linux操作系统进行编程的开发人员。

浏览许多论坛,经常碰到这样的提问:“现在是不是很流行unix/linux下的c编程?所以想学习一下!但是不知道该从何学起,如何下手!有什么好的建议吗?各位高手!哪些书籍比较合适初学者?在深入浅出的过程中应该看哪些不同层次的书?比如好的网站、论坛请大家赐教!不慎感激!”鉴于读者的需求,在本文中,笔者将对Linux平台下C编程的几个方面进行实例讲解,并力求回答读者们关心的问题,以与读者朋友们进行交流,共同提高。

在本文的连载过程中,有任何问题或建议,您可以给笔者发送email:21cnbao@,您也可以进入笔者的博客参与讨论:/21cnbao。

笔者建议在PC内存足够大的情况下,不要直接安装Linux操作系统,最好把它安装在运行VMWare 虚拟机软件的Windows平台上,如下图:在Linux平台下,可用任意一个文本编辑工具编辑源代码,但笔者建议使用emacs软件,它具备语法高亮、版本控制等附带功能,如下图:2.GCC编译器GCC是Linux平台下最重要的开发工具,它是GNU的C和C++编译器,其基本用法为:gcc [options] [filenames]options为编译选项,GCC总共提供的编译选项超过100个,但只有少数几个会被频繁使用,我们仅对几个常用选项进行介绍。

C语言入门至精通(全集)

C语言入门至精通(全集)

C语言入门至精通(全集)1. C语言入门1.1 什么是C语言C语言是一种通用的编程语言,最初由贝尔实验室的Dennis M.Ritchie于20世纪70年代开发的,是一种用于UNIX操作系统开发的编程语言。

C语言是一种非常具有表达力的编程语言,它可以用来编写应用程序、系统软件以及各种设备驱动等。

1.2 C语言的发展历史C语言的历史可以追溯到20世纪70年代,当时贝尔实验室的DennisM.Ritchie和Ken Thompson正在开发一种新的操作系统——UNIX。

由于UNIX是用汇编语言开发的,开发效率非常低,因此Dennis M.Ritchie开始着手研究一种新的高级编程语言,这就是C语言。

C语言的第一个编译器是在贝尔实验室开发的,后来由于C语言具有非常好的表达能力,迅速被大量应用于各种领域,成为了一种非常流行的编程语言。

1.3 C语言的特点C语言有以下几个特点:•语法简洁:C语言的语法非常简洁,容易学习,因此非常适合初学者入门。

•高效性:C语言的代码执行效率非常高,可以用来编写各种性能要求较高的应用程序。

•可移植性:C语言可以在不同的操作系统平台上编译运行,具有很好的可移植性。

•功能强大:C语言可以操作内存、文件、网络等资源,具有很高的功能强大性。

•可扩展性:C语言的各种库非常丰富,可以方便地扩展其功能。

1.4 C语言入门指南要学好C语言,需要掌握以下几个方面的知识:•C语言的基本语法:C语言的基本语法包括数据类型、变量、运算符、循环、函数等。

•C语言的程序结构:C语言的程序结构由多个函数组成,需要学习如何编写和调用函数。

•C语言的指针:C语言非常注重内存管理,需要学习如何使用指针操作内存。

•C语言的文件操作:C语言可以用来操作文件,需要学习如何打开、读取和写入文件。

•C语言的预处理指令:C语言的预处理指令可以用来指定编译器的选项,需要学习如何使用预处理指令。

2. C语言进阶2.1 C语言高级编程技巧C语言具有非常高的表达力,可以用来编写高效、复杂的程序。

Linux开发入门实战项目锻炼你的编程能力

Linux开发入门实战项目锻炼你的编程能力

Linux开发入门实战项目锻炼你的编程能力Linux作为一种开源操作系统,被广泛应用于各种领域,特别是在软件开发和系统管理方面。

学习Linux开发将极大地提升你的编程能力和对操作系统的理解。

本文将介绍一些适合入门Linux开发的实战项目,帮助读者锻炼编程技能。

一、Shell脚本批量文件处理项目Shell脚本是Linux下常用的高级命令语言,可以用于进行各种文件处理任务。

通过编写Shell脚本,我们可以快速实现批量文件的复制、重命名、查找替换等操作。

例如,你可以尝试编写一个Shell脚本,将某个文件夹下的所有图片文件复制到另一个文件夹,并重命名为“图片1.jpg”、“图片2.jpg”等。

这个项目将锻炼你的Shell脚本编程技巧和文件操作的熟练度。

二、网络应用开发项目Linux提供了丰富的网络编程接口,可以开发各种网络应用程序,如Web服务器、FTP服务器等。

通过自己动手开发一个简单的网络应用程序,你可以深入了解网络协议、Socket编程和多线程编程等知识。

你可以选择开发一个简单的HTTP服务器,实现基本的请求响应功能。

这个项目将帮助你理解网络通信原理和服务器端编程的基本概念。

三、设备驱动开发项目Linux作为一个开放的操作系统,支持各种硬件设备。

通过学习设备驱动开发,你可以深入了解操作系统内核和硬件交互的原理。

你可以选择一个简单的硬件设备,如LED灯或按键模块,学习并编写相应的设备驱动程序。

这个项目将挑战你对底层硬件访问和操作系统内核的理解。

四、图形界面应用开发项目Linux提供了多种图形界面开发工具包,如GTK+、Qt等,可以开发各种跨平台的图形界面应用程序。

通过学习图形界面应用开发,你可以编写出更加友好和易用的应用程序。

你可以尝试开发一个简单的文本编辑器,实现基本的文本输入、编辑和保存功能。

这个项目将锻炼你的图形界面编程技能和用户交互设计能力。

五、系统性能优化项目Linux作为高性能的操作系统,可以通过各种优化手段提升系统性能。

《Linux C从入门到精通》.明日科技.第19章.Glade 设计程序界面

《Linux C从入门到精通》.明日科技.第19章.Glade 设计程序界面

使用libglade多语言支持
Linux系统本身具备完善的多语言支持体系,可使同一个可执行文件拥有不同地方语言的图形界面,这其中涉及到两个重要 Linux系统本身具备完善的多语言支持体系,可使同一个可执行文件拥有不同地方语言的图形界面,这其中涉及到两个重要 概念:国际化与本地化。 概念:国际化与本地化。 国际化是指将开发者原先使用的母语翻译成多种其他的语言。由于实现翻译的途径、翻译的工作效率、翻译的可重用性等因 国际化是指将开发者原先使用的母语翻译成多种其他的语言。由于实现翻译的途径、翻译的工作效率、翻译的可重用性等因 素各不相同,使翻译工作面临很大困境,也阻碍了软件的推广和应用。为了方便地将软件翻译成不同语言的版本,就需要一 素各不相同,使翻译工作面临很大困境,也阻碍了软件的推广和应用。为了方便地将软件翻译成不同语言的版本,就需要一 套翻译规范和通用工具,于是就诞生了i18n工具集。i18n即“internationalization”的缩写形式,主要使用gettext软件 套翻译规范和通用工具,于是就诞生了i18n工具集。i18n即“internationalization”的缩写形式,主要使用gettext软件 包实现国际化支持。 包实现国际化支持。 本地化是指可执行文件能够根据当前的语言环境选择图形界面上使用的语言。除语言以外,字符编码、语法、度量单位、日 本地化是指可执行文件能够根据当前的语言环境选择图形界面上使用的语言。除语言以外,字符编码、语法、度量单位、日 期时间格式、阅读习惯、使用习惯等也是需要考虑的问题,因此设计了l10n工具集。l10n是localization的缩写形式,主要 期时间格式、阅读习惯、使用习惯等也是需要考虑的问题,因此设计了l10n工具集。l10n是localization的缩写形式,主要 使用locale软件包实现本地化支持。 使用locale软件包实现本地化支持。 在概念中,本地化包含国际化,两者相辅相成。本节假设开发者的母语为英语,本地应用为简体中文,演示libglade对多语 在概念中,本地化包含国际化,两者相辅相成。本节假设开发者的母语为英语,本地应用为简体中文,演示libglade对多语 言的支持。 言的支持。 1.为Glade项目创建po和mo文件 1.为Glade项目创建po和mo文件 po文件意为可移植对象;mo文件意为机器对象。po文件是面向翻译人员、提取于Glade项目的一种资源文件。当软件升级的 po文件意为可移植对象;mo文件意为机器对象。po文件是面向翻译人员、提取于Glade项目的一种资源文件。当软件升级的 时候,通过使用gettext软件包处理po文件,可以在一定程度上使翻译成果得以继承,减轻翻译人员的负担。mo文件是面向 时候,通过使用gettext软件包处理po文件,可以在一定程度上使翻译成果得以继承,减轻翻译人员的负担。mo文件是面向 计算机的、由po文件通过gettext软件包编译而成的二进制文件,程序通过读取mo文件可以使自身的界面转换成用户使用的 计算机的、由po文件通过gettext软件包编译而成的二进制文件,程序通过读取mo文件可以使自身的界面转换成用户使用的 语言。 语言。 假设已建立了一个Glade项目文件ui.glade,其中包含一个主窗体window,窗体标题为User 假设已建立了一个Glade项目文件ui.glade,其中包含一个主窗体window,窗体标题为User Information。窗体中放置着一 Information。窗体中放置着一 个表格容器,然后在容器中装入一组标签构件,构件的标签分别是Name、Gender和Age,然后将标签为Male和Female的单选 个表格容器,然后在容器中装入一组标签构件,构件的标签分别是Name、Gender和Age,然后将标签为Male和Female的单选 按钮装入表格,最后装入一个文本框、一个微调按钮和一组按钮库按钮,如图是Glade设计的英文界面 按钮装入表格,最后装入一个文本框、一个微调按钮和一组按钮库按钮,如图是Glade设计的英文界面 在包含Glade项目文件的目录中创建名为po的目录,进入po目录,创建一个名为POTFILES.in的新文件。用文本编辑器打开该 在包含Glade项目文件的目录中创建名为po的目录,进入po目录,创建一个名为POTFILES.in的新文件。用文本编辑器打开该 文件,输入Glade项目文件的文件名后保存 文件,输入Glade项目文件的文件名后保存 安装intltool工具集,其中包含了gettext软件包。在终端中输入下列命令: 安装intltool工具集,其中包含了gettext软件包。在终端中输入下列命令: yum yum install install intltool intltool 安装后,将工作目录设为“POTFILES.in”文件的目录。输入下列命令创建po文件: 安装后,将工作目录设为“POTFILES.in”文件的目录。输入下列命令创建po文件: intltool-update intltool-update --pot --pot gettext-package=ui gettext-package=ui gettext-package参数的名称为Glade项目文件的前缀名。命令执行成功时会创建untitled.pot文件,该文件是po文件的模 gettext-package参数的名称为Glade项目文件的前缀名。命令执行成功时会创建untitled.pot文件,该文件是po文件的模 板。复制该文件,创建名为zh_CN.po的副本。用文本编辑器打开该文件,将charset=CHARSET改为utf-8,将msgid后的英文 板。复制该文件,创建名为zh_CN.po的副本。用文本编辑器打开该文件,将charset=CHARSET改为utf-8,将msgid后的英文 字符串翻译到下一行msgstr后。代码如下: 字符串翻译到下一行msgstr后。代码如下:

Linux系统下C语言编程及技巧研究

Linux系统下C语言编程及技巧研究

Linux系统下C语言编程及技巧研究Linux是一种自由和开放源代码的类Unix操作系统,广泛用于服务器领域。

同时,Linux系统也是许多开发者和程序员首选的开发环境。

因此,掌握在Linux系统下C语言编程及技巧非常重要。

本文将重点介绍在Linux下进行C语言编程的一些技巧和要点。

1. GNU编译器工具集(GCC)GCC是 GNU编译器工具集的简称,支持多种编程语言,如C、C++、Objective-C、Java等。

在Linux系统下,GCC是编译C程序的主要工具。

开发者可以通过命令行或集成式开发环境(IDE)使用GCC。

2. 环境变量环境变量是Linux系统的重要概念,能够帮助开发者方便地访问系统资源和软件库。

开发者可以通过设置环境变量,指定GCC的默认搜索路径和库路径。

例如,下列命令可将环境变量C_INCLUDE_PATH设置为当前目录:export C_INCLUDE_PATH=.3. 头文件头文件在C语言程序的编写过程中是非常重要的。

Linux系统提供了许多C语言头文件,例如stdio.h、stdlib.h等。

开发者也可以根据需求编写自己的头文件。

在编写程序时,一定要正确地包含头文件。

否则编译器将无法识别预定义的类型和函数。

例如,下列程序演示了如何使用stdio.h头文件中的printf函数:4. 动态链接库动态链接库(Dynamic Linking Libraries,DLL)提供了跨多个程序共享函数和代码的能力。

在Linux系统下,动态链接库通常以.so文件形式出现。

开发者可以通过指定链接器选项使用动态链接库。

例如,下列命令将可执行文件myprog连接到数学库libm.so:gcc -o myprog myprog.c -lm5. 调试器调试器是程序员的重要工具。

调试器能够帮助开发者在程序崩溃或产生错误时追踪问题。

在Linux系统下,调试器gdb(GNU调试器)是普遍使用的工具。

例如,下列命令启动了gdb并加载了可执行文件:gdb ./myprog在gdb命令行下,可以执行多种命令来分析程序的行为,如查看变量的值、单步执行代码、设置断点等。

Linux C 编程

Linux C 编程
设置断点的另一种语法是 break <function>,它在进入指定函数(function)时停住。 相反的,clear 用于清除所有的已定义的断点,clear <function>清除设置在函数上的断点, clear <linenum>则清除设置在指定行上的断点。
watch 命令: watch 命令用于观查变量或表达式的值,我们观查 sum 变量只需要运行 watch sum:
/* filename:main.c */ #include "add.h" main() { int a, b; a = 2; b = 3; printf("the sum of a+b is %d", add(a + b)); } 怎样为上述三个文件产生 makefile 呢?如下:
test : main.o add.o gcc main.o add.o -o test
list 命令: list 命令用于列出源代码,对上述程序两次运行 list,将出现பைடு நூலகம்下画面(源代码被标行号):
根据列出的源程序,如果我们将断点设置在第 5 行,只需在 gdb 命令行提示符下键入如下命令设置断 点:(gdb) break 5,执行情况如下图:
这个时候我们再 run,程序会停止在第 5 行,如下图:
5.小结
本章主要阐述了 Linux 程序的编写、编译、调试方法及 make,实际上就是引导读者学习怎样在 Linux 下编程,为后续章节做好准备。
二 文件系统编程
1.Linux 文件系统 Linux 支持多种文件系统,如 ext、ext2、minix、iso9660、msdos、fat、vfat、nfs 等。在这些具体文件
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• 从源文件到可执行文件
– gcc -E 完成预处理,输出域名(展开)
• #include; #define; etc
– gcc -s 不进行汇编,只生成汇编语言
• 某些代码直接就是用汇编写的
– gcc -c 将原文件编程.o文件(即二进制文件)
• 仍然不可执行,为什么?
– gcc -o 指定输出文件的名字,重新命名
• CPU管理
– 为程序分配优先级 – 采用一定调度方法,以时间片轮转方式轮流占用CPU
• 设备管理
– 控制外部设备的操作 – 在多个作业间分配设备
• 独占设备,如打印机
– 按一定策略轮流分配给用户使用
• 共享设备:磁盘阵列
• 文件管理
– 文件的建立、删除、读取、或写入等方面的服务
• 进程与线程管理、调ቤተ መጻሕፍቲ ባይዱ等
– (gdb) b filename:line-number – (gdb) b filename:function-name – (gdb) b 46 if testsize==100 (当前文件的46行)
• 3、开始执行(runr) • 4、变量的检查和赋值
– – – – whatis:识别数组或变量的类型 ptype:比whatis的功能更强,可以提供一个结构的定义 set variable:将值赋予变量 print :显示一个变量的值外;还可以用来赋值
makefile - 3
• Makefile中的宏定义
– OBJECTS= filea.o fileb.o filec.o – LIBES= -LS – prog: $(OBJECTS) – cc $(OBJECTS) $(LIBES) -o prog
• GNU make 的主要预定义变量
– – – – – – – $*:不包含扩展名的目标文件名称 $+:所有依赖文件(可重复),空格分开,以出现先后为序 $<:第一个依赖文件的名称 $?:所有依赖文件,空格分开,修改日期比目标创建日期晚 $@:目标的完整名称 $^:所有依赖文件,以空格分开,不包含重复的依赖文件 $%:若目标是归档成员,则该变量表示目标的归档成员名称
• Linux 的应用目标是网络而不是打印
– 纯文本易于跨网络工作,Linux 配置文件和数据都以文本为基础
• Linux开发更多关注的是其内在功能而非表面的东西 • 图形环境并没有集成到 Linux 中
– 是运行于系统之上的单独一层,可选择
• Linux不使用文件名扩展来识别文件的类型
– Linux通过文件访问权限来判断文件是否为可执行文件
• 不加-o,输出a.out
makefile - 1
• ―自动化编译”,提高效率
– 写好后,只需调用make,整个工程完全自动编译
• 大多数的IDE都有这个命令
– Delphi的make – Visual C++的nmake – Linux下GNU的make
• Make工具最主要也是最基本的功能
– 通过makefile文件来描述源程序之间的相互关系 – 自动维护编译工作
• 分静态分配
– 编译器完成的,比如自动变量(auto)的分配
• 动态分配
– 由alloc函数完成 – 栈的动态分配无需释放(是自动的)
• 多任务并行:分时服务 • 资源共享
– 使用用户可以充分地利用系统资源 – 用户可忽略硬件设备控制细节,只需提出要求
• 操作系统负责操纵设备以完成所希望的工作
– 资源分配策略(如根据优先级) – 通过控制、调度、分配、管理计算机系统资源, 达到对计算机的自动控制
操作系统主要功能
• 存贮管理
– 为每个程序分配足够的存贮空间
gdb的使用3
• 5、继续执行(continuec) • 6、单步执行
– next(n):不进入的单步执行 – step (s):进入的单步执行 – finish:想退出该函数返回到它的调用函数中
• 7、函数的调用
– (gdb) call gen_and_sork( 1234,1,0 )
• 8、显示数据
makefile - 4
• Makefile中定义模式规则
– 使用模式规则来定义一个隐含规则 – 把所有的[.c]文件都编译成[.o]文件 – %.o : %.c – $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@ – 取消内建的隐含规则,只要不在后面写命令就行 – %.o : %.s
– (3)符合POSIX 1003.1标准
• 能够使用Unix等OS上丰富的应用程序
– (4)较好的可移植性
• 只有小于10%的源代码采用汇编语言编写,其余均采用C
– (5)支持多平台和多处理器 – (6)全面支持TCP/IP网络协议
• TCP、IPv4、IPX、DDP、AX.25等
Linux 与 Windows 的不同
• makefile 文件需要按照某种语法进行编写
– 说明如何编译各个源文件并连接生成可执行文件 – 定义源文件之间的依赖关系
• -f选项
– 缺省文件名为Makefile或makefile – make –f MyMakefile
makefile - 2
• • • • • • • • • • • #It is a example for describing makefile prog : filea.o fileb.o filec.o cc filea.o fileb.o filec.o -LS -o prog filea.o : filea.c a.h defs cc -c filea.c fileb.o : fileb.c b.h defs cc -c fileb.c filec.o : filec.c c.h cc -c filec.c 注1:一定要用Tab键 注2:目标vs依赖关系(最小重建)
• -l(小L)参数
– 添加库文件
• -I(大i)参数
– 添加include文件路径
gdb的使用1
• GDB主要完成下面四个方面的功能
– – – – 启动程序,按照自定义的要求随心所欲地运行程序 设置断点(断点可以是条件表达式) 程序停住时,可以检查此时程序中所发生的事 动态改变程序的执行环境(变量值等)
• 使用条件
– 编译时要设置-g参数 – 编译结果包含调试信息
• 使用方式
– 利用gdb启动程序 – 指定进程ID,gdb自动attach上去并调试 – 同时调试一个运行程序和core文件
gdb的使用2
• 1、使用gdb启动程序
– gdb myprogram
• 2、设置断点(breakpointb)
• 发布到Internet上后不断修改和完善,几年后在全球普及 • 应用平台
– 最初针对的是Intel构架的个人计算机 – 在服务器领域:Sun公司的Sparc工作站、DEC公司的Alpha工作站等 – 嵌入式开发方面具有无可比拟的优势
• 特色
– 源代码是自由分发的,完全公开,完全免费 – 涵盖了Unix的所有特诊,融合了其它OS的东西
– (gdb) print p (p为变量名) – (gdb) print find_entry(1,0)
• 9、程序参数
– (gdb)set args –b –x – (gdb) show args
• 10、断点管理
– (gdb) info break – (gdb) delete breakpoint 1 – (gdb) disable/enable breakpoint 1
Linux系统的安装
• 一般安装
– 分配单独的硬盘分区;设置为Linux支持的硬盘格式
• 虚拟机安装
– 定义:软件模拟的具有完整硬件系统功能的、运行在一个 完全隔离环境中的完整计算机系统 – 可以在一台物理计算机上模拟出一台或多台虚拟的计算机
• 完全就像真正的计算机那样进行工作
– 安装操作系统、安装应用程序、访问网络资源等
– – – – – – – – – – – – man pwd ls cp mv chmod cd echo mkdir rm su netstat
Linux的使用3
• 系统管理员
– 构建各种服务器 – 用户管理 – 系统运行情况监测
• 服务器被攻击
• 开发人员
– 图形化开发工具(如Qt) – 非图形化开发工具(gcc)
– 对用户,虚拟机只是运行在物理计算机上的一个应用程序 – 对虚拟机中运行的应用程序,它就像是一个真正的计算机 – 虚拟机中发生的系统崩溃只是虚拟机上的操作系统
• 不是物理计算机上的操作系统 • 使用 “Undo‖ 功能,可以马上恢复虚拟机到安装软件前的状态
– 当前主流虚拟机
• VMware(VMWare ACE)
• 一般用户
– 很多时候利用图形化界面完成工作
• 娱乐 • 文档编辑 • 上网
gcc及其使用
• GNU之父Stallman开发的Linux下的编译器
– GCC=GNU Compiler Collection
• 目前可以编译的语言
– C, C++, Objective-C, Fortran, Java, and Ada
• 真正的多任务、虚拟存储、快速的TCP/IP实现、共享库、多用户、支持 32位和64位多任务
• Linux应用逐渐普及
– 服务器 – 家庭机
Linux操作系统的特点
• 内核特点:短小精悍,具有更高的灵活性和适应性 • 最大特点:源代码完全公开(核心、驱动,应用程序等) • 主要特点
– (1)多用户、多任务的操作系统
• 一旦开始运行将保持运行状态,直到受到外来因素的影响
– 除了Linux内核之外,其他软件的安装、启动、停止和重新配置都不用 重新引导系统
相关文档
最新文档