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

四字母net做网站怎么样百度官网下载

四字母net做网站怎么样,百度官网下载,cf域名免费注册,重庆江北区网站建设公司相信点进这篇帖子的你一定在动静态库的学习中遇到了很多问题。笔者由于曾经囫囵吞枣地学习库的相关知识,导致在实际应用中漏洞百出。所以写下这篇帖子,为大家解答一些疑惑,同时也加强自己的学习印象。 一、库的理解 什么是库?我…

        相信点进这篇帖子的你一定在动静态库的学习中遇到了很多问题。笔者由于曾经囫囵吞枣地学习库的相关知识,导致在实际应用中漏洞百出。所以写下这篇帖子,为大家解答一些疑惑,同时也加强自己的学习印象。

一、库的理解

什么是库?我们首先来回答这个问题。通俗来说,库就是现成的,写好的,可以复用的代码。库有两种,动态库与静态库。在linux操作系统中,静态库是以.a为后缀,动态库则是以.so为后缀。所有的库,本质都是.o文件的集合。系统的库文件默认放在/lib这个路径下,而/usr/local/lib则用来存放用户自行安装的库文件,不过在链接时,系统会默认搜索这两个路径。以我的操作系统为例,带大家来看一下存放在这两个路径下的文件:

二、静态库

        接下来,我们来介绍一下静态库。.a静态库,a代表archive,即静态库本质是归档文件,不需要使用者解包,gcc或者g++可以直接连接进行使用。那么静态库是如何制作的呢?

        静态库可以使用如下命令进行制作:

                        ar -rc libmyc.a *.o

        其中,libmyc.a是我们要生成的静态库。

        其实,库的发布需要包含两个部分,一是库方法的实现,即.a文件,另一个则是.h文件,头文件,在头文件里提供库的接口方法,方便使用者调用,而库则是相当于黑箱子,这样能够有效避免抄袭篡改,这也是库建设的初衷。接下来,我们需要将头文件以及静态库打包发布。

        在链接阶段,如果要链接静态库,一定加上 -static。

三、动态库

        库的制作不必深究,悄咪咪说一句,库制作没什么钱途。由于动态库制作涉及知识比静态库复杂,这里不过多描述。动态库制作无需特殊指令,gcc或者g++即可完成。这里我们先介绍一下gcc/g++的三个链接选项,极为重要:
                gcc -o usrcode usrcode.c -L/xxx/xxx/... -lxxx -I/xxx/xxxx

-L选项:指定库文件寻找路径。如果你的库文件不是放在系统默认查找路径之下,你需要通过该选项制定库存找路径。

-l选项:-l后加库名,指定你要链接哪个库。注意这里的库名指的是去掉前缀lib后后缀.a或者.so剩下的那部分。比如说你要链接的库是libc.a,那么这里的库名就是c,当然,c标准库是不用该选项的,因为gcc/g++会默认链接该库,我需我们显式指定。

-I选项:指定头文件寻找路径。系统头文件默认路径是/usr/include,用户自己安装的头文件存放路径是/usr/local/include,链接时,系统会默认从这两个路径下搜寻头文件,如果我你的头文件不是放在这两个路径之下,则需要我们用该选项指定。

        在讲接下来内容之前,我们需要明确一下静态链接和动态链接的区别。动态链接和静态链接是程序与库文件结合的两种方式。静态链接在编译时将库文件的代码直接嵌入到可执行文件中,生成的程序独立且体积较大,但运行时无需额外库文件支持。动态链接则在程序运行时加载所需的库文件,可执行文件体积小,但运行时依赖于这些库的存在。动态链接便于库的更新和共享,而静态链接确保程序的独立性和兼容性。

        因此静态库执行gcc链接命令之后,所依赖的库方法已嵌入代码之中,而若要链接动态库,用-L玄想指定库文件路径,我们只是让gcc知道了库文件所在位置,因此形成了可执行程序,而在运行该可执行程序时,却出现报错!这是为什么呢,因为,系统不知道你的库文件路径啊!链接了动态库的可执行程序在运行时是需要加载所需的库文件的,系统不知道路径,谈何加载啊!

        因此,为了解决该问题,我们提出四种解决方法:
                ①将头文件和库文件拷贝至系统默认目录。这是最简单粗暴的方法。

                ②软连接

                ③修改环境变量 LD-LIBRARY_PATH环境变量是内存级的,

                采用这种方法,在系统关闭以后,将恢复到原样,为了永久配置,

                建议学习环境变量相关知识。

                ④更改配置文件 /etc/ld.so.conf.d/

        关于这四种方法如果需要详细说明,请在评论区留言。

四、一些细节与补充

结论1:gcc/g++默认使用动态库,如果想要使用静态库,则需要用-static显式指定。

结论2:ldd .exe 使用该指令可以查看可执行程序.exe所链接的库文件有哪些。

结论3:一切第三方库在链接时都需要显示使用-l库名。

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

相关文章:

  • 上传视频网站源码网站首页不收录
  • 做淘宝客网站备案要怎么写哪个搜索引擎最好用
  • 域名已注册怎样建设网站seo什么职位
  • 免费建站网站 seo万能搜索网站
  • 如何百度搜到自己网站种子搜索在线 引擎
  • 怎么做赌博网站哪里有免费的网站推广软件
  • 网站架构图怎么画搜索最全的搜索引擎
  • 如果在工商局网站上做股权质押国际新闻今天
  • 做app网站需要什么技术支持自动app优化
  • 如何用visual做网站北京seo优化服务
  • 路由器怎么做网站什么是网络营销含义
  • php网站忘记后台密码东莞百度seo新网站快速排名
  • 做查询网站 发布数据东营百度推广电话
  • 宜宾网站建设费用2345浏览器下载
  • 瑶海区网站建设天津海外seo
  • 哪个免费自助建站系统最好用郑州seo网站管理
  • 哈尔滨学校网站建设网站制作公司有哪些
  • 做网站后台数据库建设写软文是什么意思
  • wordpress可以做博客么苏州seo关键词优化价格
  • 基于开源框架的网站开发360搜索引擎地址
  • 政府门户网站建设实施方案网络营销的含义
  • 指定网站怎么设置路由器只访问南阳本地网络推广优化公司
  • 高邮城乡建设网站河南网站关键词优化
  • wordpress连载插件一键优化软件
  • 2022年网站能用的百度搜索引擎网站
  • 如何做网站新手站外推广免费网站
  • 书店网站建设可行性分析怎么注册一个网站
  • 长宁区网站制作百度关键词seo年度费用
  • 涿州做网站的网站收录查询入口
  • 响应式网站开发费用百度手机网页版入口