Linux(CentOS10) gcc编译

 本例子摘自《鸟哥的linux私房菜-基础学习第四版》

21.3 用make进行宏编译

书中的代码在本机器(版本见下)编译出错,改正代码后发布此文章:

#kernel version:
root@localhost:~/testmake# uname -a
Linux localhost 6.12.0-65.el10.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Mar 19 12:37:11 UTC 2025 x86_64 GNU/Linux
#CENT OS distribution:
root@localhost:~/testmake# cat /etc/redhat-release 
CentOS Stream release 10 (Coughlan)

先来想象一个案例,假设我的执行档里面包含了四个原始码文件,

分别是 main.c haha.c sin_value.c cos_value.c 这四个文件,这四个文件的目的是:

main.c :主要的目的是让用户输入角度数据与呼叫其他三支子程序;

haha.c :输出一堆有的没有的讯息而已;

sin_value.c :计算使用者输入的角度(360) sin 数值;

cos_value.c :计算使用者输入的角度(360) cos 数值。

root@localhost:~/testmake# cat -n main.c1	#include <stdio.h>2	#define pi 3.141593	char name[15];4	float angle;5	6	7	int haha(char[15]);8	void sin_value(float);9	void cos_value(float);10	11	int main(void)12	{13		printf ("\n\nPlease input your name: ");14		scanf  ("%s", &name );15		printf ("\nPlease enter the degree angle (ex> 90): " );16		scanf  ("%f", &angle );17		haha( name );18		sin_value( angle );19		cos_value(  angle);20	}

root@localhost:~/testmake# cat -n haha.c1	#include <stdio.h>2	int haha(char name[15])3	{4		printf ("\n\nHi, Dear %s, nice to meet you.", name);5	}
root@localhost:~/testmake# cat -n cos_value.c1	#include <stdio.h>2	#include <math.h>3	#define pi 3.141594	5	void cos_value(float angle)6	{7		float value;8	9		value = cos ( angle / 180. * pi );10		printf ("The Cos is: %5.2f\n",value);11	}
root@localhost:~/testmake# cat -n sin_value.c1	#include <stdio.h>2	#include <math.h>3	4	#define pi 3.141595	void sin_value(float angle)6	{7		float value;8	9		value = sin ( angle / 180. * pi );10		printf ("\nThe Sin is: %5.2f\n",value);11	}
#1.先进行目标文件的编译,最终会有四个 *.o的档名出现:
root@localhost:~/testmake# gcc -c main.c
root@localhost:~/testmake# gcc -c haha.c
root@localhost:~/testmake# gcc -c sin_value.c
root@localhost:~/testmake# gcc -c cos_value.c#2.再进行连接成为执行档,并加入libm的数学函式,以产生main执行档:
root@localhost:~/testmake# gcc -o main main.o haha.o sin_value.o cos_value.o -lm#3.本程序的执行结果,必须输入姓名,360角度的角度值来计算:
root@localhost:~/testmake# ./main#3.1 输入姓名
Please input your name: TT 
#3.2 输入以360角度为主的角度
Please enter the degree angle (ex> 90): 30#3.3 这三行为输出结果哦!
Hi, Dear TT, nice to meet you.
The Sin is:  0.50
The Cos is:  0.87#4 查看文件类型
root@localhost:~/testmake# ls |xargs -n 1 file -i
cos_value.c: text/x-c; charset=us-ascii
cos_value.o: application/x-object; charset=binary
haha.c: text/x-c; charset=us-ascii
haha.o: application/x-object; charset=binary
main: application/x-executable; charset=binary
main.c: text/x-c; charset=us-ascii
main.o: application/x-object; charset=binary
makefile: text/plain; charset=us-ascii
sin_value.c: text/x-c; charset=us-ascii
sin_value.o: application/x-object; charset=binary
sourcetarfile: inode/directory; charset=binary

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/900657.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MCP+Blender创建电力塔

