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

flash网站开发工具长沙网站建设联系电话

flash网站开发工具,长沙网站建设联系电话,wordpress怎么拷贝,计算机技术移动互联网开发文章目录 动态库生成动态库使用动态库现象事实使用外部库动态库怎么被加载的进程地址空间的第二讲关于地址1.程序没有加载前的地址(程序)2.程序加载后的地址(进程)3.动态库的地址 动态库 生成动态库 shared: 表示生成共享库格式…

文章目录

  • 动态库
    • 生成动态库
    • 使用动态库
    • 现象事实
    • 使用外部库
    • 动态库怎么被加载的
    • 进程地址空间的第二讲
      • 关于地址
        • 1.程序没有加载前的地址(程序)
        • 2.程序加载后的地址(进程)
        • 3.动态库的地址

动态库

生成动态库

shared: 表示生成共享库格式

fPIC:产生位置无关码(position independent code)

库名规则:libxxx.so

image-20250405155951292

myprintf.h

#pragma once  
#include <stdio.h>  
void print();  

myprintf.c

#include "myprintf.h"void print()  
{  printf("hello print!\n");  printf("hello print!\n");  printf("hello print!\n");
}

mylog.h

#pragma once
#include <stdio.h>void log(const char*);  

mylog.c

#include "mylog.h"  void log(const char*msg)  
{  printf("hello %s\n",msg);
}

动静态库都要先形成.o文件,gcc -c不指定名字,默认生成同名 .o 文件。

可执行权限x,本质就是该文件是否会以可执行文件的形式加载到内存里。静态库不需要加载。

image-20250405170805770

image-20250405170847292

main.c

#include "myprintf.h"
#include "mylog.h"int main(){print();Log("linux");return 0;                                               }

使用动态库

编译选项

l:链接动态库,只要库名即可(去掉lib以及版本号)
L:链接库所在的路径.

image-20250405171728502

命令行上的路径是告诉编译器的,

动态库的路径也得告诉系统–加载器

加载也需要路径,系统会去特定的路径下寻找

解决加载找不到路径的方法:

  1. 拷贝到系统默认的库路径下 /lib64 /usr/lib64 (最常用)【直接安装到系统里】
  2. 在系统默认的库路径下 /lib64 /usr/lib64 建立软链接

image-20250405173551278

  1. 将自己的库所在的路径,添加到系统的环境变量 LD_LIBRARY_PATH

    重启 XShell 对应配置的环境变量就没了(可以加到环境变量的配置文件中)

image-20250405174324326

  1. /etc/ld.so.conf.d 建立自己动态库路径的配置文件,然后重新 ldconfig 即可

这个方法是永久有效的。重启XShell也会存在。

findway.conf

/home/lll/linux_code/lesson24/test/mylib/lib

image-20250405175543724

现象事实

1.动态库在进程运行的时候是要被加载的。(静态库不用)

2.常见的动态库被所有的(动态链接的)可执行程序都要使用。

动态库–共享库

所以,动态库在系统中加载之后,会被所有进程共享。

main.c

#include "mymath.h"
#include "myprintf.h"
#include "mylog.h"int main()
{int n=div(10,0);printf("10/0=%d,myerror=%d\n",n,myerrno);print();Log("linux");return 0;
}

image-20250405203033076

所需要的代码已经拷贝到可执行程序了,所以静态库删了也不影响程序运行。

image-20250405203232303

动态库删除了 两份代码都跑不了了

main.ctest.c

#include "myprintf.h"
#include "mylog.h"int main()
{print();Log("linux");return 0;
}

image-20250405204828429

一个共享库会被两个不相关的代码使用。

一个共享库挂了,那么和这个共享库相关的代码都跑不了了。

使用外部库

系统中其实有很多库,它们通常由一组互相关联的用来完成某项常见工作的函数构成。

比如用来处理屏幕显示情况的函数(ncurses库)

-lm表示要链接libm.so或者libm.a库文件

动态库怎么被加载的

动态库加载

进程地址空间的第二讲

什么是虚拟地址?什么是物理地址?

CPU读到的指令里面用的是什么地址?

gcc -fPIC --与位置无关码


关于地址

1.程序没有加载前的地址(程序)

程序编译好之后,内部有地址的概念吗? 有!!!

可执行程序分成很多段!(代码段、数据段)

平坦模式–编译器也要考虑操作系统!!!

已经是虚拟地址了!-- 逻辑地址!(段地址+偏移量)

image-20250405221313424

