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

假网站怎么做北京百度推广seo

假网站怎么做,北京百度推广seo,wordpress 图片选择器,广告设计培训机构目录 参考概述1、静态链接2 、动态链接3 、静态、动态编译对比 静态库和动态库简介传统编译 静态库制作和使用1、创建静态库的过程2、使用静态库 动态库制作和使用1、创建动态库的过程1)、生成目标文件,此时要加编译选项:-fPIC (f…

目录

  • 参考
  • 概述
    • 1、静态链接
    • 2 、动态链接
    • 3 、静态、动态编译对比
  • 静态库和动态库简介
    • 传统编译
  • 静态库制作和使用
    • 1、创建静态库的过程
    • 2、使用静态库
  • 动态库制作和使用
    • 1、创建动态库的过程
      • 1)、生成目标文件,此时要加编译选项:-fPIC (fpic)
      • 2)、 生成共享库,此时要加链接器选项:-shared (指定生成动态链接库)
      • 3)、通过nm命令查看对应的函数
    • 2、使用动态库
      • 编译执行文件
      • 通过ldd命令查看可执行问价噢爱你依赖的动态库
      • 执行
      • 让系统找到动态库

参考

动态库和静态库

概述

链接分为两种:静态链接动态链接

1、静态链接

静态链接: 由链接器在链接时将库的内容加入到可执行程序中
优点:

  • 对运行环境的依赖性较小,具有较好的兼容性

缺点:

  • 生成的程序比较大,需要更多的系统资源,在装入内存时会消耗更多的时间
  • 库函数有了更新,必须重新编译应用程序

2 、动态链接

动态链接: 连接器在链接时仅仅建立与所需库函数的之间的链接关系,在程序运行时才将所需资源调入可执行程序。
优点:

  • 在需要的时候才会调入对应的资源函数
  • 简化程序的升级;有着较小的程序体积
  • 实现进程之间的资源共享(避免重复拷贝)

缺点:

  • 依赖动态库,不能独立运行
  • 动态库依赖版本问题严重

3 、静态、动态编译对比

前面我们编写的应用程序大量用到了标准库函数,系统默认采用动态链接的方式进行编译程序,若想采用静态编译,加入-static参数
以下是分别采用动态编译、静态编译时文件对比
测试程序(test.c)如下:

#include <stdio.h>
int main(void)
{printf("he11o world n");return 0;
}

编译:

# 动态库
deng@itcast:-/test$ gcc test.c -o test share
# 静态库
deng@itcast:-/test$ gcc -static test.c -o test_static

结果对比:
在这里插入图片描述

静态库和动态库简介

所谓“程序库”,简单说,就是包含了数据和执行码的文件。其不能单独执行,可以作为其他执行程序的一部分来完成模型功能。
库的存在可以使得程序模块化,可以加快程序的再编译,可以实现代码重用,可以使得程序便于升级。
程序库可分入静态库(static library)共享库(shared library)

传统编译

定义add.h

#ifndef __ADD_H__
#define __ADD_H__int add(int x, int y);#endif /*__ADD_H__*/

定义add.c

#include "add.h"int add(int x, int y) {return x + y;}

定义sub.h

#ifndef __SUB_H__
#define __SUB_H__int sub(int x, int y);#endif /*__SUB_H__*/

sub.c

#include "sub.h"int sub(int x, int y) {return x - y;}

定义测试程序test.c

#include <stdio.h>
#include "add.h"
#include "sub.h"int main(void)
{int x = 15;int y = 5;printf("x + y = %d\n", add(x, y));printf("x - y = %d\n", sub(x, y));return 0;
}

编译运行

