linux下c开发

[size=large][b][align=center]第一章 编程语言、c语言简介[/align][/b][/size][b]程序语言的简单定义[/b]
什么是程序? 我们必须通过指令,指挥计算机执行我们想要做的动作。依照顺序执行一组指令就是程序。
程序的作用?指挥计算机干活。
程序的特征
程序是与计算机沟通的语言。
程序是由特定的语法与关键字构成。
程序是一行一行执行的。
程序的执行,从入口点开始,原则上由上而下,从左而右。
[b]程序的演化[/b]
机器语言、汇编语言、高级语言、第四代语言、自然语言。
[b]机器语言[/b]
是计算机唯一能够直接执行。
其它的语言必须先转化为机器语言。
指令由0与1组成,称为机器码。
指令难以记忆,但执行速度最快,
不同类型的机器有不同的机器码,不具备移植性。
[b]汇编语言[/b]
相当接近于机器语言,称为低级语言。
用助记码代码机器码,比较容易记忆,如add。
必须进行汇编,转化成机器语言。
不具备移植性。
[b]高级语言[/b]
离机器越来越远。
语法接近人类自然语言。
执行的单位不是指令,而是语句,一行语句对应多个指令。
开发效率越来越高。
必须编译成机器码。
移植性比较好。
[b]第四代语言[/b]
4GL,也称为面向为问题的程序语言。
仅需告诉计算机“做什么”,不需要指挥计算机如何去做。
大大提高开发效率。
如SQL语言及各种查询语言,如基于xml的查询语言。
自然语言
运用人工智能,以接近口语的指令指挥计算机,但现在还不是很成熟,如语言识别,指纹识别。
[b]编译与连接[/b]
编译
1. 把源代码转换为机器码的过程。
2. 在编译之前会进行前期处理。
3. 过程当中会进行语法检查。
4. 编译器:完成编译动作的程序。
连接
1. 将可执行的文件与包含的文件/用到的函数库建立关联关系。
[b]编译型语言与解析型语言[/b]
编译型语言:需要先经过编译和连接产生可执行文件,如java/c/c++。à开发人员编译连接
解析型语言:不需要先经过编译和连接过程,直接在特定的程序或环境下即可执行的语言,如JavaScript/Python语言。à自动编译连接
[b]几个基本概念[/b]
数据:是计算机程序处理的对象,可以是整数、整数、字符,也可以是图像、声音等的编码表示。
数据结构:指的是数据与数据间存在一种或多种特定关系,与数据结构密切相关的便是数据的类型和数据的存放。
程序设计:编写程序的过程。
软件:程序+文档。

[align=center][size=large][b]第二课 Linux下c程序开发环境[/b][/size][/align]
[b]概述[/b]
Linux天生和C有不解之缘,Linux的操作系统内核就是用C语言写的,另外Linux下很多软件也是用C语言写的,特别是一些著名的服务软件,比较MySQL、Apache。
[b]开发环境构成[/b]
编辑器:选择VI
编译器:选择GNU C/C++ 编译器gcc
调试器:应用广泛的gdb
函数库:glibc
系统头文件:glibc_header
[b]安装时要注意[/b]
在安装Linux时要选上“程序开发”的开发工具,就可以自动安装gcc/gdb
若想开发图形界面,还需要选上GNOME/KDE软件开发。
[b]IDE[/b]
Kylix:号称Linux下的dephi
Kdevelop
RHIDE:类似于Turbo c++
[b]编译器gcc[/b]
gcc是GNU推出的功能强大、性能优越的多平台编译器,gcc编译器能将c、c++源程序编译连接成可执行程序,以下是gcc支持编译的一些源文件后缀及其解释。
.c 为后缀的文件,c语言源代码文件。
.h为后缀的文件,是程序所包含的头文件。
.i为后缀的文件,是已经予处理的过的C源代码文件。
.o为后缀的文件,是编译后的的目标文件。
.s为后缀的文件,是汇编语言源代码文件。
gcc –o hello hello.c
用gcc来编译我们的源程序件。
-o选项要求编译器给我们输出的可执行文件为hello
-c 表示我们只要编译器输出目标代码,而不必输出可执行文件
-g 表示表示我们要求编译器编译时提供我们以后对程序进行调试的信息。
执行./hello就可以看到程序的输出结果。
[b]函数库 glibc[/b]要构架一个完整的c开发环境,Glibc是必不可少的,它是Linux下c的主要函数库,Glibc有两种函数库
安装成测试用的函数库
安装成主要的c函数库
glibc2包含几个附加包:LinuxThreads、Locale和crypt,通常它们的文件名随版本不同而类似下列文件名:
glibc-2.0.6.tar.gz
glibc- linuxThreads -2.0.6.tar.gz
glibc- Localedate-2.0.6.tar.gz
glibc- crypt-2.0.6.tar.gz
Glibc提供系统调用和基本函数的C库,比如open、malloc、printf等等,所有动态连接的程序都要使用它。
[b]系统头文件 glibc-header[/b]缺少系统头文件,很多用到系统功能的c程序将无法编译。
假如少装了这些包,可以找到Linux安装文件相关的rpm包进行安装。
[b]C开发环境对应的RPM包[/b]
由于gcc需要依赖binutils和cpp包,另外make包也在编译时常用,所以一共需要8个包来完成安装。
cpp-*.rpm
binutils-*.rpm
glibc-*.rpm
glibc-kernheaders-*.rpm
glibc-common-*.rpm
glibc-devel-*.rpm
gcc-*.rpm
make-*.rpm
查看glibc的版本 ls/lib/libc-*
查看 gcc的版本gcc –-version
[b]Linux下c程序开发过程[/b]
使用vi等编辑工具编写源程序,保存为*.c。
使用gcc编译成二进制可执行文件。
./a.out执行。
有问题可用gdb进行调试。

