【精讲】C语言库函数

本文详细介绍了C语言中的系统调用与库函数,包括它们的区别。重点讲解了Linux下的动态库和静态库,讨论了它们的优缺点,并指导如何制作动态库和静态库。此外,还探讨了编译器链接库时可能出现的问题及解决方法。
摘要由CSDN通过智能技术生成

一、系统调用和库函数

1.系统调用

操作系统向用户提供的函数接口,通过这些函数接口进入内核空间,使用内核提供的功能

2.库函数

别人实现好的函数接口,使用者不需要自己实现,直接调用就可以

  • GNU C库(glibc)提供的函数接口

    open/read/write/lseek/close 这些函数接口直接和系统调用关联

  • 标准C库提供的函数接口:

    fopen/fgetc/fgets/fread/fputc/fputs/fwrite/fseek/ftell/rewind/fclose

问题:库和实现的函数的代码有什么区别?

实现的代码是一个文本文件,可见,可以被别人使用,安全性不好
库是别人代码编译之后的二进制文件,不可见,可以被别人使用,安全性好

二、Linux 下的库

gcc编译流程:预处理、编译、汇编、链接(链接库和xxx.o文件生成一个可执行文件)

1.动态库

   windows  : name.dll

   Linux : libname.so

当编译器链接动态库的时候,会在可执行文件的头信息中记录库的名字,便于在操作系统执行这个可执行文件的时候,让操作系统去加载对应的动态库。

注意:

  • 当操作执行可执行文件时候,会先读取可执行文件的头信息,然后加载头信息中记录的动态库到内存中运行
  • 在可执
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值