专栏电商日志财经减肥爱情
投稿投诉
爱情常识
搭配分娩
减肥两性
孕期塑形
财经教案
论文美文
日志体育
养生学堂
电商科学
头戴业界
专栏星座
用品音乐

不同操作系统下的库文件

  为什么会有本文章?小生在实际项目开发中,很多时候都会面临着软件的发布。发布则意味着就会有许多的文件(例如:一个使用Qt框架开发的软件可能包含Qt相关库,第三方库,自己开发的库等等),杂七杂八,非常多。发布平台也会不一样(可能在windows上运行,可能在linux系列的平台上运行等)。对于不同操作系统下的库文件是不同的,于是就总结了这篇文章。文章中内容大多参考MSVC官方网站(Windows部分)、网上写得比较好的文章。对其文章内容做了整理,再结合自己的实际开发和研究总结而成。
  在实际软件开发中,软件由许多文件组成。不同操作系统下这些组成文件也不一样,本文总结在几种操作系统(Windows、linux、macOS)下软件的库文件,也包含在实际项目开发中,所使用的库文件。一、Windows下的库
  在操作系统下,一个库从源代码经编译套件编译构建后,会生成对应的库。这个库由:bin、include、lib等目录中的文件来描述。当然不同的编译构建套件所生成的库的组成有所不同。
  在Windows操作系统下,主要有以下两种:
  (1)。lib
  可由MSVC编译构建套件编译生成。
  (2)lib。a
  可由MinGW编译套件(Gcc系的编译套件)构建生成。
  在生成Windows下的可执行程序(exe)时有两种链接方式:(1)动态链接:允许可执行模块(。dll文件或。exe文件)仅包含在运行时定位dll函数的可执行代码所需的信息。(2)静态链接:链接器从静态链接库lib获取所有被引用的函数,并将库同代码一起放到可执行文件中。(11)、lib和dll的区别
  (1)lib是在我们编译的时候用到的,dll是程序运行的时候用到的。如果要完成源代码的编译,只需要lib;如果要使动态链接的程序运行起来,只需要dll,不必需要lib。
  (2)如果有dll文件,那么lib一般包含一些索引信息,记录dll中函数的入口和位置,dll中是函数的具体内容;如果只有lib文件,那么这个lib文件是静态编译出来的,索引和实现都在对应文件中。使用静态编译的lib文件,在运行程序时不需要动态库了,缺点是导致应用程序本体比较大,而且失去了动态库的灵活性,在我们需要重新发布新版本时要发布新的应用程序才行。
  (3)在动态链接的情况下,有两种文件:一个是lib文件,一个是dll文件。lib包含被dll导出的函数名称和位置,dll包含实际的函数和数据,应用程序使用lib文件链接到dll文件。在应用程序的可执行文件中,存放的不是被调用的函数代码,而是dll中相应函数代码的对应地址,从而节省了内存资源。dll和lib文件必须随应用程序一起发行,否则应用程序运行时会产生错误,如下图所示。
  如果不想用lib文件或者没有lib文件,可以用WIN32API函数LoadLibrary、GetProcAddress进行装载。(12)、如何使用已经存在的库?
  应该在我们的项目中包含我们需要使用的库的头文件(。h),并指定我们所需要链接的库文件(。lib)。如果是动态链接,还需要将生成的可执行软件(exe)放到我们所使用的库的动态链接库(dll)目录下。
  例如,我们在QtCreator中进行开发时,可以使用:
  DESTDIR:指明链接生成的可执行文件的目录。(这个目录最好是一个包含完整的dll的目录路径)
  INCLUDEPATH:指定库的头文件包含路径。
  LIBS:指定在链接中,所使用的库。如果没有指定,一般会报类似如下的错误:
  (13)、应用程序的可执行文件是如何找到dll文件的呢?
  在许多软件开发工具中,例如Qt,可以指定dll文件的完整搜索路径;如果不指定路径,或者在链接可执行文件时进行了隐式链接,Windows将遵循下面的搜索顺序来定位dll:
  (1)包含exe文件的目录。
  (2)工程目录。
  (3)Windows操作系统的系统目录。
  (4)列在Path环境变量中的目录。(14)查看依赖
  推荐两种方式:
  (1)使用dumpbinVS命令行工具查看依赖。
  (2)使用Depends。exe查看程序依赖库。二、linux下的库
  在linux平台下,库主要有以下两种:
  (1)lib。so:动态库
  (2)lib。a:静态库
  在linux系统下,为了理解扩展名为。a、。so和。la的文件库的实际含义,我们首先必须了解Linux中的库的概念。简单地说,Linux是一组预编译的代码片段的集合,这些代码片段被称为函数。库非常有用,它们提供了可重用的函数、类和数据结构。Linux中的一些库示例有glibc(标准C库的GNU版本)和libc(C标准库)等。总的来说,可以将Linux中的库分为两类:(21)静态库
  在编译时链接到程序中的库称为静态库。它们也被称为静态链接库,由一组例程、外部函数和变量组成。在编译时链接到一个程序之后,它被链接器、绑定器或编译器复制到目标应用程序,然后生成一个目标文件和一个独立的可执行文件。静态库有一个扩展名。a,其中的。a代表存档。
  静态库的缺点是:比动态库更快,因为通常使用的一组目标文件被放在一个可执行文件中。
  静态库的优点是:用于构建它的代码被锁定在最终的可执行文件中,并且在不重新编译库的情况下无法修改它。(22)动态库
  作为独立文件存在于可执行文件之外的库被称为动态库。在编译时,程序生成库文件的一个副本。
  扩展名为。so的文件代表动态库。
  动态库的优点是:单个库可以被多个应用程序使用,而不需要每个应用程序都像使用静态库那样拥有自己的库副本。
  动态库的缺点是:与静态库相比,库被破坏的可能性要高得多。一个非常简单情况就是:如果一个动态库文件损坏,可执行文件可能会无法启动运行。(23)。la文件
  扩展名为。la的文件不是库,但实际上它们是包含库描述的文本文件。它们由GNUlibtools包生成,用于描述组成相应库的文件。(24)运行时加载库文件静态加载:
  由于静态库在程序编译时会被链接到目标代码中,程序运行时将不再需要该静态库。动态加载:
  (1)将so文件拷贝安装到lib或usrlib目录下,并执行ldconfig命令。
  (2)如果将库文件安装到非lib或usrlib目录下,那么在执行ldconfig命令前,还要把新共享库目录加入到共享库配置文件etcld。so。conf中。
  (3)如果将库文件安装到非lib或usrlib目录下,并且我们不想在etcld。so。conf中加路径(或者是没有权限加路径)。这时候,我们那可以export一个全局变量LDLIBRARYPATH,并指定完整的库路径。在运行程序的时候就会去这个目录中找共享库,可以设置多个搜索目录,这些目录之间使用冒号分隔开。exportLDLIBRARYPATHusrlocallib:LDLIBRARYPATH
  (注意)在linux系统下,有一点与Windows不同:动态库与可执行文件放在同一目录下是找不到动态库的。
  ldconfig命令的作用主要是:在默认搜寻目录lib和usrlib以及动态库配置文件etcld。so。conf内所列的目录下,搜索出可共享的动态链接库,进而创建出动态装入程序(ld。so)所需的链接和缓存文件。
  缓存文件默认为etcld。so。cache,此文件保存已排好序的动态链接库名字列表,为了让动态链接库为系统所共享,需运行动态链接库的管理命令ldconfig,此执行程序存放在sbin目录下。
  ldconfig通常在系统启动时运行,当我们安装了一个新的动态链接库时,就需要手动运行这个命令。(25)依赖查看
  使用ldd命令查看可执行文件依赖的库文件。例如下图:
  三、macOS下的库
  在macOS平台下,库主要有以下三种:
  (1)dylib
  在macOS系操作系统中,dylib为动态库的存在形式。
  (2)。a
  a是静态库的存在形式。
  (3)。framework
  对于。framework文件来说,可以是静态的,也可以是动态的。(31)macOS下静态库和动态库的区别
  。a文件肯定是静态库,。dylib肯定是动态库,。framework可能是静态库也可能是动态库。
  静态库在链接时,会被完整的链接到可执行文件中,如果多个APP都使用了同一个静态库,那么每个APP都会拷贝一份,这样做,缺点就是占用很多的内存空间。
  动态库不会复制,只有一份,程序运行时会被动态加载到内存中,且系统只会加载一次,多个程序公用一份,因此节约了内存空间。但是如果在项目中使用了自己定义的动态库,苹果是不允许上架的,在iOS8后苹果开放了动态加载。dylib的接口,可用于挂载。dylib动态库。

