1. redhat的基本配置
网络配置
菜单:shell中输入setup,配置完后输入service network restart
命令:静态查看:ifconfig 动态分配:dhclient
IP地址的配置
# ifconfig eth0 IP地址netmask 网络掩码
如:ifconfig eth0 192.168.64.3 netmask 255.255.255.0
• 指定默认网关
# route add default gw 网关ip地址
• 指定域名服务器
#vi /etc/resolv.conf
添加:nameserver 域名服务器IP地址
图形:系统设置->网络
配置文件:/etc/sysconfig/network-scripts/ifcfg-文件在RedHat中,系统网络设备的配置
文件保存在/etc/sysconfig/network-scripts目录下,ifcfg-eth0包含第一块网
卡的配置信息,ifcfg-eth1包含第二块网卡的配置信息。
DEVICE= 表示物理设备的名字
IPADDR= 表示赋给该网卡的IP地址
NETMASK= 表示子网掩码
BROADCAST= 表示广播地址
ONBOOT=yes/no 启动时是否激活该卡
BOOTPROTO=none none:无须启动协议
bootp:使用bootp协议
dhcp:使用dhcp协议
GATEWAY= 表示默认网关
MACADDR= 表示指定一个MAC地址
USERCTL=yes/no 是否允许非root用户控制该设备
交互:
U盘:
在终端下输入命令
# fdisk -l
可以找到优盘的盘符
然后mount 就可以了
# mkdir /mnt/usb
# mount -t msdos /dev/sda1 /mnt/usb
如果你的usb设备是FAT32
# mount -t vfat /dev/sda1 /mnt/usb
SSH:
步骤1:检查SSH服务是否开启
• #chkconfig –list|grep sshd
检查防火墙是否屏蔽SSH服务
• #chkconfig –list|grep iptalbes
关闭防火墙
#service iptables stop
Vmtools:
VMtools的安装
• #cd /mnt/cdrom
• #rpm –ivh Vmwaretools.*.rpm
• #vmware-config-tools
或#cp Vmwaretools.*.tar.gz /usr/local
#tar xvzf Vmwaretools.*.tar.gz
#cd vmwaretools
# ./configure
# make
#make install
设置共享文件夹
Samba服务器:
Samba的配置
• 步骤1:检查系统是否安装samba套件
# rpm –qa|grep samba
• 步骤2:如果安装,检查服务是否开启
# chkconfig –list|grep smb
• 步骤3:如果服务没有开启,开启服务
# service smb start
• 步骤4:添加samba用户
# smbpasswd –a 用户名
• 步骤5:检查防火墙配置(配置后面再讲,这里先关闭)
# service iptables stop
• 步骤六:Host请求服务
如果没有安装,附加samba安装:
Linux开发环境:
Vi
Gcc
包括预编译、编译、汇编、链接
Gcc [–o outfile] [-option] infile
常用选项:
-c 编译为目标文件,不连接库
-S 编译为汇编代码
-E 预处理.预处理之后的代码将送往标准输出
-Wwarn... 设置警告,可以设置的警告开关很多,通常用-Wall开启所
有的警告
-O level :设置优化级别,level可以是0,1,2,3或者s,默认为-O0,即不
进行优化处理.
-Dname=definition: 在命令行上定义宏,有两种方式,-Dname或者-
Dname=definition.在命令行上设置宏定义的目的主要是为了在
调试的时候设定一些开关,而在发布的时候再关闭或者打开这些
开关即可,当然宏定义也用来对代码进行有选择地编译.另外也还
有其他的一些作用.
-Uname 取消宏定义name,作用和上面的正好相反.
-Idir... 把dir加到头文件的搜索路径中,而且gcc会在搜索标准头文件之
前先搜索dir.
-llibrary 在连接的时候搜索library库.库是一些archieve文件--其成员是
目标文件.如果有文件引用library,library在命令行的位置应该在那个
文件之后,因此,越底层的库越要放在后面.比如如果你要连接pcap库,
那么你就需要使用-lpcap对源文件进行编译.
-Ldir... 把dir加到库文件的搜索路径中,而且gcc会在搜索标准库文件
之前先搜索dir.
-g 产生调试信息. GDB能够使用这些调试信息。
-o outfile 指定输出文件的文件名,默认为a.out
Gdb
• gdb filename:在shell下直接加载文件进行调试
• file filename:在gdb下通过file命令加载程序进行调试
• kill:终止正在调试的程序
• quit:退出gdb调试环境
• break 函数名或行号[if 条件]
• Info break :显示程序中设置的断点;
• delect breakpoint 断点号:删除指定的断点
• clear 断点号:作用同上
• disable breakpoint 断点号:禁用指定的断点
• enable breakpoint 断点号:允许指定的断点
• run:程序开始执行,一直运行到断点才终止;
• Continue:运行到下一个断点;
• Next:运行下一条指令;
• Step:运行下一条指令;
• list:列出产生执行文件的源代码的一部分.
• watch 变量名:当变量改变时,显示变量修改前后的值;
• print 变量名:打印变量值;
• whatis 变量名或函数名:显示变量或函数的类型;
• Ptype:显示数据结构的定义;
• set args:设置程序的运行参数;
• Show args:显示程序的运行参数;
Makefile
-f FILE 以指定的FILE 文件作为makefile。
-n 只打印要执行的命令,但不执行这些命令。
-s 在执行命令时不显示命令。
利用变量的makefile:
objects = main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : main.c defs.h
cc -c main.c
kbd.o : kbd.c defs.h command.h
cc -c kbd.c
command.o : command.c defs.h command.h
cc -c command.c
display.o : display.c defs.h buffer.h
cc -c display.c
insert.o : insert.c defs.h buffer.h
cc -c insert.c
search.o : search.c defs.h buffer.h
cc -c search.c
files.o : files.c defs.h buffer.h command.h
cc -c files.c
utils.o : utils.c defs.h
cc -c utils.c
clean :
rm edit $(objects)
让make自动推导的makefile:
objects = main.o kbd.o command.o display.o /
insert.o search.o files.o utils.o
edit : $(objects)
cc -o edit $(objects)
main.o : defs.h
kbd.o : defs.h command.h
command.o : defs.h command.h
display.o : defs.h buffer.h
insert.o : defs.h buffer.h
search.o : defs.h buffer.h
files.o : defs.h buffer.h command.h
utils.o : defs.h
.PHONY : clean
clean :
rm edit $(objects)
2. 试验一
将main中定义的字符倒序输出,直接复制pdf存在引号半角问题。
#include <stdio.h>
#include <string.h> //缺
#include <malloc.h> //vc下必须要这个
int display1(char * string);
int display2(char * string);
int main()
{
char string[]="informaiton security";
display1(string);
display2(string);
}
int display1(char* string)
{
printf("the orginal string is %s/n",string);
return 0; //缺
}
int display2(char * string1)
{
char * string2;
int size,i;
size = strlen(string1);
string2 =(char*)malloc(size+1);
for(i=0;i<size;i++)
string2[size-i-1]=string1[i]; //原来是string2[size-i]=string1[i];要知道strlen求出来的是’/0’之前的个数。此题中为20。
string2[size]='/0'; //原来是string2[size+1]='/0';
printf("the changed string is %s/n ",string2);
return 0; //缺
}