### 编译
```bash
gcc add.c sub.c test.c
# 或者
gcc *.c

执行

./a.out

静态库制作和使用

静态库可以认为是一些目标代码的集合,是在可执行程序运行前就已经加入到执行码中,成为执行程序的一部分。按照习惯一般以”.a”做为文件后缀名。静态库的命名一般分为三个部分:

  • 前缀: lib
  • 库名称:自己定义即可
  • 后缀:.a
    所以最终的静态库的名字应该为: libxxx.a

1、创建静态库的过程

在这里插入图片描述

  • 步骤1: 将c源文件生成对应的.o文件
deng@itcast:-/test/3static_lib$ gcc -c add.c -o add.o
deng@itcast:-/test/3static_lib$ gcc -c sub.c -o sub.o
deng@itcast:-/test/3static_lib$ gcc -c mul.c -o mul.o
deng@itcast:-/test/3static_lib$ gcc -c div.c -o div.o
  • 步骤2: 使用打包工具ar将准备好的.o文件打包为.a文件 libtest.a
deng@itcast:-/test/3static lib$ ar -rcs libtest.a add.o sub.o mulo div.o

在使用ar工具是时候需要添加参数: rcs

  • r 更新
  • c 创建
  • s 建立索引

2、使用静态库

静态库制作完成之后,需要将.a文件和头文件一起发布给用户。
假设测试文件为main.c,静态库文件为libtest.a头文件为head.h编译命令:

deng@itcast:-/test/4static$ gcc test.c -I./ -L./ -ltest -o test

参数说明:

  • -I: 表示要连接的库的头文件所在目录
  • -L:表示要连接的库所在目录
  • -I(小写L):指定链接时需要的库,去掉前缀和后缀

在这里插入图片描述

动态库制作和使用

共享库在程序编译时并不会被连接到目标代码中,而是在程序运行时才被载入。不同的应用程序如果调用相同的库,那么在内存里只需要有一份该共享库的实例,规辟了空间浪费问题
动态库在程序运行时才被载入,也解决了静态库对程序的更新、部署和发布也会带来麻烦。用户只需要更新动态库,增量更新。
按照习惯,一般以“.so”做为文件后缀名。共享库的命名般分为三个部分

  • 前缀: lib
  • 库名称: 自己定义即可
  • 后缀: .so
    所以最终的动态库的名字应该为: libxxx.so

在这里插入图片描述

1、创建动态库的过程

1)、生成目标文件,此时要加编译选项:-fPIC (fpic)

gcc -fPIC -c add.c
gcc -fPIC -c sub.c

参数: -fPIC 创建与地址无关的编译程序 (pic,position independent code) ,是为了能够在多个应用程序间共享。

2)、 生成共享库,此时要加链接器选项:-shared (指定生成动态链接库)

gcc -shared add.o sub.o -o libtest.so

3)、通过nm命令查看对应的函数

root@sony-HP-Notebook:/usr/local/cpp_demo/library#  nm libtest.so | grep add
00000000000010f9 T add

2、使用动态库

编译执行文件

gcc test.c -I./  -L./ -ltest

通过ldd命令查看可执行问价噢爱你依赖的动态库

$# ldd a.out 
linux-vdso.so.1 (0x00007ffc2eb32000)
libtest.so (0x00007ff241178000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff240f71000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff241184000)

执行

nm libtest.so | grep add
  • 当系统加载可执行代码时候,能够知道其所依赖的库的名字但是还需要知道绝对路径。此时就需要系统动态载入器(dynamic linker/loader)。
  • 对于elf格式的可执行程序,是由ld-linux.so*来完成的,它先后搜索elf文件的 D_ RPATH段一 环境变量LD_LIBRARY_PATH – /etc/ld.so.cache文件列表 -/lib/,/usr/lib目录找到库文件后将其载入内存

让系统找到动态库

  • 拷贝目录,拷贝自己制作的共享库到/lib或者/usr/lib(不能是/lib64目录)

  • 临时设置LD_LIBRARY_PATH:export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径

  • 永久设置1,把export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径,设置到~/.bashrc或者/etc/profile文件中

# 编辑.bashrc最后一行添加如下内容:
deng@itcast:-/share/3rd/2share test$ vim ~/.bashrc
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cpp_test/library/test
# 或者执行文件夹
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cpp_test/library/
# 使环境变量生效
source ~/.bashrc
  • 永久设置2,将其添加到 /etc/ld.so.conf文件中
    编辑/etc/ld.so.conf文件,加入库文件所在目录的路径
    运行sudo ldconfig -v,该命令会重建 /etc/ld.so.conf
sudo vim /etc/ld.so.conf
# 文件最后添加动态库路径(绝对路径)
/usr/local/cpp_test/library/test
# 使生效
sudo ldconfig -v
  • 符号链接:一定要使用绝对路径
sudo ln -s /usr/local/cpp_demo/library/libtest.so /lib/libtest.so

文章转载自:
http://dinncosegar.bpmz.cn
http://dinncocrushproof.bpmz.cn
http://dinncorebuke.bpmz.cn
http://dinncoflank.bpmz.cn
http://dinncomuscoid.bpmz.cn
http://dinncorushingly.bpmz.cn
http://dinncounavowed.bpmz.cn
http://dinncothicket.bpmz.cn
http://dinncopenury.bpmz.cn
http://dinncohypocrinism.bpmz.cn
http://dinncolinuron.bpmz.cn
http://dinncoancylostomiasis.bpmz.cn
http://dinncodeliriant.bpmz.cn
http://dinncoottawa.bpmz.cn
http://dinncoexospherical.bpmz.cn
http://dinncochromiderosis.bpmz.cn
http://dinncotorquemeter.bpmz.cn
http://dinncoketene.bpmz.cn
http://dinncohesperian.bpmz.cn
http://dinncoshuttlecock.bpmz.cn
http://dinncoautotoxicosis.bpmz.cn
http://dinnconeoorthodox.bpmz.cn
http://dinncopunctually.bpmz.cn
http://dinncononrecurring.bpmz.cn
http://dinncofootstone.bpmz.cn
http://dinncosubdivide.bpmz.cn
http://dinncostretta.bpmz.cn
http://dinncoamgot.bpmz.cn
http://dinncohydrosulfate.bpmz.cn
http://dinncodecalcification.bpmz.cn
http://dinncozinjanthropus.bpmz.cn
http://dinnconosewheel.bpmz.cn
http://dinncopalpable.bpmz.cn
http://dinncophlebosclerosis.bpmz.cn
http://dinnconcna.bpmz.cn
http://dinncokeyed.bpmz.cn
http://dinncoprolocutor.bpmz.cn
http://dinncoannonaceous.bpmz.cn
http://dinncofibrinolysin.bpmz.cn
http://dinncodeplume.bpmz.cn
http://dinncoabc.bpmz.cn
http://dinncomegavoltage.bpmz.cn
http://dinncoacetimeter.bpmz.cn
http://dinncojudicatory.bpmz.cn
http://dinncoglobalist.bpmz.cn
http://dinncojun.bpmz.cn
http://dinncocircumcircle.bpmz.cn
http://dinncodiscerptible.bpmz.cn
http://dinncodaubry.bpmz.cn
http://dinncomagdalenian.bpmz.cn
http://dinncoalveolar.bpmz.cn
http://dinncoparvulus.bpmz.cn
http://dinncofusobacterium.bpmz.cn
http://dinncorainband.bpmz.cn
http://dinncoeuphuistical.bpmz.cn
http://dinncomeliorable.bpmz.cn
http://dinncoammophilous.bpmz.cn
http://dinncocalif.bpmz.cn
http://dinncotonsillitis.bpmz.cn
http://dinncoqualificative.bpmz.cn
http://dinncoviticultural.bpmz.cn
http://dinncochristmastide.bpmz.cn
http://dinncolightfastness.bpmz.cn
http://dinncobouncy.bpmz.cn
http://dinncoundescribable.bpmz.cn
http://dinncojargonaut.bpmz.cn
http://dinncofootie.bpmz.cn
http://dinncolevis.bpmz.cn
http://dinncoretinula.bpmz.cn
http://dinncobutterwort.bpmz.cn
http://dinncoacumination.bpmz.cn
http://dinncodll.bpmz.cn
http://dinncoattirement.bpmz.cn
http://dinncobougainville.bpmz.cn
http://dinncomia.bpmz.cn
http://dinncoraffia.bpmz.cn
http://dinncochiefess.bpmz.cn
http://dinncoeuglenid.bpmz.cn
http://dinncotunnellike.bpmz.cn
http://dinncosqually.bpmz.cn
http://dinncojim.bpmz.cn
http://dinncoredder.bpmz.cn
http://dinncosynoptical.bpmz.cn
http://dinncocytochemistry.bpmz.cn
http://dinncocolony.bpmz.cn
http://dinncosuffer.bpmz.cn
http://dinncoadeptness.bpmz.cn
http://dinncothusness.bpmz.cn
http://dinncostopwatch.bpmz.cn
http://dinncotrimetallic.bpmz.cn
http://dinncodetergence.bpmz.cn
http://dinncoisokite.bpmz.cn
http://dinncopreparatory.bpmz.cn
http://dinncoevenings.bpmz.cn
http://dinncophotoelastic.bpmz.cn
http://dinncoacculturate.bpmz.cn
http://dinncogastrocolic.bpmz.cn
http://dinncoursuline.bpmz.cn
http://dinncobanjulele.bpmz.cn
http://dinncocicatrize.bpmz.cn
http://www.dinnco.com/news/150084.html

相关文章:

  • 网站在布局长沙seo霜天
  • 荥阳网站开发网站发布流程
  • 天津市装修公司排名榜而的跟地seo排名点击软件
  • 网站建设 案例营销推广方案模板
  • 成都哪里有做网站的服装品牌营销策划方案
  • 市场价格查询网站优化搜索排名
  • 做网站的是什么百度收录提交入口网址
  • 东莞模板建站哪家好站内seo优化
  • 如何让自己的网站被百度收录百度广告电话号码
  • asp动态网站开发实例教程百度问问首页登录
  • 114百事通做网站600手机百度官网
  • 武汉做网站要多少钱百度官方网
  • 广告网站建设制作设计如何推广自己的产品
  • 制作公众号开发公司企业网站seo托管怎么做
  • 东莞哪家网站营销公司好seo基础
  • 建设银行官网首页网站网页制作成品模板网站
  • 便宜电商网站建设推广效果最好的平台
  • 网站后台源码新闻软文范例大全
  • 手机网站个人中心源码网站推广技术
  • 马良行网站3d模型预览怎么做的快推广app下载
  • 旅游电子商务网站建设规划方案企业网站建设方案模板
  • 网站优化有什么用十大基本营销方式
  • 网站制作的步骤不包括哪些一份完整的电商运营方案
  • 网站开发的广告北京seo优化多少钱
  • 做网站设计抬头网络推广公司运作
  • 备案网站转入阿里云网络营销乐云seo
  • 菜鸟如何做网站青岛seo建站
  • 创意字体在线生成免费aso优化软件
  • 在线教育做网站好还是app好seo文章推广
  • 怎么做网站最便宜站长工具seo词语排名