Hello.c
int main(int argc,char **argv){
printf(“Hello,Linux \n”);
return 0;
}
[b]c语言程序结构[/b]c语言由函数构成,至少且只有一个入口;main函数是程序的入口点,执行程序时第一个执行的函数。
函数由函数的原型和函数体(包含变量定义和语句部分组成);
main(){
变量说明
语句
}
语句必须以;作为结束标记
/* 注释*/ //注释
printf(“普通字符或%开头或用\开头”,输出内容)
“{” ”}” 函数体的开始结束标记
予处理命令用#include包含有关文件信息。
Scanf(“输入数据格式”,&输入变量);
[b]C 程序组成[/b]
可执行程序:最终执行的命令。
包含文件:include定义文件。
库文件:该c程序自定义的库。
比如用RPMP安装mysql数据库
可执行文件:/usr/bin
包含文件:/usr/include/mysql
库文件:/usr/lib/mysql
------------------------
gcc:查看是否安装了gcc
gcc –version:查看gcc版本
ls /lib/libc-*


[size=xx-large][align=center]第三课 Linux 基础[/align][/size]
[b]Linux简介 [/b]1. 芬兰大学生Linus 在1990-1991年开发。
2. 开放源代码的优秀操作系统。
操作系统介绍
1. 操作系统:是作为用户与计算机接口的软件程序。
2. 操作系统功能:命令解释、进程管理、内存管理、输入输出(I/O)操作和外围设备管理、文件管理。
[b]Linux特点[/b]
开放性、多用户、多任务、出色的稳定性和速度性能、丰富的网络功能、可靠的系统的安全、可移植性。
Linux关机方法
1. shutdown –h now 关机
2. shutdown –r now 重启
3. reboot 快速重启
4. int 0 关机 init 6重启
5. halt 系统停机
[b]Linux系统结构[/b]
外层应用程序àshellàKernelà硬件
shell:执行命令
Kernel:驱动程序
[b]Linux目录结构[/b]
在linux、unix下所有硬件、软件都是做为硬件存在
1. 存放命令的目录 /bin 、/sbin、/usr/bin、usr/sbin、usr/local/bin
2. /boot 内核及其它系统启动所需要的文件
3. /opt安装大的应用程序
4. /tmp 临时文件
5. lost+found 系统修复过程中恢复的文件
6. root 超级用户主目录
7. /dev device设置目录
b-block块设备、c-character字符设备、Linux硬件设备对应文件、光驱/dev/cdrom、软驱/dev/fd0
8. /etc 配置文件所在的子目录
启动引导程序 /etc/lilo.conf 、/etc/grup.conf 多系统启动设置
控制启动模式 /etc/inittab (图形/文本登录) 3:文本 5:图形模式
文件系统配置 /etc/fstab
/etc/profile 增加环境变量 (修改PATH路径)如修改JAVA/J2EE开发环境
/etc/ftp* ftp的配置文件
/etc/httpd web服务器的配置文件
/etc/ssh* ssh的配置文件

