当前位置: 首页 > news >正文

网站建设主要包括两个方面游戏网站开发具备

网站建设主要包括两个方面,游戏网站开发具备,织梦网站会员功能,手机开发者模式怎么调成高性能七十二、 函数库 1. 库的概念 库是一个二进制可执行文件,与二进制可执行程序比较,库是不能单独运行的。 库中存放的是功能函数,没有主函数(main函数) 库需要被载入到内存中使用 标准的基础库中存放了很多已经写好的…

七十二、 函数库

1. 库的概念

  1. 库是一个二进制可执行文件,与二进制可执行程序比较,库是不能单独运行的。

    1. 库中存放的是功能函数,没有主函数(main函数)

    2. 库需要被载入到内存中使用

    3. 标准的基础库中存放了很多已经写好的,成熟的,可以复用的功能代码,例如printf, scanf

  2. 不同操作系统有自己的库,不兼容

  • 库的分类
    1. 静态库
    2. 动态库
windowsLinux
静态库*.lblibxxx.a
动态库*.dlllibxxx.so

2. 静态库

1)原理

通过静态库封装的功能函数,在程序编译到 链接库 步骤的时候,会将函数 继承 到可执行程序中。

优点:

  1. 程序运行的时候,与静态库没有任何关系,方便移植。
  2. 运行速度比动态库快

缺点:

  1. 大。存储的时候浪费磁盘空间,运行的时候浪费内存空间。
  2. 程序更新部署比较麻烦。

2)制作指令

gcc -c func.c -o func.o         一步完成预处理,编译,汇编
ar -crs libxxx.a func.o         生成一个静态库,库的名字叫做xxxar -crs libxxx.a func1.o func2.o  func3.o

ar : 用于创建或操作静态库

-c : 创建静态库

-r : 将文件插入静态库或者替换静态库中的同名文件;

-s : 重置静态库索引

3)制作流程

  1. 分文件,将主函数与功能函数分开,例如分成:main.c func.c
  2. 编写头文件,例如:func.h
  3. 将main.c和func.c联合编译,验证分文件是否正确
  4. 调用上述静态库制作指令,创建一个静态库libxxx.a。注意静态库的名字是xxx
  5. 根据下面的使用方式,链接静态库即可

4)使用方式

gcc main.c -L库的路径 -l库的名字 最终生成一个a.out可执行二进制程序 gcc main.c -L库的路径 -l库的名字 -o main 最终生成一个main可执行二进制程序 -l:小写的L

3. 动态库(共享库)

1)原理

用动态库封装的功能函数,把库函数的链接推迟到 程序运行 的时候。

当程序执行到库函数的时候,会到内存中找动态库函数。

    1. 若内存中不存在该动态库函数,则会将该动态库函数加载到内存中
    2. 若内存中存在该动态库函数,则直接调用动态库函数,不会加载第二份

优点:

  1. 小,存储的时候节省磁盘空间,运行的时候节省内存空间
  2. 程序的更新部署比较方便,不需要重新编译烧录。

缺点:

  1. 程序运行的时候,若没有找到对应动态库函数,则会导致程序崩溃。
  2. 运行速度比静态库慢

2)制作指令

gcc -fPIC -c func.c -o func.o     完成预处理 编译 汇编
gcc -shared -o libxxx.so func.o   生成一个动态库,库的名字是xxx;gcc -shared -o libxxx.so func1.o func2.o func3.o

3)制作流程

  1. 分文件,将主函数与功能函数分开,例如分成:main.c func.c
  2. 编写头文件,例如:func.h
  3. 将main.c和func.c联合编译,验证分文件是否正确
  4. 调用上述动态库制作指令,创建一个动态库libxxx.so。注意动态库的名字是xxx
  5. 根据下面的使用方式,链接动态库即可

4)使用方式

在这里插入图片描述

原因:环境变量没有配置,若没有配置,则会默认到/lib/ 或者 /usr/lib/ 目录下查找动态库

5)环境变量配置

  1. 将动态库移动到 /lib/ 或者 /usr/lib/
sudo mv ./libmyfunc.so /lib/
  1. 在LD_LIBRARY_PATH这个环境变量中加上库所在的绝对路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:动态库所在目录的绝对路径export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/ubuntu/mydir/23071/02_socket/09_library/
只在设置终端有效
  1. 修改配置文档

1. cd  /etc/ld.so.conf.d
2. sudo  touch  xxx.conf  (xxx自定义可以修改)
3. sudo vim  xxx.conf   将动态库所在目录的绝对路径写入到文件中,且一行一个动态库目录路径。
4. 保存退出后,终端输入 sudo ldconfig 刷新环境变量
http://www.yayakq.cn/news/942589/

相关文章:

  • 网站设计与开发范本洋气的设计公司名字
  • c 可以做哪些网站无极修仙网站
  • 唐山网站快速排名提升asp网站如何实现伪静态
  • idea15网站开发计算机网络技术难学吗
  • 网站开发项目运营经理岗位职责视频制作培训机构
  • 邢台天九建设有限公司网站中小企业门户网站建设策略
  • 免费模板简历下载杭州优化外包哪里好
  • 苏州做网站公司哪家好网站后台如何修改密码
  • 公路建设市场信用信息系统网站贵安新区网站建设
  • 中山市做网站公司企业管理8大系统
  • 网站开发服务费合同范本附近机械零件加工厂
  • 织梦做网站建立数据库烟台建网站哪家好
  • 如何建设网站使用旅游网站建设功能意义
  • 江门网站建设教程漳州网络推广
  • 创建个人商城网站建立传媒公司网站
  • 如何将自己做的网页做成网站网站设计板块
  • 二手站网站怎做网站建设纳千网络
  • 网站空间已到期 请尽快续费开通东莞制作企业网站
  • 网站建设 康盛设计网站没备案做淘宝客
  • 如何对网站的文件和资源进行优化?类似抖音网站开发费用
  • 沈阳正规制作网站公司吗天元建设集团有限公司青岛分公司
  • 苏州企业建设网站公司网站备案完成通知
  • 济南做网站个人知识付费商城源码
  • 美容加盟网站建设孟村网站建设
  • 运城网站建设求职简历镇江网页设计师招聘
  • 网站建设开票单位百度知道首页登录入口
  • 中国空间站图片高清学设计的网站有哪些内容
  • 网站设计的内容哈尔滨网页设计招聘
  • 电子科技技术支持东莞网站建设路飞 wordpress
  • 网站备案一个主体wordpress法律主题