Chinaunix首页 | 论坛 | 博客
  • 博客访问: 139786
  • 博文数量: 49
  • 博客积分: 2510
  • 博客等级: 少校
  • 技术积分: 595
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-25 23:08
文章分类
文章存档

2011年(1)

2009年(48)

我的朋友

分类: BSD

2009-06-19 22:55:10


 

Shutdown -h now 关机

shutdown -r now 重启

reboot 快速重起 跳过sync过程

init 0 关机

init 5 重启

halt 系统停机

ln -s xx yy

gzip xx

gzip -d xx.gz

tar -czvf xxx.tar.gz

tar -xzvf xxx.tar.gz

cp

mv

chmod

rm -fr

 

df

patch

netstat -nl

netstat -nlu

finger

who

ifconfig

ifconfig eth0 down

ifconfig eth0 up

ifconfig -a

ifconfig eth0 192.168.0.103 network 255.255.255.0

ping

date

cal

cal 05 2009


shell test.sh

while true

do

date;

sleep 1;

done


sh test.sh

chmod 755 test.sh

./test.sh


echo $PATH

echo $HOME

echo $HOSTNAME

echo $LOGNAME

export PATH=/home:$PATH

myfile="hi"

echo $myfile


编译与连接

编译:

1.把源代码转换成机器码的过程

2.之前还会进行前期处理

3.过程中会进行语法检查

4.编译器:完成编译动作的程序

连接:

1.将可执行文件与包含文件/用到的函数库建立关联的过程

编译型语言:需要先经过编译和连接程序产生可执行文件的语言,:java/c/c++

开发人员编译连接

解释型语言:不需要经过编译和连接的过程,直接在特定的程序或环境下即可执行的语言,:javascript/python

自动编译连接

C语言现状:进行底层开发

Linux内核开发

基于Linux嵌入式开发


linux的操作系统内核就主要是用C写的,另外Linux下的很多软件也是用C写的,mysql,apache



开发环境的构成

编辑器:选择VI

编译器:选择GNU C/C++编译器gcc

调试器:应用广泛gdb

函数库:glibc

系统头文件:glibc_header


安装时程序开发 开发工具 gcc/gdb

如想开发图形界面,还需选上GNOME/KDE软件开发


IDE

Kylix号称Linux下的dephi

Kdevelop

RHIDE类似与Turbo C++


gcc(GNU Ccompiler)GNU推出的功能强大,性能优越的多平台编译器,gcc编译器将c\c++语言源程序编译,连接成可执行文件,以下是gcc支持编译的一些源文件的后缀及其解释

.c源代码文件

.h头文件

.i是己经预处理过的c源代码文件

.o是编译后的目标文件

.s是汇编语言学源代码文件


gcc -o hello hello.c

gcc来编译我们的源程序

-o选项要求编译器给我们输出的可执行文件名为hello

hello.c是我们的源程序文件

-c选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件

-g选项表示我们要求编译器在编译的时候提拱我们以后对程序进行调试的信息

执行./hello就可以看到程序的输出结果

函数库glibc

系统头文件glibc_header

gcc依赖binutilscppmake包也是在编译中常用的

查看glibc的版本

ls /lib/libc-*

查看gcc版本号

gcc –version


启动引导程序 /etc/lilo.conf /etc/grub.conf

控制启动模式 /etc/inittab

文件系统配置 /etc/fstab

/etc/profile 增加环境变量等(修改path)

如配置java/j2ee开发环境

/etc/ftp* ftp的配置文件

/etc/httpd web服务器的配置文件

/etc/ssh* ssh的配置文件

/lib 系统所用的库 如C程序库

/lib/modules/2.4.20-8/kernel/drivers/ 驱动模块

/usr/lib 应用程序使用的库 如mysqlAPI


/usr/share/doc/ 用户帮助手册

/usr/src/linux-2.4.20-8/ linux源代码


mount 所挂装分区

fdisk -l [/dev/had] 硬盘分区状况

df -h 硬盘分区的使用情况

du -sh 目录占用空间

uname -a 所用linux版本号

mkdir 创建目录

rm -r -f 递归删除目录,并且不提示

rmdir 删除空目录

cd 切换目录

more /less 查看文件

cat 显示所指文件的内容

mv move

cp copy

fsck

find locate grep

ln -s

chmod

chown

chgrp

diff

cmp


LinuxC程序开发的过程

使用vi等编辑工具编写源程序

保存为*.c

使用gcc编译成二进制可执行文件

./a.out执行

有问题可以使用gdb进行调试

vi hello.c


