基础I/O口和动静态库的生成

一·动静态库

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,即要输出到显示器上的文件输出到了目标文件中

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值