基礎I/O口和動靜態庫的生成
阿新 • • 發佈:2018-12-18
一·動靜態庫
1.先編寫原始檔和標頭檔案:add.c ,sub.c,mul.c,div.c,math.h
math.h
1 #ifndef __MYMATH_H__
2 #define __MYMATH_H__
3 int add(int x,int y);
4
5 int sub(int x,int y);
6
7 int mul(int x,int y);
8
9 int div(int x,int y);
10 #endif //__MYMATH_H__
2.動靜態庫的生成:
(1)將所有的.c檔案生成.o檔案
(2)makefile自動生成動靜態庫
1 libmymath.a libmy.so:add.o sub.o mul.o div.o 2 ar -rc libmymath.a $^ 3 gcc -fPIC -shared -o libmy.so $^ 4 add.o sub.o mul.o div.o:add.c sub.c mul.c div.c 5 gcc -c add.c -o add.o -g 6 gcc -c sub.c -o sub.o -g 7 gcc -c mul.c -o mul.o -g 8 gcc -c div.c -o div.o -g
3.使用libmymath.a和libmy.so的方法
先編寫一個test.c檔案,裡邊用到該靜態庫中的函式
靜態庫(mymath.a): gcc test.c -I./ -L./ -lmymath
說明:-I 後邊跟標頭檔案的路徑,如果不寫,預設在當前目錄下搜尋
-L 後邊跟庫的路徑 ,如果不寫,預設在系統指定的目錄下搜尋
-l 後邊跟庫名,指定要用哪個庫
動態庫(my.so): 生成庫後,首先設定環境變數 export LD_LIBRARY_PATH=動態庫的搜尋路徑
gcc test.c -I./ -L./ -lmy
二·基礎I/O
1.系統呼叫介面:open,close,read,write,lseek等
如果檔案不存在,需要open建立,則第三個引數表示建立檔案的預設許可權,否則,使用兩個引數