#include

int main(int argc,char **argv)

{

printf("Hello World!\n");

return 0;

}


gcc -o hello hello.c

./hello


几个字符串函数

strlen

strcmp

strcat

strcpy



指针及指针变量,指向指针的指针


vi example1.c

#include

main()

{

int a,b;

int *p,*q;

a=100,b=2;

p=&a;

q=&b;

int **p1;

p1=&p;

printf("a=%d\nb=%d\n*p=%d\n*q=%d\n*p1=%d\n",a,b,*p,*q,**p1);

}

指针引用传递

vi example2.c

#include

int swap(int *a,int *b){

if(*a>*b){

int t=*a;

*a=*b;

*b=t;

}

}

main()

{

int a=200,b=100;

swap(&a,&b);

printf("a=%d,b=%d",a,b);

}


指针函数

vi example3.c

#include

int *swap(int *a,int *b){

if(*a>*b){

int t=*a;

*a=*b;

*b=t;

}


return a;

}

main()

{

int a=200,b=100;

int *c;

c=swap(&a,&b);

printf("a=%d\nb=%d\n*c=%d\n",a,b,*c);


指针函数

vi example4.c

#include

int max(int a,int b){

return a>b?a:b;

}

main()

{

int a=200,b=100;

int (*c)();

c=max;(*c)(a,b);

printf("a=%d\nb=%d\nc=%d\n(*c)(a,b)=",a,b,(*c)(a,b));

}

指向数组的指针

vi example5.c

#include

main()

{

int *p,i,a[10];

p=a;

for(i=0;i<10;i++)

{

scanf("%d",p++);

}

p=a;

for(i=0;i<10;i++)

{

printf("%d\n",*p++);

}

}

数组指针的移动

vi example6.c


#include

main()

{

int a[5]={1,3,5,6,7};

int *p=a+3;

printf("*p=%d\n*(p+1)=%d\n*p+3=%d\n",*p,*(p+1),*p+3);

}

数组指针的移动

vi example7.c

#include

main()

{

char a[80],b[80],*p,*q;

int n;

gets(a);

scanf("%d",&n);

p=a;q=b;

p+=n-1;

while(*p!='\0')

{

*q=*p;

p++;q++;

}

*q='\0';

puts(b);

}

结构为将不同数据类型,但相互关联的一组数据,组合成一个有机整体使用,C语言提供一种称为”结构”的数据结构.

所谓位段类型,是一种特殊的结构类型,其所有的成员均以二进制位为单位定义长度,并称成员为位段.

结构体共同体 枚举类型 用type定义类型位段结构


结构体,指向结构体的指针,结构成员初始化,结构体数组

cat example8.c

#include

struct data

{

int month;

int day;

int year;

} data1={5,6,2009},data2;

struct data data3;

struct student

{

char name[20];

char sex;

int age;

struct data birthday;

} stu1={"luoxiaoqiang",'M',28,{5,3,2009}},stu[3]={{"Tom",'F',24,{5,3,2009}},{"luoxiaoqiang",'M',28,{5,7,2009}},{"lili",'F',27,{6,3,2008}}};

main()

{

struct data data4;

data4.month=6;

data4.year=2005;

data4.day=10;

printf("%d-%d-%d\n",data4.year,data4.month,data4.day);

printf("%d-%d-%d\n",data1.year,data1.month,data1.day);

printf("name :%s\nsex :%c\nage: %d\nbirthday :%d-%d-%d\n",stu1.name,stu1.sex,stu1.age,stu1.birthday.year,stu1.birthday.month,stu1.birthday.day);

struct student *p;

printf("name sex age birthday\n");

for(p=stu;p

{

printf("%-15s %2c %4d %d-%d-%d\n",p->name,p->sex,p->age,p->birthday.year,p->birthday.month,p->birthday.day);

}

}


共用体共同使用一段内存

vi example9.c


#include

union data

{

int i;

char ch;

float f;

}un1,un2,un3;

struct stru

{

int i;

char ch;

float f;

}stru1;

main()

{

int x=sizeof(un1);

int y=sizeof(stru1);

printf("%d\n%d\n",x,y);

}

枚举类型及自定义类型

vi example10.c


#include

main()

{

enum color {red,green,blue};

enum color i=blue;

if(i>1)

{

printf("Blue\n");

}

typedef int INT;

INT x=100;

printf("type INT value is %d\n",x);

}


阅读(877) | 评论(0) | 转发(0) |
0

上一篇:嵌入式常识

下一篇:UML学习笔记

给主人留下些什么吧!~~