1、Linux C基础知识,课程内容介绍,熟悉linux环境的安装与一般的操作 C语言重点知识的讲解 字符串的处理与容器的使用,linux 的介绍与安装,linux的背景知识及相关介绍 1. Linux是一类Unix计算机操作系统的统称。Linux操作系统的内核的名字也是“Linux”。Linux操作系统也是自由软件和开放源代码发展中最著名的例.它诞生于1991 年的10 月5 日(这是第一次正式向外公布的时间) 2. linux版本 Redhat,Fedora Fedora 可以说是Redhat 桌面版本的延续,只不过是与开源社区合作 Ubuntu 创建一个可以为桌面和服务器提供一个最新且一贯的
2、 Linux 系统,linux的安装方法与过程,安装软件是VMware 7.1,linux的基本操作命令,1. cd 变换目录名cd 返回上一层目录cd 返回当前用户的根目录2. ls 查看当前目录的内容ls -l 查看当前目录下内容的详细信息3. vi 查看文件内容,当不存在此文件时则新建文件4. rm 删除文件rm -f 删除文件,即使它是只读文件rm -r 删除目录及以下内容rmdir 删除空目录,5. cp 自制文件 cp filename pathcp -a 将文件的属性按原来状态复制过去cp -r 复制文件夹6. mv 移动文件7. mkdir 新建目录 8. cat 将文件内容显
3、示到输入输出或移动另一个文件中cat filenamecat filename1filename2cat -n filename 显示行号,并输出内容,8. chmod 设置文件权限+ 表示增加权限,- 表示取消权限,= 表示唯一设定权限。 r 表示可读取,w 表示可写入,x 表示可执行。-R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更) 其中 u 表示该档案的拥有 者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者 此外chmod 也可以用数字来表示权限如 chmod 777 file 语法为:chmod abc f
4、ile 其中a,b,c 各为一个数字,分别表示User,Group,及 Other 的权限。 r=4,w=2,x=1 若要rwx 属性则4+2+1=7; 若要rw-属性则4+2=6; 若要r-x 属性则4+1=7。,9. chown 设置文件的所有者 将档案 file1.txt 的拥有者设为 users 群体的使用者 jessie: chown jessie:users file1.txt 10. cat 将文件内容显示到输入输出或移动另一个文件中cat filenamecat filename1filename2cat -n filename 显示行号,并输出内容,字符集,abcdefghi
5、jklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0 1 2 3 4 5 6 7 8 9 _ + - * / % = . , : ? “ | ! # & ( ) 空白,C 保留字,auto, bool, break, case, catch, char, class, const, const_cast , continue, default, delete, do, double, else, enum, extern, false, float, for, friend, goto, if, inline, int, long, new, opera
6、tor, private, protected, public, return, short, signed, sizeof, static, struct, switch, template, this, throw, true, try, typedef, union, unsigned, virtual, void, while, ,常量与变量,1. 常量 常量(Constant)是程序中最基本的元素,有字符(Character)常量、整数(Integer)常量、 浮点数(Floating Point)常量和枚举常量printf(“character: %cninteger: %dnfl
7、oating point: %fn“, , 34, 3.14); 有时候不同类型的数据很容易弄混,例如“5“、5、5 2. 变量 变量(Variable)是编程语言最重要的概念之一,变量是计算机存储器中的一块命名的空间,可 以在里面存储一个值(Value),存储的值是可以随时变的,3. 变量命名规则 C语言规定必须以字母或下划线_ 开头,后面可以跟 若干个字母、数字、下划线,但不能有其它字符 4. 局部变量,全局变量,作用域局部变量:一个函数中定义的变量全局变量:定义在函数体之外,在程序运行时分配空间 如果全局变量和局部变量重名了会怎么样呢? 5. 赋值 这里的=表示数学中的相等关系,相当于数
8、学中的=号,初学者常犯的错误是在控制表达 式中把=写成= ,在C语言中=号是赋值运算符,两者的含义完全不同。,第一个linux C程序,1. mkdir MyProgram /新建目录 2. cd MyProgram / 进入新建的目录 3. touch hello.c / 新建一个c文件 4. vi hello.c /进入这个c文件 5. 按下i 键,进入编辑模式 6. 开始写C代码#includeint main()printf(“hello world!rn“);return 0;,7. 按下Ese,然后输入“ : “,再输入“ w“. /保存文件 8. 按下Ese,然后输入“:“,再输
9、入“q“ /退出 9. gcc hello.c /编译c文件 10. ./a /运行编译后的文件 11. 输出内容: hello world!,GDB调试,在VI进行调试程序一般的方式 1. 在适当的位置调用输出语句,如printf 2. linux下的调试工具GDB掌握了gdb的用法之后,调试手段就更加丰富了。但要注意,即使调试手段丰富了,调试的基本思想仍然是“分析现象-假设错误原因-产生新的现象去验证假设”这样一个循环,根据现象如何假设错误原因,以及如何设计新的现象去验证假设,这都需要非常严密的分析和思考,如果因为手里有了强大的工具就滥用而忽略了分析过程,往往会治标不治本地修正Bug,导致
10、一个错误现象消失了但Bug仍然存在,甚至是把程序越改越错。本章通过初学者易犯的几个错误实例来讲解如何使用gdb调试程序,在每个实例后面总结一部分常用的gdb命令,单步执行和跟踪,函数调试实例 #include int add_range(int low, int high) int i, sum;for (i = low; i = high; i+)sum = sum + i;return sum; int main(void) int result100;result0 = add_range(1, 10);result1 = add_range(1, 100);printf(“result
11、0=%dnresult1=%dn“, result0, result1);return 0; ,1. 在编译时要加上-g选项,生成的可执行文件才能用gdb进行源码级调试: 2. 以start开始执行程序 $ gcc -g main.c -o main $ gdb main GNU gdb 6.8-debian Copyright (C) 2008 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type “show copying“ and “show warranty“ for details. This GDB was configured as “i486-linux-gnu“. (gdb),练习,1、用gdb一步一步跟踪factorial函数,查看各层栈帧的变化情况,练习本节所学的各种gdb命令。,GDB基本命令,