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

qq邮箱做网站厦门最快seo

qq邮箱做网站,厦门最快seo,如何开网店具体步骤,网站备案号 如何添加参考学习:Linux下的各种文件 、动态库基本原理和使用方法,-fPIC选项的来龙去脉 、Linux静态库和动态库分析 文章写作参考:Linux共享库、静态库、动态库详解 - sunsky303 - 博客园 (cnblogs.com) 一.Linux共享库、静态库、动态库详解 使用G…

参考学习:Linux下的各种文件 、动态库基本原理和使用方法,-fPIC选项的来龙去脉 、Linux静态库和动态库分析

文章写作参考:Linux共享库、静态库、动态库详解 - sunsky303 - 博客园 (cnblogs.com)

一.Linux共享库、静态库、动态库详解

使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。

程序函数库可分为3种类型:静态函数库(static libraries)、共享函数库(shared libraries)、动态加载函数库(dynamically loaded libraries):

1、静态函数库,是在程序执行(编译)前就加入到目标程序中去了 。

  • 优点:
    1. 静态库被打包到应用程序中加载速度快;
    2. 发布程序无需提供静态库,因为已经在app中,移植方便。
  • 缺点:
    1. 连接是完整地拷贝至可执行文件中,被多次使用就有多份冗余拷贝;
    2. 更新、部署、发布麻烦。

2、动态函数库同共享函数库是在可执行程序运行时才载入内存的,在编译过程中仅简单的引用,因此代码体积较小(在Linux上叫共享对象库, 文件后缀是.so ,Windows上叫动态加载函数库, 文件后缀是.dll)。

  • 优点:
    1. 链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序可以共用,节省内存;
    2. 程序升级简单,因为app里面没有库的源代码,升级之后只要库的名字不变,函数名以及参数不变,只是实现做了优化,就能加载成功。
  • 缺点:
    1. 加载速度比静态库慢;
    2. 发布程序需要提供依赖的动态库。

Linux中命名系统中共享库的规则

在这里插入图片描述

二.静态库的制作和使用

  1. 命名规则

    静态库文件名的命名方式是libxxx.a,库名前加lib后缀用.axxx为静态库名。

  2. 制作步骤

    原材料:源代码.c或者.cpp

    1. .c文件生成.ogcc a.c b.c -c
    2. 将.o 打包:ar rcs 静态库的名字 原材料 -> ar rcs libtest.a a.o b.o
  3. 静态库的使用

    gcc test.c -ltest -L ./ -o main

    • -l(小写的L):指定要用的静态库,库名要看头去尾(即要去掉lib和后缀.a)。
    • -L(大写的L):告诉gcc编译器从-L指定的路径去找静态库,如果没有指定,则默认从/usr/lib/usr/local/lib去找 ,这里有指定./-L ./的意思就是从当前路径去找。
    • -o(小写的O):指定生成的可执行文件。
    • 运行:直接像我们平时运行一样./main

三.动态库的制作和使用

  1. 命名规则

    动态库的命名方式与静态库类似,前缀相同,为lib,后缀变为.so。所以为libxxxx.so

  2. 制作步骤

    1. 将源文件生成.o,需要加一个参数fpicgcc a.c b.c -c -fpic(fPIC)

    2. 打包:gcc -shared a.o b.o -o libxxx.so

    3. 一般直接:gcc -fPIC -shared -o libxxx.so xxx.c

      创建符号链接:ln -s libxxx.so.1.0 libxxx.so.1

      • **注意:**这里的-fPIC中的PIC是大写,也有小写的-fpic(产生的代码相对较小,而且较快),在有些平台使用小写的-fpic选项有一些限制,而大写的-fPIC没有这个问题。绝大多数情况使用-fPIC

      • 关于PIC的理解:地址无关代码(Position Independent Code, PIC)

        模块间的函数调用、跳转和数据访问目的地址要等到装载时才能确定,ELF文件的做法是在数据段里面建一个指向这些模块间全局变量的指针数组,也被称为全局偏移表(Global Offset Table, GOT),当代码需要引用模块间全局变量时,可以通过GOT中的表项间接的引用。由于GOT是存放在数据段中,所以动态库在装载时可以被修改,每个进程都有独立的副本,相互之间不受影响。在编译时可以确定GOT相对于当前指令的偏移,编译器决定GOT内的每一项(4个字节为一项,一个指针)对应于哪一个全局变量名称,也就GOT给出了需要重定位的全局变量有哪些,以及该全局变量相对于GOT的位置。动态链接器在装载模块时会查找每个变量所在地址,然后填充GOT中的各个项,确保GOT中每个指针所指向的地址是正确的。

        参考:动态库基本原理和使用方法,-fPIC选项的来龙去脉

  3. 库的使用

    gcc main.c -L ./ -ltest -o mainPro

    如果直接运行./mainPro会提示No such file or directory,需要进行环境变量的设置。

    1. 使用环境变量

      • 临时设置:在终端进行:export LD_LIBRARY_PATH=动态库的路径:$LD_LIBRARY_PATH

      • 永久设置:

        用户级别:~/.bashrc,配置完成之后,重启终端或者source ~/.bashrc

        系统级别:/etc/profile,配置完成之后,重启计算机或者source /etc/profile

    2. 把库拷贝到/usr/local/lib目录下。

    3. 修改/etc/ld.so.conf文件,把库所在的路径加到文件末尾,并执行ldconfig刷新。这样,加入的目录下的所有库文件都可见。

local/lib`目录下。

  1. 修改/etc/ld.so.conf文件,把库所在的路径加到文件末尾,并执行ldconfig刷新。这样,加入的目录下的所有库文件都可见。
http://www.dinnco.com/news/55137.html

相关文章:

  • wordpress b s分离seo优化报价
  • 网站建设学费一个关键词要刷多久
  • 厦门专业网站设计如何写软文
  • 用vs2013做网站教程企业软文
  • 石家庄站建设费用多少关键词搜索爱站网
  • 网站开发设计图psd免费推广网站入口
  • 网站建设及推广的书代运营公司
  • 北京营销型网站建设价格核心关键词和长尾关键词
  • wordpress小说主题怎么样关键词优化
  • 邯郸做网站最好的公司交换友链要注意什么
  • 邢台地区网站建设口碑好游戏推广渠道有哪些
  • 北京会所网站推广游戏推广公司好做吗
  • 国家卫生健康委员会官方网站看b站视频软件下载安装手机
  • 怎么自己做一个论坛免费seo在线工具
  • 网站分哪些种类资源网站快速优化排名
  • 网站建设中图片电话宁波的网络营销服务公司
  • 要怎么网站做推广优化网站技术
  • 网站开发生命周期模型成都培训机构排名前十
  • 苏州网站制作及推广代引流推广公司
  • 美甲 by wordpress湖南seo排名
  • 可以免费开店的平台有哪些seo是什么?
  • wordpress 腾讯视频插件下载佛山市seo推广联系方式
  • 网站分析流程广告文案
  • 太原手机微网站建设外贸推广引流
  • 枣庄做网站的公司鞍山seo优化
  • 为企业规划网络促销方案深圳网站设计知名乐云seo
  • 开发网站需要学什么b站视频推广网站2023
  • 武汉网站建设的公司磁力蜘蛛种子搜索
  • 建大型网站需要多少钱搜索引擎收录
  • 江西网站设计哪家好东莞seo公司