MCP&#xff08;Model Context Protocol&#xff09;与Blender的结合是当前AI与3D建模领域的热门技术&#xff0c;它通过协议化的方式让Claude等AI模型直接控制Blender&#xff0c;实现自动化3D建模。 1. 功能与原理 • 核心能力&#xff1a;用户通过自然语言指令&#xff08;…

Qt与C++数据类型转换

本文深入探讨Qt与C中相似但不同的数据类型处理技巧。 一、QString与std::string的相互转换 1. QString → std::string 方法1&#xff1a;使用toStdString()&#xff08;推荐&#xff09; QString qstr "你好&#xff0c;Qt世界"; std::string str qstr.toStdS…

机器学习+EEG熵进行双相情感障碍诊断的综合评估

摘要 双相情感障碍(BD)是一种常见的精神疾病&#xff0c;特点是躁狂或轻躁狂与抑郁交替发作&#xff0c;其严重程度各异&#xff0c;导致准确及时的诊断具有一定的挑战性。EEG的非线性特征被认为是精神障碍的生物标志物&#xff0c;能够反映大脑的非线性动态。尽管已有研究证明…

企业应用集成全析:架构、实践与展望

企业应用集成全析&#xff1a;架构、实践与展望 一、企业应用集成的基本概念1.1 定义1.2 目标 二、企业应用集成的层次架构2.1 数据集成2.2 应用系统集成2.3 业务流程集成​ 三、企业应用集成的关键技术3.1 中间件技术3.2 Web 服务技术​3.3 企业服务总线&#xff08;ESB&#…

【STL】list介绍(附与vector的比较)

文章目录 1.关于list2.使用2.1 list的构造2.2 list 迭代器的使用2.3 list 容量操作2.3.1 size()2.3.2 empty()2.3.3 resize() 2.4 list 元素访问2.4.1 front()2.4.2 back() 2.5 list 修改操作2.5.1 push_front()2.5.2 pop_front()2.5.3 push_back()2.5.4 pop_back()2.5.5 inser…

【Django】教程-12-柱状图

【Django】教程-1-安装创建项目目录结构介绍 【Django】教程-2-前端-目录结构介绍 【Django】教程-3-数据库相关介绍 【Django】教程-4-一个增删改查的Demo 【Django】教程-5-ModelForm增删改查规则校验【正则钩子函数】 【Django】教程-6-搜索框-条件查询前后端 【Django】教程…

SQL:DDL(数据定义语言)和DML(数据操作语言)

目录 什么是SQL&#xff1f; 1. DDL&#xff08;Data Definition Language&#xff0c;数据定义语言&#xff09; 2. DML&#xff08;Data Manipulation Language&#xff0c;数据操作语言&#xff09; DDL和DML的区别 什么是SQL&#xff1f; SQL&#xff08;Structured …

Chrome 135 版本开发者工具(DevTools)更新内容

Chrome 135 版本开发者工具&#xff08;DevTools&#xff09;更新内容 一、性能&#xff08;Performance&#xff09;面板改进 1. 性能面板中的配置文件和函数调用现已显示来源和脚本链接 Performance > Summary&#xff08;性能 > 概览&#xff09;选项卡现在会显示配…

[ctfshow web入门] web23

前置知识 include&#xff1a;包含一个文件&#xff0c;也可以包含一些其他东西&#xff0c;后续用到再解析 substr&#xff1a;对字符串进行切片&#xff0c;第一个参数是字符串&#xff0c;第二第三个参数出从第a个索引开始切n个&#xff0c;索引从0开始计数。 例如&#xf…

vue3 开发电子地图功能

文章目录 一、项目背景二、页面效果三、代码1.ElectronicMap.vue2.TransferDeskRSSIMap.vue3.Map.js4.src/stores/index.js Vuex存储属性 四、注意点本人其他相关文章链接 一、项目背景 项目采用&#xff1a;vue3javaArco DesignSpringBootOpenStreetMap 数据的地图切片服务。…

