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

求个网站2021年能用山东网络推广优化排名

求个网站2021年能用,山东网络推广优化排名,杭州做网站哪个公司好,杭州企业云网站建设目录 必要的知识储备: 生成静态库: 生成动态库: 解决加载找不到动态库的四种方法: 第一种:拷贝到系统默认的库路径 /usr/lib64/ 第二种:在系统默认的库路径/usr/lib64/下建立软链接 第三种&#xff1…

目录

必要的知识储备:

生成静态库:

生成动态库:

解决加载找不到动态库的四种方法:

第一种:拷贝到系统默认的库路径 /usr/lib64/

第二种:在系统默认的库路径/usr/lib64/下建立软链接

第三种:将自己的库所在的路径,添加到系统的环境变量LD_LIBRARY_PATH中

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


必要的知识储备:

  • 静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不需要静态库
  • 动态库(.so):程序在运行的时候才去链接动态库的代码,多个程序共享使用库的代码。
  • 一个与动态库链接的可执行文件仅仅包含它用到的函数入口地址的一个表,而不是外部函数所在目标文件的整个机器码。
  • 在可执行文件开始运行以前,外部函数的机器码由操作系统从磁盘上的该动态库中复制到内存中,这个过程称为动态链接。
  • 动态库可以在多个程序间共享,所以动态链接使得可执行文件更小,节省了磁盘空间。操作系统采用虚拟内存机制允许物理内存中的一份动态库被要用到该库的所有进程共用,节省了内存和磁盘空间。

生成静态库:

静态库(.a):程序在编译链接的时候把库的代码链接到可执行文件中。所以,在和库的代码链接之前,得把我们的.c文件进行编译生成.o文件。

gcc -c .c文件名 -o .o文件名

有了.o文件,我们我们就要生成静态库

ar -rc libmymath.a mymath.o(.a代表的是静态库,rc表示replace、create,就是静态库中有同名的就替换,没有就创建一个新的)

查看静态库中的目录列表:ar -tv libmymath.a(静态库名称)

t:列出静态库中的文件

v:verbose 详细信息

我们创建一个.c文件,去尝试使用静态库

出现第一个问题:明明我们main.c文件已经包含了头文件,且头文件也在当前路径,但是为什么编译失败?

编译失败就是找不到库路径

因为编译器寻找.c文件里的头文件直接到系统指定目录查找头文件 ,一般用于包含标准库头文件。所以找不到库路径

gcc main.c -L. -lmymath

-L 指定库路径

-l 指定库名

测试目标文件生成后,静态库删掉,程序照样可以运行。

库搜索指定路径:

  • 从左到右搜索-L指定的目录。
  • 由环境变量指定的目录(LIBRARY_PATH)
  • 由系统指定目录:/usr/lib       /usr/local/lib

把我们提供的方法给别人用,有两种方法:

  1. 把源文件直接给他
  2. 把源代码想办法打包成库 = 库 + .h

我们可以用makefile帮助我们更轻松的生成静态库

1 lib=libmymath.a2 3 $(lib):mymath.o4     ar -rc $@ $^5 mymath.o:mymath.c6     gcc -c $^7 8 .PHONY:clean9 clean:10     rm -rf *.o *.a lib11 12 .PHONY:output                                                                                                                     13 output:14     mkdir -p lib/include15     mkdir -p lib/mymathlib16     cp *.h lib/include17     cp *.a lib/mymathlib18 

我们平时用的库如果都是别人成熟的库,都采用直接安装到系统的方式

生成动态库:

gcc -fPIC -c myprint.c

gcc -shared -o libmyprint.so myprint.o

fPIC:产生位置无关码(可以不了解,可以浅略阅读下面关于-fPIC知识)

shared:表示生成共享库格式

库名规则:libxxx.so

关于-fPIC知识

在使用gcc编译生成动态库时,通常需要使用-fPIC(Position Independent Code)选项来生成位置无关的代码。这是因为动态库是在加载时动态链接到程序中的,而且可能会加载到内存的任意位置,因此需要生成位置无关的代码,以确保代码可以正确运行。

