Linux(CentOS10) gcc编译

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

21.3 用make进行宏编译

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

bash 复制代码
#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 数值。

bash 复制代码
root@localhost:~/testmake# cat -n main.c
     1	#include <stdio.h>
     2	#define pi 3.14159
     3	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	}
bash 复制代码
root@localhost:~/testmake# cat -n haha.c
     1	#include <stdio.h>
     2	int haha(char name[15])
     3	{
     4		printf ("\n\nHi, Dear %s, nice to meet you.", name);
     5	}
bash 复制代码
root@localhost:~/testmake# cat -n cos_value.c
     1	#include <stdio.h>
     2	#include <math.h>
     3	#define pi 3.14159
     4	
     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	}
bash 复制代码
root@localhost:~/testmake# cat -n sin_value.c
     1	#include <stdio.h>
     2	#include <math.h>
     3	
     4	#define pi 3.14159
     5	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	}
bash 复制代码
#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
相关推荐
luj_17681 小时前
大律师考核应重能力与科技素养
c语言·开发语言·c++·经验分享·算法
刃神太酷啦1 小时前
Linux 系统 MySQL 完整安装配置教程:从卸载 MariaDB 到优化 my.cnf----《Hello MySQL!》(1)
android·linux·c语言·c++·mysql·leetcode·mariadb
赵文宇(温玉)1 小时前
OpenEuler24.03 SP4 系统安装(欧拉/麒麟V10)
linux·openeuler·欧拉
2601_966799042 小时前
酷嗨米J300:一台相机同步推三平台
运维·服务器·负载均衡
AI行业说2 小时前
2026年清洁耗材智能模板机品牌排名:扫地机拖布、美妆粉扑工厂自动化选型指南
运维·自动化
派大鑫wink2 小时前
Dify 工作流搭建操作手册:以信息化运维周报自动生成为例
运维
萌动的小火苗2 小时前
数据结构面试题【无答案】
c语言·开发语言·数据结构·链表
志栋智能3 小时前
超自动化运维:支持微服务架构的运维模式
运维·架构·自动化
Bamtone20253 小时前
Bamtone班通:TDR阻抗测试仪如何高效助力AI服务器高速信号完整性验证?
服务器·人工智能·阻抗测试·阻抗分析
资深电气设计3 小时前
技术分析:空调机房水泵性能优势与系统适配性研究——水力能效、结构集成与智能运维维度
大数据·运维