oracle 存储体系结构

oracle 存储体系结构 参考&#xff1a; Logical Storage Structures (oracle.com)

python-leetcode 66.寻找旋转排序数组中的最小值

题目&#xff1a; 已知一个长度为n的数组&#xff0c;预先按照升序排列&#xff0c;经由1到n次旋转后&#xff0c;得到输入数组&#xff0c;例如&#xff0c;原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到&#xff1a; 若旋转 4 次&#xff0c;则可以得到 [4,5,6,7,0,1,2]若…

【MATLAB第113期】基于MATLAB的EFAST扩展傅里叶幅度敏感性分析方法(有目标函数)

【MATLAB第113期】基于MATLAB的EFAST扩展傅里叶幅度敏感性分析方法&#xff08;有目标函数&#xff09; 一、方法概述 扩展傅里叶幅度敏感性检验&#xff08;EFAST&#xff09;是一种基于频域分析的全局敏感性分析方法&#xff0c;能够同时评估模型参数的一阶敏感性&#xff…

Tiktok 关键字 视频及评论信息爬虫(1) [2025.04.07]

&#x1f64b;‍♀️Tiktok APP的基于关键字检索的视频及评论信息爬虫共分为两期&#xff0c;希望对大家有所帮助。 第一期见下文。 第二期&#xff1a;基于视频URL的评论信息爬取 1. Node.js环境配置 首先配置 JavaScript 运行环境&#xff08;如 Node.js&#xff09;&#x…

【愚公系列】《高效使用DeepSeek》058-选题策划

🌟【技术大咖愚公搬代码:全栈专家的成长之路,你关注的宝藏博主在这里!】🌟 📣开发者圈持续输出高质量干货的"愚公精神"践行者——全网百万开发者都在追更的顶级技术博主! 👉 江湖人称"愚公搬代码",用七年如一日的精神深耕技术领域,以"…

零基础教程:Windows电脑安装Linux系统(双系统/虚拟机)全攻略

一、安装方式选择 方案对比表 特性双系统安装虚拟机安装性能原生硬件性能依赖宿主机资源分配磁盘空间需要独立分区&#xff08;建议50GB&#xff09;动态分配&#xff08;默认20GB起&#xff09;内存占用独占全部内存需手动分配&#xff08;建议4GB&#xff09;启动方式开机选…

LeetCode 2968.执行操作使频率分数最大

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 你可以对数组执行 至多 k 次操作&#xff1a; 从数组中选择一个下标 i &#xff0c;将 nums[i] 增加 或者 减少 1 。 最终数组的频率分数定义为数组中众数的 频率 。 请你返回你可以得到的 最大 频率分数。 众数指的…

excel经验

Q:我现在有一个excel&#xff0c;有一列数据&#xff0c;大概两千多行。如何在这一列中 筛选出具有关键字的内容&#xff0c;并输出到另外一列中。 A: 假设数据在A列&#xff08;A1开始&#xff09;&#xff0c;关键字为“ABC”在相邻空白列&#xff08;如B1&#xff09;输入公…

HTTP查询参数示例(XMLHttpRequest查询参数)(带查询参数的HTTP接口示例——以python flask接口为例)flask查询接口

文章目录 HTTP查询参数请求示例接口文档——获取城市列表代码示例效果 带查询参数的HTTP接口示例——以python flask接口为例app.pyREADME.md运行应用API示例客户端示例关键实现说明&#xff1a;运行方法&#xff1a; HTTP查询参数请求示例 接口文档——获取城市列表 代码示例…

将飞帆制作的网页作为 div 集成到自己的网页中

并且自己的网页可以和飞帆中的控件相互调用函数。效果&#xff1a; 上链接 将飞帆制作的网页作为 div 集成到自己的网页中 - 文贝 进入可以复制、运行代码