本文目的是为了通过在Ubuntu系统上编译多个C程序来熟悉在Linux系统上编写C程序的操作。相关程序名称分别为main1.c、sub1.c、sub1.h;以下采用两种方式进行编译,第一种是直接使用gcc在命令行编译,第二种是使用Makefile文件编译。
文章目录
(一)使用gcc编译c程序
1.编写C程序
2.gcc编译过程及运行
(二)在windows平台c语言编程
(三)使用makefile编译程序
1.makefile文件编写规则
2.编写makefile文件并翻译
(四)总结
提示:以下是本篇文章正文内容,下面案例可供参考
#1.1编译c程序
(1)编写main1.c
代码如下(示例):
//main1.c
#include<stdio.h>
#include"sub1.h"
int main()
{
int a;
int b;
a=3;
b=2;
printf("sum is:%f",x2x(a,b));
return 0;
}
(2)编写sub1.c
代码如下(示例):
//sub1.c
#include"sub1.h"
#include<stdio.h>
float x2x(int a,int b)
{
float m=(float)a;
float n=(float)b;
float z=m*n;
return z;
}
(3)编写sub1.h
代码如下:
//sub1.h
#ifndef _SUB1_H_
#define _SUB1_H_
float x2x(int a,int b);
#endif
1.2 gcc编译过程及运行
.gcc直接编译
步骤一
命令:gcc -c sub1.c
作用:将sub1.c程序转换为目标文件sub1.o
步骤二
命令:gcc main1.c sub1.o -o main1
作用:编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件
步骤三
执行./main1命令,即可执行编译生成的main1程序
运行结果
2.1 在windows平台c语言编程
3.1 makefile文件编写规则
目标文件:【相依文件】
Tab命令【注释】
Tab命令【注释】
3.2 makefile文件编写并翻译
#4.1总结
三、对两种系统不同编译方式的总结
首先,第一部分的内容比较容易,只要学习gcc命令编译即可,第二部分Makefile部分的内容实验因为之前并没有很好的熟悉Makefile的各部分操作,因此在实验过程中出现了很多问题,以下将遇到的主要问题列出,供大家参考改善:
(1)因为Makefile编辑界面的空格引起的在执行界面无法执行make命令。此种问题的解决方式也很简单,只需将编辑界面命令语句前的空格全部用tab键代替即可。
(2)因为sub1.c文件的缺失导致的make执行时无法执行完所有命令。此种问题解决方式添上sub1.c即可。
(3)由于不在文件所在位置打开终端而导致的make命令无法执行问题。起初碰见这种问题时,我以为是gcc编译器的缺失导致,但是经过测试发现gcc正常,找了很长时间才明白终端位置不能随便打开。
最后总结一点:Ubuntu系统在程序编译时,采用gcc编译比较方便,在对多个文件进行维护工作时采用make和Makefile来完成较为容易。三、对两种系统不同编译方式的总结
首先,第一部分的内容比较容易,只要学习gcc命令编译即可,第二部分Makefile部分的内容实验因为之前并没有很好的熟悉Makefile的各部分操作,因此在实验过程中出现了很多问题,以下将遇到的主要问题列出,供大家参考改善:
(1)因为Makefile编辑界面的空格引起的在执行界面无法执行make命令。此种问题的解决方式也很简单,只需将编辑界面命令语句前的空格全部用tab键代替即可。
(2)因为sub1.c文件的缺失导致的make执行时无法执行完所有命令。此种问题解决方式添上sub1.c即可。
(3)由于不在文件所在位置打开终端而导致的make命令无法执行问题。起初碰见这种问题时,我以为是gcc编译器的缺失导致,但是经过测试发现gcc正常,找了很长时间才明白终端位置不能随便打开。
最后总结一点:Ubuntu系统在程序编译时,采用gcc编译比较方便,在对多个文件进行维护工作时采用make和Makefile来完成较为容易。