- 11
- 0
- 约5.13千字
- 约 8页
- 2016-12-19 发布于贵州
- 举报
试验2:makefile创建与使用
试验目的:
1、掌握桌面环境KDE的基本使用方法
2、掌握KDE代码编辑器gedit的基本使用方法
3、掌握多源文件编译链接的方式
4、掌握makefile的写法
试验原理
(1)多源文件编译链接的方式
编译:狭义的编译是指将高级语言代码翻译成汇编代码;
汇编:狭义的汇编是将汇编代码翻译成二进制(机器语言代码)代码,对于出现子程序调用的语句,如果该函数是主文件外部实现的,则在主文件汇编的时候,该调用并不真正去实现该调用。
链接:将各个函数的实现文件所汇编成的机器码和主程序链接到一起。形成最终的可执行文件。
头文件功能:函数类型声明,全局结构体声明,宏声明。
(2)makefile的写法
依赖关系:依赖关系主要靠表达符号“:”表示,含义指冒号左侧的符号依赖右侧的符号,或由右侧的符号生成。
命令规则:命令规则的第一个符号为TAB符号,一般为编译汇编指令(gcc)或其他shell指令。当命令规则上面的一条依赖文件出现更新时,系统将执行本行代码
(3)试验过程
使用编辑器gedit创建相关源文件,各个源文件代码如下:
//main.c
#include mytool1.h
#include mytool2.h
#include stdio.h
int main(void){
putchar(\n);
mytool1_print(hello);
mytool2_print(hello);
return 0;}
//mytool1.c
#include stdio.h
void mytool1_print(char *psz){
printf(this is mytool1 print:%s\n,psz);}
//mytool1.h
void mytool1_print(char *);
//mytool2.c
#include stdio.h
void mytool2_print(char *psz){
printf(this is mytool2 print:%s\n,psz);}
//mytool2.h
void mytool2_print(char *);
//makefile
main:main.o mytool1.o mytool2.o
gcc -o main main.o mytool1.o mytool2.o
main.o:main.c mytool1.h mytool2.h
gcc -c -g main.c
mytool1.o:mytool1.c mytool1.h
gcc -c -g mytool1.c
mytool2.o:mytool2.c mytool2.h
gcc -c -g mytool2.c
试验报告要求
写出各个源文件(截图)
试验3:linux系统程序调试-行列式求值程序
试验目的:掌握使用gdb调试程序的方法
试验器材:PC机器、redhat9,kde
试验原理
(1)程序可以被调试的原因
程序编译的时候,使用特殊的指令在目标文件之间加入特殊的信息,建立程序目标码和程序源代码之间的联系,调试程序利用这些信息控制程序的流程,帮助程序员分析程序实际执行过程与程序员设计执行过程之间的联系,进而找出程序的错误。
(2)调试程序的流程
1、编程程序的时候使用-g指令,生成调试版程序;
2、在gdb中调入调试版程序;
3、在程序的起始位置加入断点 break main
4、运行程序
5、使用step指令,next指令单步运行程序,使用continue指令运行到程序的下一个断点,使用display,print指令查看和更改变量的数值,分析程序的实际运行过程和设计过程之间的差别。
(3)要调试程序如下:
#include stdio.h
#include time.h
#define MUCH_ZERO
typedef int Type;
Type* JZyzs(Type *b,Type *a,int nn,int i,int j )
{
int m,n,N=nn-1;
for(m=0; mi; m++)
{ for(n=0; nj; n++)
b[m*N+n]=a[m*nn+n];
for(; nN; n++)
b[m*N+n]=a[m*nn+n+1];
}
for(; mN; m++)
{ for(n=0; nj; n++)
b[m*N+n]=a[m*nn+nn+n];
for(; nN; n++)
b[m*N+n]=a[m*nn+nn+n+1
原创力文档

文档评论(0)