Linux軟硬鏈接及動靜態庫

?軟硬鏈接與動靜態庫

軟連接

創建鏈接的方法:

  • ln? -s? test1.txt? test2.txt

?其中ln? 是link(鏈接),-s? ?是soft(軟),后者鏈接前者。

?

此時打開test2.txt,發現其中內容與test.txt一致。那么軟連接到底建立了什么聯系?

  • ?首先兩個文件都有獨立的inode號,也就是說他們是兩個獨立文件
  • 其次,如果刪除了目標文件(此處為test.txt),軟鏈接文件則無法使用。反過來只刪除軟連接文件的話,不會對目標文件產生影響。

所以軟連接可以看作是創建一個快捷方式。

硬鏈接

創建鏈接的方法:

  • ln? test1.txt? test2.txt

?其中ln? 是link(鏈接),后者鏈接前者。

  • ?兩個文件共用一個inode,并非獨立文件
  • 2是文件(inode)的屬性,對應的是文件的引用計數

?此時使用? ll -li? 指令查看文件:

  • ?軟連接是通過路徑去查找的(先找路徑,再使用inode),這也就是為什么刪除目標文件就無法使用的原因
  • 硬鏈接是直接通過inode去查找的,建立鏈接后引用計數加一,只要引用結束不為0則不會真正刪除文件。

因為其查找的特點 ,軟連接常用于創建快捷方式,硬鏈接常用于備份。

動靜態庫

編程時很多常用的功能都是提前編好并封裝成庫,而庫則是程序代碼的集合,是共享程序代碼的一種方式。

  • 靜態庫(.a):程序在編譯鏈接的時候把庫的代碼鏈接到可執行文件中。相當于程序自帶靜態庫。
  • 動態庫(.so):程序在運行的時候才去鏈接動態庫的代碼,多個程序共享使用庫的代碼。
  • 鏈接了動態庫的可執行程序的函數地址表中只包含會用到的函數的地址。
  • 動態庫可以在多個程序間共享,所以動態鏈接使得可執行文件更小。

靜態庫創建:

  • ar? ?-rc? ?libmyc.a? ?*.o?

把所有.o文件打包,形成一個文件libmyc.a的靜態庫。

動態庫創建:

-shared 意為共享

  • gcc? ?-shared? ?-o? ?libmyc.so? ?*.o

?動靜態庫優缺點

靜態庫優點:

  1. 靜態庫打包到應用程序當中,加載快
  2. 方便移植

靜態庫缺點:

  1. ?其相同的庫文件數據可能在內存中被加載多份,比動態庫更消耗內存
  2. 庫文件更新需要重新編譯項目文件,生成新的可執行程序,更加耗時

?動態庫優點:

  1. 可實現不同進程間的資源共享
  2. 動態庫升級簡單,只需要替換庫文件,無需重新編譯應用程序
  3. 可以控制何時加載動態庫,不調用庫函數動態庫不會被加載?

動態庫缺點:?

  1. 加載速度比靜態庫滿
  2. 發布程序需要提供依賴的動態庫

動態庫加載

動態庫在程序運行時被加載到物理內存中,與程序進程產生關聯。動態庫加載后,會被映射到進程的地址空間中,先在頁表中填寫虛擬地址和物理地址的映射關系,然后映射到進程地址空間的共享區中。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/14463.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/14463.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/14463.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

輕松購物,盡在購物網

在忙碌的生活中,想要找到心儀的商品,卻總是苦于沒有時間和精力去實體店挑選?別擔心,購物網為您提供一站式的購物體驗。無論是時尚服飾、家居用品,還是美食特產,這里都能滿足您的需求。只需輕輕一點&#xf…

監聽element-ui表格滾動事件

