基础IO口和动静态库的生成

xiaoxiao2025-08-29  21

一·动静态库

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.alibmy.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创建,则第三个参数表示创建文件的默认权限,否则,使用两个参数

2.文件描述符fd

   本质:一个从0开始的小整数,就是files_struct这个指针数组的下标,这个数组指向该进程打开的文件。所以只要拿到下标就可以找到该文件

3.重定向

本质:将该进程打开的1号文件关闭,再打开目标文件,则这个目标文件的fd就是1,即要输出到显示器上的文件输出到了目标文件中

 

 

 

 

转载请注明原文地址: https://www.6miu.com/read-5035413.html

最新回复(0)