vi编译器
- 进入vi
- 建立一个文件,如file.c,进入插入方式,输入一个C语言程序的各行内容,故意制造基础错误。最后,将文件存盘。回到shell状态下。
- 运行gcc file.c –o myfile,编译该文件会发现错误提示,理解其含义。
错误提示含义:错误在}之前漏了;输出函数输错应printf
- 重新进入vi,对该文件修改。然后存盘,退出vi。重新编译该文件。如果编译通过,可以用./myfile运行该文件。
- 运行man date > file10,然后 vi file10。
使用x,dd等命令删除某些文本行。
X命令一个一个字符删除
dd命令一行一行删除
使用u命令复制此前的情况。
使用c,r,s等命令修改文本内容。
C命令
R命令
S命令
使用检索命令进行给定模式的检索。
C程序的编译和调试
- 改写例6.1,使用下列选项对它进行编译:-I,-D,-E,-c,-o,-l。
-I进行编译,生成目标文件Imengl存放在/home/rehat目录下,-I命令从目录中搜寻进行编译
-D进行编译,宏定义D=1,可执行文件Dmengl中没有这个宏判断,不输出结果
-E进行编译,gcc –E sq.c直接在命令行窗口中输出预处理后的代码
-c进行编译,生成目标文件mfile.o,sq.o
-o进行编译,生成可执行文件放在mengl文件中,最后执行mengl
-l进行编译,连接标准C语言函数库编译生成可执行文件lmengl
2.对下面程序进行调试
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv)
{
char *p;
int i;
p= malloc(30);
strcpy(p,"not 30 bytes");
printf("p=<%s>\n",p);
if(argc==2){
if(strcmp(argv[1],"-b") ==0)
p[50]='a';
else if(strcmp(argv[1],"-f")==0){
free(p);
p[0]='b';
}
}
/*free(p); */
return 0;
}
编译badprog.c,-g命令调试可执行文件,有一部份代码没执行,出错
利用gdb调试,查看错误信息,没找到错误
利用list显示错误信息
设置断点,运行程序
修改程序,再执行