具体来说,`-fPIC`选项的作用包括:
1. 生成可重定位的代码:位置无关代码可以被加载到任何地址,不会受到地址空间限制。
2. 允许动态库在内存中共享代码段:多个程序可以共享同一个动态库的代码段,减少内存占用。
3. 支持更灵活的共享库加载方式:使得动态链接更为灵活,可以在程序运行时根据需要加载动态库。

因此,在生成动态库时,使用`-fPIC`选项可以确保生成的库具有位置无关性,适合被动态链接到不同程序中使用。

gcc main.c -L. -lmyprint

库文件名称和引入库的名称

如:lib.c.so->c库,去掉前缀lib,去掉后缀.so,.a

解决加载找不到动态库的四种方法:

  1. 拷贝到系统默认的库路径 /user/lib64/
  2. 在系统默认的库路径/user/lib64/下建立软链接
  3. 将自己的库所在的路径,添加到系统的环境变量LD_LIBRARY_PATH中
  4. /etc/ld.so.conf.d建立自己的动态库路径的配置文件,然后重新ldconfig()即可

第一种:拷贝到系统默认的库路径 /usr/lib64/

第二种:在系统默认的库路径/usr/lib64/下建立软链接

第三种:将自己的库所在的路径,添加到系统的环境变量LD_LIBRARY_PATH中

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

系统维护自己的动态库,配置文件里放的都是路径

用makefile生成动静态库

dy-lib=libmethod.so                                                                                                               2 static-lib=libmymath.a3 4 .PHONY:all5 all: $(dy-lib) $(static-lib)6 7 8 $(static-lib):mymath.o9     ar -rc $@ $^10 mymath.o:mymath.c11     gcc -c $^12 13 $(dy-lib): myprint.o14     gcc -shared -o $@ $^15 myprint.o:myprint.c16     gcc -fPIC -c $^17 18 19 .PHONY:clean20 clean:21     rm -rf *.o *.a *.so mylib22 23 .PHONY:output24 output:25     mkdir -p mylib/include26     mkdir -p mylib/lib27     cp *.h mylib/include28     cp *.a mylib/lib29     cp *.so mylib/lib  

http://www.dtcms.com/wzjs/570023.html

相关文章:

  • 足球比赛直播回放完整版seo内容优化是什么
  • 南京电信网站空间扩容铜陵市企业网站建设
  • 如何跑网站建设业务温州市网站制作哪家便宜
  • 网站开发专业术语竞价网站如何设计
  • 太仓做网站的公司网站开发入门需要学什么
  • 重庆网站建设哪家强企业网站建设报价模板
  • 开发网站 要网站icp经营许可证吗2345网址大全历史版本
  • 如何推广外贸网站网站的建设有什么好处
  • 网站首次备案 多久做优化的网站
  • 茌平网站建设费用网站建设与管理 孙伟
  • 网站做生鲜线下推广建议263企业邮箱自动回复
  • 襄阳做网站公司有哪些设计网站推荐按钮的作用
  • 网站导航栏下拉框怎么做网站建好了 怎么建后台
  • 建企业网站价格js网站开发视频教程
  • 做网站如何写代码安妮导刊 wordpress
  • 丽江门户网站小红书seo优化
  • 宁波网站建设价格费用中国建设网官方网站e路护航
  • 网站开发亿玛酷适合5共享农业网站建设
  • 设计作品欣赏网站建站服务的网络公司有哪些
  • 深圳网站开发定制深圳物流公司有哪些公司
  • 手机网站的模板下载软件徐州公司网站建设
  • 潍坊网站搜索引擎优化室内设计网站免费素材
  • 綦江网站建设公司淄博什么兼职的网站建设
  • 海尔建设网站的目的网站新手引导怎么做
  • 网站内页布局的不同wordpress联系表单的制作
  • 网站建设好后为什么要维护wordpress用户名支持中文
  • 网站设计方案论文网站建设公司好吗
  • 厦门工程网站建设网站开发好后要做什么
  • 音乐培训如何做网站宣传网站建设的一般流程
  • 专门做地方特产的网站做得好的网站建设公司