偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

簡(jiǎn)介L(zhǎng)inux靜態(tài)庫(kù)知識(shí)

運(yùn)維 系統(tǒng)運(yùn)維
對(duì)于Linux系統(tǒng)你了解么?目前,Linux系統(tǒng)越來(lái)越受到電腦用戶的歡迎,于是很多人開(kāi)始學(xué)習(xí)Linux時(shí),在這期間,你可能會(huì)遇到Linux靜態(tài)庫(kù)的編寫和使用問(wèn)題,這里將介紹Linux靜態(tài)庫(kù)的編寫和使用問(wèn)題的解決方法,在這里拿出來(lái)和大家分享一下。

對(duì)于Linux系統(tǒng)你了解么?目前,Linux系統(tǒng)越來(lái)越受到電腦用戶的歡迎,于是很多人開(kāi)始學(xué)習(xí)Linux時(shí),在這期間,你可能會(huì)遇到Linux靜態(tài)庫(kù)的編寫和使用問(wèn)題,這里將介紹Linux靜態(tài)庫(kù)的編寫和使用問(wèn)題的解決方法,在這里拿出來(lái)和大家分享一下。

1、概述

靜態(tài)庫(kù)文件的擴(kuò)展名一般為.a,其編寫步驟很簡(jiǎn)單。

⑴編寫函數(shù)代碼

⑵編譯生成各目標(biāo)文件

⑶用ar文件對(duì)目標(biāo)文件歸檔,生成靜態(tài)庫(kù)文件。

 注意歸檔文件名必須以lib打頭。

使用要點(diǎn):

⑴在gcc 的-I參數(shù)后加上靜態(tài)庫(kù)頭文件的路徑。

⑵在gcc 的-L參數(shù)后加上庫(kù)文件所在目錄

⑶在gcc 的-l參數(shù)后加上庫(kù)文件名,但是要去掉lib和.a擴(kuò)展名。

比如庫(kù)文件名是libtest.a 那么參數(shù)就是 -l test

2、編寫最簡(jiǎn)單的靜態(tài)庫(kù)文件

編寫如下兩個(gè)文件,注意放在同一目錄中

 myalib.h//靜態(tài)庫(kù)頭文件

myalib.c//靜態(tài)庫(kù)實(shí)現(xiàn)文件

//myalib.h 文件的內(nèi)容

void test();

//myalib.c 文件的內(nèi)容

  1. #inlcude <stdio.h> 
  2. void test()  
  3. {  
  4. printf("test\n");  

3、制作庫(kù)文件

⑴生成目標(biāo)文件

gcc -c myalib.c

執(zhí)行完后會(huì)生成一個(gè)myalib.o文件

⑵用ar命令歸檔,格式為ar -rc <生成的檔案文件名> <.o文件名列表>

再次提醒,歸檔文件名一定要以lib打頭, .a結(jié)尾。

ar -rc libtest.a myalib.o

執(zhí)行完后會(huì)生成一個(gè)libtest.a文件

4、使用庫(kù)文件

⑴編寫一個(gè)測(cè)試程序main.c,內(nèi)容為

//main.c 測(cè)試靜態(tài)庫(kù)調(diào)用的程序

#include "myalib.h"http://要把函數(shù)的頭文件包含進(jìn)來(lái),否則編譯時(shí)會(huì)報(bào)錯(cuò)

  1. int main(int argc,char* argv[])  
  2. {  
  3. test();  
  4. return 0;    

⑵編譯目標(biāo)文件,注意要把靜態(tài)庫(kù)頭文件的路徑加到-I參數(shù)里面

gcc -I /root/exercise -o main.o -c main.c

現(xiàn)在生成了一個(gè)main.o文件

⑶生成可執(zhí)行文件,注意要把靜態(tài)庫(kù)文件的路徑加到-L參數(shù)里面,

把庫(kù)文件名(去掉打頭的lib和結(jié)尾的.a)加到-l參數(shù)后面。如下面所示

gcc -o main -L/root/exercisemain.o -ltest

此時(shí)就會(huì)生成一個(gè)名為main的可執(zhí)行文件

另外,注意- l參數(shù)好象應(yīng)該加到輸入文件名的后面,否則會(huì)報(bào)錯(cuò)。

比如gcc -o main -L/root/exercise-ltest main.o就會(huì)提示

  1. main.o(.text+0x11): In function `main':  
  2. : undefined reference to `test'  
  3. collect2: ld returned 1 exit status 

原因我還不清楚:-)

⑷執(zhí)行可執(zhí)行文件查看效果

執(zhí)行./main, 輸出

test

說(shuō)明執(zhí)行成功。以上就是Linux靜態(tài)庫(kù)的編寫和使用的簡(jiǎn)介。

【編輯推薦】

  1. 配置筆記:Linux配置DNS服務(wù)器
  2. 講解RedHat Linux 5顯示中文的方法
  3. 教會(huì)你Redhat Enterprise Linux關(guān)閉SELinux
  4. 輕松完成Linux安裝KDE軟件包
  5. 闡述Redhat Linux配置遠(yuǎn)程桌面
責(zé)任編輯:小霞 來(lái)源: CSDN
相關(guān)推薦

2010-06-02 13:03:20

MySQL數(shù)據(jù)庫(kù)

2009-12-23 16:35:12

Linux系統(tǒng)光驅(qū)軟

2010-03-04 10:17:57

Linux動(dòng)態(tài)庫(kù)

2021-01-19 10:52:15

知識(shí)圖譜

2009-06-11 09:24:59

NetBeans入門

2010-01-07 17:40:41

Linux動(dòng)態(tài)庫(kù)

2015-11-16 10:34:19

Linux動(dòng)態(tài)庫(kù)總結(jié)

2009-08-20 14:28:00

C#靜態(tài)構(gòu)造函數(shù)

2010-04-21 18:17:01

Unix配置協(xié)議

2011-09-16 10:13:02

Emacs

2022-07-12 13:23:59

靜態(tài)鏈接庫(kù)可執(zhí)行文件C 目標(biāo)文件

2021-07-11 06:45:18

Linux內(nèi)核靜態(tài)

2009-09-27 11:07:22

CCNA知識(shí)靜態(tài)路由

2011-08-24 13:10:48

MongoDBUpdate

2010-04-23 14:12:37

Aix操作系統(tǒng)

2010-09-25 11:13:18

JVMClassLoader

2009-06-26 13:56:20

UML面向?qū)ο蠼?/a>

2021-04-22 06:15:59

Linux靜態(tài)鏈接動(dòng)態(tài)庫(kù)

2011-07-05 10:44:51

Qt Sqlite 靜態(tài)編譯

2021-07-21 09:15:57

Python工具編程語(yǔ)言
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)