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.符號鏈結。乙個...