Linux學習 第一章

2021-06-28 01:28:47 字數 2566 閱讀 4515

1. linux應用程式 

可執行檔案:計算機可以直接執行的程式;

的.bat ,.cmd 

檔案。

2.path

變數,新增路徑,使用(

:)分隔 3.

linux

使用正斜線(

/)分隔檔名裡的目錄名,

4.標頭檔案:提供對

常量的定義和對系統函式及庫函式

呼叫的宣告

一般位於/usr/include

目錄及其子目錄中;

依賴於特定linux

版本的標頭檔案可在目錄

/usr/include/sys

和usr/include/linux

中找到;

使用-i

標誌來包含在子目錄或非標準位置中的頭文。

$ gcc  -i/usr/include/mysql cb1.c                  

(意思?)

5. grep 

命令搜尋包含某些特定定義和函式原形的標頭檔案

$ grep exit_ *.h

6.庫檔案:一組預先編譯好的

函式的集合,這些函式都是按照可重用的原則編寫的。

函式庫最簡單的形式是一組處於「準備好使用」狀態的目標檔案。當程式需要使用函式庫中的某個函式時,它包含乙個宣告該函式的

標頭檔案。編譯器和鏈結器負責將程式**和函式庫結合在一起以組成乙個單獨的可執行檔案。

標準系統庫檔案一般儲存在/lib

和/usr/lib

目錄下(libm.a==lm),

最好使用

lm形式(簡寫,自動選擇共享庫)

-l為編譯器增加庫的搜尋路徑 

$ gcc –o db –l/usr/lib64/mysql –lmysqlclient cb1.o

例:$ gcc -i/usr/include/mysql cb1.c 

-o db2 -l/usr/lib64/mysql -lmysqlclient

庫檔案的名字總是以lib

開頭,隨後的部分指名這是什麼庫

.a —靜態函式庫 (包含在可執行程式中)

.so—共享函式庫 (在程式執行時載入)

7.靜態庫的使用步驟:

(1).為兩個函式

fred

和bill

分別建立各自的原始檔(

fred.c

和bill.c):

#include 

void fred (int arg)

printf( 「fred: we passed %d\n」,arg);

#include 

void fred (char * arg)

printf( 「bill: we passed %s\n」,arg);

(2) 編譯,使用

-c選項的作用是阻止編譯器建立乙個完整的程式

$ gcc –c bill.c fred.c

$ ls *.o

(3) 編寫呼叫

bill

的程式

建立乙個標頭檔案:宣告庫檔案中的函式

lib.h

void bill ( char * );

void fred ( int );

(4) 呼叫程式(

program.c):

包含庫的標頭檔案並且呼叫庫中的乙個函式

#include 

#include 「lib.h」

int main ( )

bill ( 「hello world」);

exit(0);

(5) 編譯與鏈結

$ gcc –c program.c

$ gcc –o program program.o bill.o

$ ./program

(6) 建立並使用乙個庫檔案。

ar 將若干個單獨的文件歸併到乙個大的檔案中以建立歸檔檔案或集合。

使用ar 

程式建立任何型別檔案的歸檔檔案

$ ar crv libfoo.a bill.o fred.o 

(7) 為函式庫生成乙個內容表(非必須)

$ ranlib libfoo.a

現在函式庫就可以使用了

$ gcc -o program program.o libfoo.a

使用-l

選項來訪問函式庫

$ gcc -o program program.o -l. -lfoo

-l.選項告訴編譯器在當前目錄(.

)中查詢函式庫;

-lfoo選項告訴編譯器使用名為libfoo.a

的函式庫;

nm檢視目標檔案、函式庫或可執行檔案包含的函式。(例,nm program;nm libfoo.a;nm bill.o)

8. 共享庫(lib.so)

靜態庫的缺點:當同時執行的許多應用程式都使用來自同乙個函式庫的函式時,記憶體中就會有同一函式的

多份副本

,而且在程式檔案自身也有

多份同樣的副本。這將消耗大量的記憶體和磁碟空間。

使用ldd 命令來檢視乙個程式需要的共享庫

$ ldd program 

$ man gcc

linux程式設計學習 第一章

一 庫檔案型別 1 a代表傳統的靜態檔案庫 1 靜態庫的實驗 假設有三個檔案fred.c bill.c和program.c.fred.c includevoid fred int arg bill.c includevoid bill char 8arg program.c include lib....

Linux學習筆記 第一章

2 遠端登入工具 3 linux的一些特點 主要有主分割槽和拓展分割槽兩種 以上主分割槽加拓展分割槽不能超過4個的限制是由硬體裝置決定的 格式化指的是寫入檔案系統 格式化相當於將分割槽之後的硬碟切分為更小的block,一般來講是是4kb 所以有時候在檢視檔案的時候實際檔案大小和占用空間會不一樣 對於...

Linux學習筆記(第一章)

一直以來都想好好學一下linux了,但也一直耽擱了好久,現在沒事做了,可以看看了。昨天,我看了書本的第一章,感覺還不錯。下面簡單講一下自己的收穫 第一章講的是檔案安全與許可權 本章內容包含 1.檔案和目錄的許可權。2.suid guid。3.chown和chgrp。4.umask。5.符號鏈結。乙個...