在Ubuntu系统下用gcc和makefile/在Windows系统下用Visual C++6.0编译C语言程序

本文主要是介绍在Ubuntu系统下用gcc和makefile/在Windows系统下用Visual C++6.0编译C语言程序,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Ubuntu系统下用gcc和makefile/在Windows系统下用Visual C++6.0编译C语言程序

程序说明:请编写一个主程序文件 main1.c 和一个子程序文件 sub1.c, 要求:子程序sub1.c 包含一个算术运算函数 float x2x(int a,int b),此函数功能为对两个输入整型参数做某个运算,将结果做浮点数返回;主程序main1.c,定义并赋值两整型变量,然后调用函数 x2x,将x2x的返回结果printf出来。

1.用gcc编译

1.1创建一个sub1.h的头文件
在这里插入图片描述在gedit编译器编写头文件sub1.h

#ifnedf _SUB1_H_
#define _SUB1_H_
float x2x(int a,int b);
#endif

1.2创建一个sub1.c文件
在这里插入图片描述
在gedit编译器编写sub1.c

#include"sub1.h"
float x2x(int a,int b)
{
float x=a+b;
return x;
}

1.3创建一个main1.c文件
在这里插入图片描述
在gedit编译器编写main1.c文件

#include<stdio.h>
#include"sub1.h"
void main()
{
float y=x2x(2,2);
printf("a+b=%lf\n",y);
}

1.4用gcc编译C文件
先将sub1.c文件用gcc编译成目标文件sub1.o;
再将main1.c文件用gcc编译成目标文件main.o;
最后将两个文件合成一个可执行文件,并运行结果如下:
在这里插入图片描述

2. 用Visual C++6.0编译

2.1首先创建一个工程
在这里插入图片描述
2.2在工程下面创建一个头文件sub1.h
在这里插入图片描述
编写头文件,程序如下:

#include<stdio.h>
float x2x(float a,float b)
{float x=a+b;return x;
}

2.3在工程下创建一个主程序main1.c
在这里插入图片描述
编写主程序:

#include<stdio.h>
#include"sub1.h"
void main()
{int a=2;int b=2;float y;y=x2x(a,b);printf("%f\n",y);
}

2.4编译并运行,输出如下
在这里插入图片描述
在这里插入图片描述

3.用makefile编译

3.1用gedit创建makefile文件
在这里插入图片描述

sharapova: main.o sub1.o
gcc -o sharapova main.o sub1.o
main1.o: main1.c
gcc -c main1.c
sub1.o: sub1.c
gcc -c sub1.c

3.2编译makefile文件
用make命令
编译所有.c文件生成可执行文件,并输出结果
在这里插入图片描述
以上输出说明编辑makefile时出现了格式错误
正确的格式如下:

sharapova: main.o sub1.ogcc -o sharapova main.o sub1.o
main1.o: main1.cgcc -c main1.c
sub1.o: sub1.cgcc -c sub1.c

注:gcc前都需要tab键空格
正确输出结果如下:
在这里插入图片描述

这篇关于在Ubuntu系统下用gcc和makefile/在Windows系统下用Visual C++6.0编译C语言程序的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917861

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

深入理解Go语言中二维切片的使用

《深入理解Go语言中二维切片的使用》本文深入讲解了Go语言中二维切片的概念与应用,用于表示矩阵、表格等二维数据结构,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录引言二维切片的基本概念定义创建二维切片二维切片的操作访问元素修改元素遍历二维切片二维切片的动态调整追加行动态

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

java使用protobuf-maven-plugin的插件编译proto文件详解

《java使用protobuf-maven-plugin的插件编译proto文件详解》:本文主要介绍java使用protobuf-maven-plugin的插件编译proto文件,具有很好的参考价... 目录protobuf文件作为数据传输和存储的协议主要介绍在Java使用maven编译proto文件的插件

c++ 类成员变量默认初始值的实现

《c++类成员变量默认初始值的实现》本文主要介绍了c++类成员变量默认初始值,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧... 目录C++类成员变量初始化c++类的变量的初始化在C++中,如果使用类成员变量时未给定其初始值,那么它将被

如何在Ubuntu 24.04上部署Zabbix 7.0对服务器进行监控

《如何在Ubuntu24.04上部署Zabbix7.0对服务器进行监控》在Ubuntu24.04上部署Zabbix7.0监控阿里云ECS服务器,需配置MariaDB数据库、开放10050/1005... 目录软硬件信息部署步骤步骤 1:安装并配置mariadb步骤 2:安装Zabbix 7.0 Server

C++中NULL与nullptr的区别小结

《C++中NULL与nullptr的区别小结》本文介绍了C++编程中NULL与nullptr的区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编... 目录C++98空值——NULLC++11空值——nullptr区别对比示例 C++98空值——NUL

C++ Log4cpp跨平台日志库的使用小结

《C++Log4cpp跨平台日志库的使用小结》Log4cpp是c++类库,本文详细介绍了C++日志库log4cpp的使用方法,及设置日志输出格式和优先级,具有一定的参考价值,感兴趣的可以了解一下... 目录一、介绍1. log4cpp的日志方式2.设置日志输出的格式3. 设置日志的输出优先级二、Window

Ubuntu如何分配​​未使用的空间

《Ubuntu如何分配​​未使用的空间》Ubuntu磁盘空间不足,实际未分配空间8.2G因LVM卷组名称格式差异(双破折号误写)导致无法扩展,确认正确卷组名后,使用lvextend和resize2fs... 目录1:原因2:操作3:报错5:解决问题:确认卷组名称​6:再次操作7:验证扩展是否成功8:问题已解

使用Docker构建Python Flask程序的详细教程

《使用Docker构建PythonFlask程序的详细教程》在当今的软件开发领域,容器化技术正变得越来越流行,而Docker无疑是其中的佼佼者,本文我们就来聊聊如何使用Docker构建一个简单的Py... 目录引言一、准备工作二、创建 Flask 应用程序三、创建 dockerfile四、构建 Docker