/etc/inittab文件
文字界面登录 init 3 图形化登录 init 5 单用户模式init 1
在字符界面模式下如果显示为乱码,则执行unset LANG
9. /home
/home/username 用户主目录
创建新用户 useradd username
添加密码 passwd username
/etc/passwd :系统能够识别的用户清单,纯文本显示了加密的口令。
/ect/shadow:超级用户才能读,用于保护加密口令的安全。
10. /lib 库文件的目录
/lib 系统所用的库 如c程序库
/lib/modlus/2.4.20-8/Kernel/drivers 驱动模块
/usr/lib 应用程序使用的库 如mysql的API
11. /mnt目录
光驱装载 mount – t iso9660 /dev/cdrom /mnt/cdrom
卸载 umonut /mnt/cdrom
装载 先在/mnt下新建目录 u_disk u盘 mount /dev/sdb1 /mnt/u_disk
12. /usr目录
/usr/doc /usr/share/doc 帮助文档
man命令 查看命令的手册页
info 命令 查看命令的帮助
命令 –help
/usr/src/linux-2.4.20-8 linux源代码

x11:用于x windows
bin:几乎所有的命令程序,开发的程序
sbin:系统管理所用的命令
include c语言头文件
lib 库文件和数据库文件
local 本地安装的软件
share 共享的文件或数据
13. /var目录
www apache的文档目录
lib 系统运行时随时改变的文件
local /usr/local程序的可变数据
log 日志
spool 邮件,新闻等队列的脱机目录
tmp 临时文件
[b]了解所用硬盘的的信息[/b]mount 所挂装的分区
fdisk –l 硬盘分区状况
df –h 硬盘分区的使用状部
du –sh 目录占用的空间
uname –a 所用linux版本号
[b]Linux常用文件操作命令[/b]
mkdir 创建目录
rmdir 删除空目录
rm –r –f 递归的删除目录,并且不提示
pwd 查看当前目录
cd 切换目录
ls 格式 ls [ 参数][路径文件名]
参数:-a、 –l、-R 递归所有目录和文件、-d 不递归
more/less文件 :查看文件内容
cat :查看文件内容
mv 移动目录或文件 mv [参数] <src> <des>
cp 复制目录或文件 cp[参数] <src> <des> -R 递归copy
[b]Linux文件类型[/b]
普通文件(-):文本文件和二进制文件。
目录文件(d):文件夹
链接文件:ln创建的文件
特殊文件:设备文件(b 、c)和管道文件(p)
ls –l 可以查看文件类型
[b]检查文件系统[/b]
当系统非正常关机,可能无法进入系统,这时可用fsck修复磁盘
fsck [选项] <设备名>
-p 自动修正安全更正并且不会导致数据丢失的问题
fsck –p –t ext2 /dev/hda2
[b]文件的查找[/b]
find 路径 [选项]
find /etc -name passwd
-size 根据文件大小
-type 根据文件类型
locate
locate –u &
grep [选项] 查找模式 文件名 [文件名…]
grep [参数] ‘str’ filelist
-n 显示匹配的行号
-I 忽略大小写
-r 递归查找
[b]索引节点[/b]linux文件系统使用索引文件记录文件信息,作用类似于window的文件分配表
索引节点是一个结构, 它包含了一个文件的长度,创建、修改时间、许可权、所属关系。
硬盘中位置等信息.
对于一个文件有唯一的索引节点号与之对应,而对于索引节点号却可以有多个文件名与之对应。
可以用ln命令对已经存在的文件创建连接,而不是复制文件。
[b]Linux用户类型[/b]
系统管理员(root)
文件的拥有者(u)
组拥有者(g)
其它用户(o)
[b]文件目录的权限[/b]rwx r:读权限 w:写权限 x:执行权限
chmod 750 文件/目录名
设置u:所有权限、g :r x权限、o:无权限
改变文件目录的访问权限
符号标记法
chmod (ugoa) (+-=) (rwx) filename/filelist
数字标记法
例:chmod 755 /usr/local/*
文件比较
找出两个文本文件的差异
diff [参数] <file> <file>
-w 忽略所有空格
-I 忽略大小写
cmp 比较任意的两个文件
cmp [para] <file> <file>
[b]重定向[/b]
重定向改变关于标准输入、输出、错误分配
输入重定向
$cat <test1
错误重定向
$cat datafile 2>error -mesg
输出重定向
$cat test1>test2
[b]网络主要命令[/b]ifconfig
ping
route –n
netstat
[b]Linux系统应用软件分发格式[/b]tar包 unix系统打包工具
rpm 包 RedHat 公司提供的软件包封装格式
dpkg包 debian 公司提供的软件包封装格式 ,后缀名deb
rpm包
安装rpm包: rpm –ivh rpm包
升级 rpm包: rpm -Uvh rpm包
删除rpm包: rpm –e rpm包
列出信息 :rpm –qi 包名称
显示命令所在的包:rpm –qf ‘which 命令’
包中的文件列表:rpm –ql rpm包
http://www.rpmfind.net
备份格式介绍
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值