在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

相关文章

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

JWT + 拦截器实现无状态登录系统

《JWT+拦截器实现无状态登录系统》JWT(JSONWebToken)提供了一种无状态的解决方案:用户登录后,服务器返回一个Token,后续请求携带该Token即可完成身份验证,无需服务器存储会话... 目录✅ 引言 一、JWT 是什么? 二、技术选型 三、项目结构 四、核心代码实现4.1 添加依赖(pom

Ubuntu如何升级Python版本

《Ubuntu如何升级Python版本》Ubuntu22.04Docker中,安装Python3.11后,使用update-alternatives设置为默认版本,最后用python3-V验证... 目China编程录问题描述前提环境解决方法总结问题描述Ubuntu22.04系统自带python3.10,想升级

GO语言短变量声明的实现示例

《GO语言短变量声明的实现示例》在Go语言中,短变量声明是一种简洁的变量声明方式,使用:=运算符,可以自动推断变量类型,下面就来具体介绍一下如何使用,感兴趣的可以了解一下... 目录基本语法功能特点与var的区别适用场景注意事项基本语法variableName := value功能特点1、自动类型推

GO语言中函数命名返回值的使用

《GO语言中函数命名返回值的使用》在Go语言中,函数可以为其返回值指定名称,这被称为命名返回值或命名返回参数,这种特性可以使代码更清晰,特别是在返回多个值时,感兴趣的可以了解一下... 目录基本语法函数命名返回特点代码示例命名特点基本语法func functionName(parameters) (nam

基于Python实现自动化邮件发送系统的完整指南

《基于Python实现自动化邮件发送系统的完整指南》在现代软件开发和自动化流程中,邮件通知是一个常见且实用的功能,无论是用于发送报告、告警信息还是用户提醒,通过Python实现自动化的邮件发送功能都能... 目录一、前言:二、项目概述三、配置文件 `.env` 解析四、代码结构解析1. 导入模块2. 加载环

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

深入解析C++ 中std::map内存管理

《深入解析C++中std::map内存管理》文章详解C++std::map内存管理,指出clear()仅删除元素可能不释放底层内存,建议用swap()与空map交换以彻底释放,针对指针类型需手动de... 目录1️、基本清空std::map2️、使用 swap 彻底释放内存3️、map 中存储指针类型的对象

C++ STL-string类底层实现过程

《C++STL-string类底层实现过程》本文实现了一个简易的string类,涵盖动态数组存储、深拷贝机制、迭代器支持、容量调整、字符串修改、运算符重载等功能,模拟标准string核心特性,重点强... 目录实现框架一、默认成员函数1.默认构造函数2.构造函数3.拷贝构造函数(重点)4.赋值运算符重载函数