国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 操作系統 > 正文

第二課 GCC入門之靜態庫以及共享庫

2024-06-28 13:25:18
字體:
來源:轉載
供稿:網友
第二課 GCC入門之靜態庫以及共享庫序言:

  前面一課講了gcc的簡單入門,包括gcc編譯步驟:預處理;編譯;匯編;鏈接。今天這節課就來講下linux的庫也歡迎大家吐糟共同學習。

原理:

  linux系統中分為2種庫:靜態庫和共享庫。靜態庫是以.a后綴結尾的文件,通常是在編譯的鏈接階段指定靜態庫的位置進行編譯生成可執行文件,因此生成的可執行文件在執行的時候不需要靜態庫的參與。動態庫共享庫是以.so后綴結尾的文件,通常情況下代碼中有需要用到共享庫的地方在編譯鏈接階段指定共享庫的路徑在執行可執行文件的時候從內存表中讀取代碼,內存中只有一份所有程序共享,所以這個方式是要求共享庫必須參與如果運行時找不到是會報錯的。這2種庫系統都有默認的路徑一般都是/usr/lib/和/lib以及/usr/local/lib,這也要看具體的系統版本,也分32位和64位的路徑。下面就來具體實踐一下。

實踐:

  建立相關文件步驟如下:

  1>建立calc.h文件,并輸入如下代碼:

  

#ifndef CALC_H#define CALC_Hdouble Add(double a,double b);#endif
  2>建立calc.c文件,并輸入如下代碼:
#include <stdio.h>#include "calc.h"double Add(double a,double b){     return a + b;   }
  3>建立calcmain.c文件,并輸入如下代碼:
#include <stdio.h>#include "calc.h"int main(void){    double c = Add(2.0,3.0);    PRintf("result:%f",c);    return 0;        }
  4-1>生成靜態庫執行,命令如下:
gcc -Wall calc.c -o calc.o    gcc -Wall calcmain.c -o calcmain.oar rcs libcalc.a calc.o    //使用ar命令生成靜態庫gcc -Wall calcmain.o libcalc.a -o calc    //生成calc可執行文件,
  4-2>生成動態共享庫執行。命令如下:
//因為之前已經生成了calc.o以及calcmain.o 2個目標文件gcc -shared -fPIC calc.o -o libcalc.so    //使用gcc生成共享庫,其中-shared:共享庫;-fPIC:與位置無關gcc -Wall calcmain.o -o calc -L. -lcalc    //-L.:當前目錄搜索;-l:使用外部lib庫。export LD_LIBRARY_PATH=.:$LD_LIBRARY_PATH    //指定臨時共享庫搜索路徑,上面的-L.參數經過實驗無效不知道為什么,共享庫搜索的路徑默認是不會搜索當前路徑的。

  以上是這次實踐的相關步驟,其中在gcc編譯過程中是可以直接以源碼C文件生成目標文件的再次忽略掉了!這一課中靜態庫知識點相關比較少,現在的開發也比較少用。關于共享庫大家可以看看這邊博客文章多了解了解。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 米林县| 四平市| 兖州市| 唐山市| 汉寿县| 丰城市| 泗洪县| 中阳县| 黄龙县| 丹凤县| 江北区| 双牌县| 西乌珠穆沁旗| 武强县| 华安县| 梅河口市| 丹阳市| 乌兰县| 水富县| 白城市| 兴仁县| 祁阳县| 门头沟区| 财经| 谢通门县| 卢龙县| 疏勒县| 山东| 遵义市| 罗定市| 明水县| 洞口县| 登封市| 乐安县| 武陟县| 抚顺县| 平南县| 山东| 罗城| 嘉峪关市| 龙游县|