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.pswp.cn/news/900657.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900657.shtml
英文地址,請注明出處:http://en.pswp.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 集成到自己的網頁中 - 文貝 進入可以復制、運行代碼