爱奇艺陷限制投屏等合规争议背后涨价的会员费与缩水的权益近日,爱奇艺可谓冰火两重天,一边是电视剧狂飙热播,一边因限制投屏3个设备同时登录账号被封等争议冲上热搜。不只爱奇艺,围绕用户权益,优酷腾讯芒果等长视频平台也多次引发争议。从超前点播求才求职双向奔赴,信宜就业服务平台上线每年春节后,都是劳务人员外出求职的黄金期。2023年新春节后返工第一周,信宜在绍秀体育馆举行南粤春暖就业服务大型招聘会暨信宜就业服务平台上线发布会,共提供15000个高薪岗位,吸引爸爸试探B超医生胎儿性别,反被套路,网友道高一丈文菁妈我们去做B超的时候,都发现B超室外面挂着一张非常显眼的牌,而这张牌上面写着禁止非医学需要的胎儿性别鉴定,下面还会有举报电话!也就是B超医生不能向病人透露胎儿的性别,无论是明示吴冠希晒岳父生前聊天记录,内容感动网友,都说张常宁嫁对人了!张常宁的父亲因突发疾病去世之后,张常宁和吴冠希二人立即终止旅行赶赴医院处理后事。两人经历了这场和亲人的生离死别之后,也都纷纷发文怀念父亲张友生。其中吴冠希更是保留了翁婿之间的聊天记MySQL表设计一二三四五范式BC范式与反范式详解!MySQL的库表设计,在很多时候我们都是率性而为,往往在前期的设计中考虑并不全面,同时对于库表结构的划分也并不明确,所以很多时候在开发过程中,代码敲着敲着会去重构某张表结构,甚至大第二个华为出现,人民网点名表扬,比尔盖茨说得很对大家都知道,2020年的华为是最有希望打破苹果在国内手机市场一枝独秀的一年,究其原因,就是因为华为率先推出了全球首款5G5nmSOS级麒麟9000芯片,搭载该芯片的华为手机销量一度半导体在磁场作用下的盘根错节解析其相关技术及磁性能引言磁场对半导体材料的影响一直是研究者关注的热点之一。在磁场作用下,半导体材料的电学光学等性能可能发生显著的改变。近年来,随着磁控技术的发展,磁场对半导体材料制备及性能提升的研究也这些APP,被工信部通报了!你手机里有吗?速查记者2月8日从工业和信息化部获悉,依据个人信息保护法网络安全法电信条例电信和互联网用户个人信息保护规定等法律法规,工信部组织第三方检测机构对群众关注的生活服务类移动互联网应用程序(小米我做了违背祖宗的决定元宵节过完了,意味着新一年的努力要开始了,果子在这里先祝大家工作顺利。在过去的2022年下半年里,安卓手机终于凭借着回归台积电代工的骁龙8和GPU性能超越A16的骁龙8Gen2有了文心一言这可不是随便打的字,这是百度的AI聊天机器人的名字,话出这个名字真怪怪的,一点也不上口,不知道为什么让我想起叶文洁。想当年pc时代的bta,互联网三巨头,是何等风光?可走着走着,百中国芯片出路到底在哪我们都知道,高精尖科技离不开芯片,我们生活在信息时代,我们身边的很多产品里面都有芯片,家用电器,汽车,手机都含有芯片。一直以来,我们的芯片都是依赖于进口。如果把中央处理器CPU比喻
18年一本机械毕业,现在在机械厂上班,对机械这行完全没兴趣了,想裸辞去考公务员国考可以吗?大家有什么建议吗?我也是学机械的,考公务员考了几年也没有考上。机械类考公务员很难,招的岗位少,分数也不低没有招机械专业的岗位,只能报考三不限,分数同样也不低,都不好考。趁现在你刚毕业,还年轻,建议你大学生毕业试用期5000元,每天工作七小时,双休,这样的工作怎么样?我简直太羡慕你了!试用期就能有5000元,这顶我实习工资的2。5倍,你这样高的起点,应该是985211毕业的大学生没错。01从薪资水平来看,对于大学毕业生来说完全合理讲一个我的故事晚婚37岁准备备孕要小孩,晚了吗?每个人的身体情况不一样,晚倒是不晚,但是同时要做好心里准备跟生理准备。我自己是37岁生的头胎。可以告诉一些我自己的个人建议。备孕前医院得体检必不可少,一旦有任何不适宜的千万不要强行怎么样提高乒乓球手感细腻程度?乒乓球可以说是激烈的球类运动中最讲究手感的一项运动,几个原因一是乒乓球体积小,越小的东西其运动规律越难把握二是乒乓球是圆形,在运动过程的旋转是千变万化,而且凭肉眼是很难分辨清楚旋转为什么有人宁愿每年买一个国产机,也不愿意三年买一部苹果手机?这种贬低中国制造种侮辱国人智商的问题,敢于明目张胆的提出来,本身就挺狂妄的,为什么要把国产手机贬的那么差劲,又为什么把美国的手机捧的高高在上,提出问题的人本身就带有严重的偏见,这种DNF中有哪些伤害高的纯C职业?95版本中也还活跃的有哪些?95版本让不少冷门职业重回一线舞台,当然XT的亲儿子的活跃度肯定高,毕竟玩家基数大,下面一起来看一下95版本值得一玩的职业女机械在90版本的时候女机械给我们的印象中,属于那种经看不国安的王刚在与山东队的比赛中受伤骨折,郭田雨要负主要责任吗?我看了比赛,王刚是和守门员撞在一起的,当泰山队角球发出后郭田雨起跳争顶时王刚也跳起,恰巧和扑球的守门员撞在一起,王刚落地时手着地造成受伤离场,这事应该说郭田雨没责任,任何栽赃郭田雨丁元英的杀富济贫无懈可击吗?值得林雨峰自杀吗?首先林雨峰的自杀确实有点突兀,商场如战场,战场也不能只有冲锋没有迂回撤退吧?不见得撤退就是逃跑,也可以整顿队伍重新进攻。另一个问题直接和冯世杰他们合作?冯世杰不是傻子,自己几斤几两卫衣搭配哪种外套才更有型?卫衣搭配哪种外套才更有型?随着时尚运动风潮的大热,连帽卫衣已成为型男不可缺少的搭配单品,秋天就是一个很合适穿连帽卫衣的季节,但在气温较低的地区或者冬天时单穿连帽卫衣肯定保暖度不足,积家大师系列腕表,两千元入手如何?积家,JaegerLeCoultre,始于1833年,瑞士高级钟表制造商。积家有七个系列腕表,积家的翻转系列积家约会系列积家大师系列积家北宸系列,积家双翼系列,积家空气钟,积家超卓医院的误诊有多可怕?误诊了应该怎么办?我有一个同学的妈妈,60多岁的时候,刚开始就是有点咳嗽,也没有当回事,可吃了很多消炎药也不见效。后面咳嗽的越来越厉害,竟然咳岀血来了。就去了医院检查,做了X光片,发现肺上有一个小阴
友情链接:快好找快生活快百科快传网中准网文好找聚热点快软网