简单的问题,有什么.A
的libobjc.A.dylib
?抱歉问了一个简单的问题,但要在 Google 上搜索有关字母“A”的信息并不容易,而 Google 不会认为您将其用作“a”中的单数“a”。
它是用于指示库版本的名称的一部分,并允许存在同一库的多个版本。通常有一个朴素的名字链接到当前版本,就像这样libobjc
:
$ ls -l libobjc.*
-rwxr-xr-x 1 root wheel 12937200 9 Jul 2016 libobjc.A.dylib
lrwxr-xr-x 1 root wheel 15 7 Nov 2015 libobjc.dylib -> libobjc.A.dylib
这表明它libobjc.dylib
是到 的符号链接libobjc.A.dylib
。
作为一个不同的例子考虑libgcc
:
lrwxr-xr-x 1 root wheel 17 7 Nov 2015 libgcc_s.1.dylib -> libSystem.B.dylib
lrwxr-xr-x 1 root wheel 19 20 Dec 2016 libgcc_s.10.4.dylib -> libgcc_s.10.5.dylib
-rwxr-xr-x 1 root wheel 29480 2 Aug 2015 libgcc_s.10.5.dylib
这里有可用的库的三个名称和两个不同的版本。
需要特定库版本的软件可以与版本名称链接。当较新版本与较早版本完全兼容时使用链接,因此与较早版本链接的软件实际上获得较晚版本。
所有这些都只是动态链接的问题。通过静态链接,编译期间使用的库的实际版本被组合到软件二进制文件中,因此不依赖于当前安装在系统上的库版本。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句