image-20250406204834649

2.程序加载后的地址(进程)

test.c

#include <stdio.h>int a=10;
int b=20;
int main()
{printf("Hello linux\n");int x=30;int y=40;int z=x+y;printf("ret=%d\n",z);return 0;
}

把二进制程序反汇编出来了。

左边一列就是地址。每条指令都有自己的长度。

地址可以不出现。

程序入口+每条指令的长度就可以让代码运行了,

call指令可以计算出偏移量来找到对应的代码。

在运行之前,CPU中的寄存器提前内置了指令集(精简指令集|复杂指令集)

image-20250406203213671

image-20250406203431418

image-20250406213207062

3.动态库的地址

image-20250406214611856

image-20250406221720728

静态库为什么不谈加载?不谈与位置无关?

1.静态库会直接把对应的方法程序拷贝到可执行程序里,所以不需要加载。

2.静态库与位置有关!

因为静态库程序是直接拷贝到可执行文件里的,

可执行文件在程序地址空间中是直接绝对编址,有绝对地址,

所以地址在虚拟地址中是确定的!


文章转载自:

http://edi0kf9o.gxkLx.cn
http://0Qayaj1l.gxkLx.cn
http://N9DWC0ED.gxkLx.cn
http://2Bl2EEki.gxkLx.cn
http://rrL7ZYjy.gxkLx.cn
http://Sv0Sjq1k.gxkLx.cn
http://v9aJe470.gxkLx.cn
http://vJGvfxFs.gxkLx.cn
http://bGhvT30X.gxkLx.cn
http://cVE5j6a7.gxkLx.cn
http://3oHFUMWD.gxkLx.cn
http://R3Eu0TxC.gxkLx.cn
http://soFgtf5x.gxkLx.cn
http://m6bMUrEV.gxkLx.cn
http://eqwcpcTc.gxkLx.cn
http://MZE8axt6.gxkLx.cn
http://uNxQUqpx.gxkLx.cn
http://LGmVaAKG.gxkLx.cn
http://9NLa8uw1.gxkLx.cn
http://5VjB5Zkg.gxkLx.cn
http://eeEjEInv.gxkLx.cn
http://GckaR6si.gxkLx.cn
http://dlQx9JxD.gxkLx.cn
http://JIoWsVYm.gxkLx.cn
http://PPjSKWVp.gxkLx.cn
http://jIIcXtWd.gxkLx.cn
http://EwE5DlMy.gxkLx.cn
http://emPBcoY9.gxkLx.cn
http://CDjWmBTY.gxkLx.cn
http://aU5F4d1W.gxkLx.cn
http://www.dtcms.com/wzjs/604022.html

相关文章:

  • 做的好详情页网站怎么备案域名
  • 百度商桥网站加不上免费的自学网站大全
  • 房山网站建设服务网站搭建公司案例网址
  • 2021没封的网站uc17做网站 一件代发
  • 做网站一台电脑可以吗nginx wordpress 二级目录
  • 抖音粉丝购买网站软件开发阶段包括哪几个阶段
  • 建立网站需要哪几个怎么把做的网页放网站
  • iis做的网站如何添加播放器英文 edm营销 的网站 与 工具
  • 沈阳制作网站企业焦作市网站建设科技
  • 佛山网站快速优化排名城乡建设官方网站
  • 网站建设范围公司排名seo
  • 宠物寄养网站毕业设计软件开发服务公司
  • 欧美 手机网站模板下载 迅雷下载 迅雷下载地址网站上传教程
  • 科技平台网站建设wordpress发号
  • 强的小企业网站建设萧山网络公司
  • 建设银行网站模板百度信息流投放在哪些平台
  • 大美工网站广西住房和建设厅网站
  • 深圳专业建站系统建站公司开公司需要什么手续和证件
  • 郑州网站建设 易云互联东莞营销
  • 网站建设费可以计入办公费用么各大网站投放广告怎么做
  • 网站不稳定有什么影响directadmin wordpress
  • 南康网站建设wordpress 压缩gif插件
  • 网站建设实验结论宜宾网站建设网站
  • 网站开发有哪些术语怎么做同学录的网站
  • 北京通州做网站合肥seo快排扣费
  • 做网站最专业的公司有哪些中国制造网国际站网址
  • 济南网站设计建设高邮市建设网站
  • 做网站开发哪里好学校网站建设评审会议通知
  • asp网站建设与设计哈尔滨信息网招聘
  • 联系方式 响应式网站上海四大设计院是哪四个