當element-ui表格高度寫死之后,表格內容超出高度就會在右側顯示滾動條,監聽滾動事件 首先給表格加ref,ref"refTable" 然后在mounted生命周期里寫監聽事件 mounted() {this.$refs.refTable.$el.onwheel (e) > {console.log(滾…

深入解析線程上下文切換的原理與優化策略

深入解析線程上下文切換的原理與優化策略 定義觸發條件線程上下文切換的過程線程上下文切換的開銷減少上下文切換的方法示例代碼總結 線程上下文切換(Thread Context Switch)是操作系統調度機制的重要組成部分。它涉及保存當前線程的狀態并恢復新線程的狀…

vue中使用ant的rangePicker設置禁選時間和時間格式

<a-range-pickerstyle"width: 100%":disabled-date"disabledDate"v-model:value"time"valueFormat"YYYY-MM-DD" />valueFormat設置時間格式YYYY-MM-DD 通過dayjs獲取時間&#xff0c;return過濾后的時間 const disabledDate (…

安裝apex時遇到的問題

Apex是混合精度庫&#xff0c;安裝過程中常常出現各種問題&#xff0c;在此記錄一下 首先&#xff0c;不能使用pip install apex,這是兩個完全不同的庫&#xff0c;需要去官網下載 其次&#xff0c;參考官網安裝時可能會報錯&#xff1a;could not build wheels for apex, whic…

C/C++運行時庫和UCRT系統通用運行時庫總結及問題實例分享

目錄 1、概述 2、不同版本的Visual Studio對應的運行時庫說明 3、在Windbg10.0安裝目錄中獲取UCRT通用運行時庫 4、微軟官網對UCRT通用運行時庫的相關說明 5、使用Visual Studio 2017開發軟件初期遇到的UCRT通用運行時庫問題 6、如何查看軟件依賴了哪些C/C運行時庫&#…

后端雪花算法主鍵ID傳到前端變了

Mybatis Plus 的主鍵策略&#xff1a; /*** id*/TableId(type IdType.ASSIGN_ID)private Long id; 這個主鍵策略會用雪花算法生成一個 19位的ID&#xff0c;比如 1791006670084734978 現象 后端生成的 id 是正常的&#xff0c;通過 swagger 文檔此時獲取到的 id 也和數據庫中…

leetcode-盛水最多的容器-109

題目要求 思路 1.正常用雙循環外循環i從0開始&#xff0c;內循環從height.size()-1開始去計算每一個值是可以的&#xff0c;但是因為數據量太大&#xff0c;會超時。 2.考慮到超時&#xff0c;需要優化一些&#xff0c;比如第一個選下標1&#xff0c;第二個選下標3和第一個選下…

Java 面試題日常練習

### 基礎知識 1. **什么是 JVM&#xff1f;解釋其架構。** - JVM&#xff08;Java Virtual Machine&#xff09;是 Java 程序的運行時環境。其架構包括類加載器子系統、運行時數據區&#xff08;堆、棧、本地方法棧、PC 寄存器、方法區&#xff09;、執行引擎和本地方法接口…

心識宇宙 x TapData:如何加速落地實時數倉,助力 AI 企業智慧決策

使用 TapData&#xff0c;化繁為簡&#xff0c;擺脫手動搭建、維護數據管道的諸多煩擾&#xff0c;輕量代替 OGG、DSG 等同步工具&#xff0c;「CDC 流處理 數據集成」組合拳&#xff0c;加速倉內數據流轉&#xff0c;幫助企業將真正具有業務價值的數據作用到實處&#xff0c…

基于springboot實現華府便利店信息管理系統項目【項目源碼+論文說明】計算機畢業設計

基于springboot實現華府便利店信息管理系統演示 摘要 現代經濟快節奏發展以及不斷完善升級的信息化技術&#xff0c;讓傳統數據信息的管理升級為軟件存儲&#xff0c;歸納&#xff0c;集中處理數據信息的管理方式。本華府便利店信息管理系統就是在這樣的大環境下誕生&#xff…

電影《朝云暮雨》觀后感

上周看了電影《朝云暮雨》&#xff0c;看完之后&#xff0c;感覺自己整個人都不太好了&#xff0c;也不是說電影太差&#xff0c;只是覺得電影沒有傳達正能量&#xff0c;讓人很不舒服。 &#xff08;1&#xff09;演技在線 對于著名的演員“范偉”&#xff0c;或者說&#x…

Payload SDK dji

開發硬件 感謝您的耐心等待&#xff0c;建議您可以考慮下樹莓派4B或Jetson Nano開發板&#xff0c;看您需求選擇&#xff0c;OSDK即將停止服務&#xff0c;我們建議您使用PSDK來進行開發&#xff0c;PSDK包含了OSDK的功能。Payload SDK 感謝您對大疆產品的支持&#xff01;祝…

【耕地保衛戰:揭秘“占補平衡”】守護糧倉的智慧策略

嗨&#xff0c;各位小伙伴們&#xff0c;今天咱們來聊聊一個與我們每日餐桌緊密相關的主題——耕地占補平衡。在現代化的車輪滾滾向前時&#xff0c;如何在發展與保護之間找到那個微妙的平衡點&#xff0c;確保我們的“米袋子”滿滿當當呢&#xff1f;這就不得不提到耕地占補平…

SpringSession原理簡析

本文借鑒于&#xff1a;Spring-Session 原理簡析 - 知乎 (zhihu.com) 目錄 概述 使用方式 原理 總結 概述 Session的原理 Session是存在服務器的一種用來存放用戶數據的類哈希表結構&#xff0c;當瀏覽器第一次發送請求的時候服務器會生成一個hashtable和一個sessionid&…

論文閱讀--Language-driven Semantic Segmentation

效果很好&#xff0c;文本增加一個詞&#xff0c;就能找到對應的分割地方&#xff0c;給出的無用標簽也不會去錯誤分割&#xff0c;而且能理解文本意思&#xff0c;例如dog和pet都能把狗給分割出來 image encoder使用DPT分割模型&#xff0c;大致架構為ViTdecoder&#xff0c;d…

【個人經歷分享】末流本科地信,畢業轉碼經驗

本人24屆末流本科&#xff0c;地理信息科學專業。 我們這個專業可以說是 “高不成&#xff0c;低不就”的專業&#xff0c;什么都學但都不精。考研我實在是卷不動同學歷的人&#xff0c;我在大三的時候就開始考慮轉碼。 至于我為什么選擇轉碼&#xff0c;選擇了GIS開發&#xf…

element ui 下拉框Select 選擇器 上下箭頭旋轉方向樣式錯亂——>優化方案

目錄 前言1、問題復現2、預期效果3、input框樣式修改解析4、修改方案 &#x1f680;寫在最后 前言 測試A&#xff1a;那啥&#xff01;摳圖仔&#xff0c;樣式怎么點著點著就出問題了。 前端&#xff1a;啥&#xff1f;css樣式錯亂了&#xff1f;你是不是有緩存啊&#xff01…

js常用數組方法

1.arr.push() -末尾添加 該方法可以向數組末尾添加一個或多個元素&#xff0c;并返回數組新的長度可以將要添加的元素作為方法的參數傳遞&#xff0c;這樣這些元素將會自動添加到元素的末尾原數組會發生變化 var arr [ 1, 2, 3, 4 ] arr.push(5) console.log(arr) // [ 1, …

linux命令arp的使用

arp arp 命令用于顯示和修改 IP 到 MAC 轉換表 補充說明 arp 命令 是 Address Resolution Protocol&#xff0c;地址解析協議&#xff0c;是通過解析網絡層地址來找尋數據鏈路層地址的一個網絡協議包中極其重要的網絡傳輸協議。而該命令可以顯示和修改 arp 協議解析表中的緩…