在VMware虚拟机ubuntu系统中使用gcc和makefile来编写c程序,并在Windows系统下的编译软件中也进行程序运行,通过对比二者的不同来加深对Linux系统的理解。
1.Hello,world程序编写及运行
程序
#include <stdio.h>
int main()
{
printf("hello,world!\n");
return 0;}
运行
2.gcc中main1和sub1程序编写及运行
程序
#include"sub1.h"
int main()
{
int x=2,y=9;
printf("%.2f\n",x2x(x,y));
return 0;
}
#ifndef __sub1_h
#define __sub1_h
#include<stdio.h>
float x2x(int a,int b);
#endif
#include "sub1.h"
/*******************/
/* 参数:a,b */
/* 返回值:ans */
/*******************/
float x2x(int a,int b)
{
float ans;
ans=(float)b/a;
return ans;}
运行
步骤:
命令1:gcc-c sub1.c(转换sub1.c程序成为sub1.o)
命令2:gcc main1.c sub1.o -o main1(转换main1.c程序成为main1.o,链接sub1.o生成main1可执行文件)
命令3:./main1(执行main1程序)
3.Windows系统下使用编译软件程序编写及运行
使用软件:Dev-c++
程序
#include <stdio.h>
// 子程序sub,包含x2x函数
float x2x(int y, int x)
{
return (float) y / x;
}
// 主程序main
int main()
{
int x = 42;
int y = 730;
// 调用子程序sub中的x2x函数并输出结果
printf("运算结果为: %.2f\n", x2x(y, x));
return 0;
}
运行
4.makefile中main1和sub1程序编写及运行
程序
main1:sub1.o main1.c
gcc main1.c sub1.o -o main1
sub1.o:sub1.c
gcc -c sub1.c -o sub1.o
clean:
rm *.o
运行
步骤:
命令1:cd makefile文件所在文件夹名字(定位文件夹位置,否则可能出现找不到文件执行命令)
命令2:make(编译得到main1的可执行文件)
命令3:make clean(删除*.o文件)
5.实验总结
在本次实验中,我分别在Linux系统和Windows系统中撰写并运行了相同功能的C语言程序。
代码运行的关键是将源程序转化为可执行文件的过程。在Linux系统中使用GCC编译器命令将源代码编译为目标文件,然后链接为可执行文件的过程中,包括了预处理、编译和链接等步骤。
在Windows系统中,Dev-C++软件提供了一个简洁的编译和运行环境。直接打开源代码文件并运行即可将源程序编译为可执行文件并执行,相对于Linux系统来说操作更快速方便。
通过在Linux和Windows系统中编写和运行相同功能的C程序,我对代码运行的过程有了更清晰的认识。这个实验提升了我对代码的运行过程和源程序转化为可执行文件的过程的理解。