MacOS:非 bundled/unix 可执行文件的版本信息
MacOS: Version info for not bundled/unix executables
这对我来说是一个难题:
- for Bundles/Frameworks 版本位于 Info.plist
- 对于旧的应用程序,它位于资源分支中
但是今天我发现了一个新的可执行文件 (LaunchDaemon),它没有资源分支,没有 Info.plist,根据 Finder 的右窗格显示版本为 1.0.0.1110。问题是版本来自哪里?
据我所知,launchd 和 launchctl 二进制文件似乎是唯一在 Finder 中报告版本号的二进制文件。
从 Mac OS X and iOS Internals 开始,它将 launchd 的启动描述为直接由内核启动,并且“name -- /sbin/launchd -- 被硬编码为变量 init_program_name".
我怀疑版本号也是硬编码的,Finder 知道要显示什么,否则 Finder 会将此视为已知的特殊情况。
如果您使用 'what' 命令,您还可以在二进制文件中看到版本号,在我的例子中,它是 2.0.0 on Yosemite 10.10.2:
$ what /sbin/launchd
/sbin/launchd
PROGRAM:launchd PROJECT:libxpc-559.10.3
VERSION:Darwin System Bootstrapper 2.0.0: Wed Nov 12 18:47:07 PST 2014; root:libxpc_executables-559.10.3~1/launchd/RELEASE_X86_64
我不知道您所指的具体 LaunchDaemon 程序,但对于一般情况,可以在 link 时将 Info.plist 嵌入到可执行文件中。
将 -sectcreate __TEXT __info_plist path/to/Info.plist
传递给 ld
,或者等效地,将 -Wl,-sectcreate,__TEXT,__info_plist,path/to/Info.plist
传递给编译器。
Apple 在 Code Signing Guide: Code Signing Tasks – Adding an Info.plist to Single-File Tools 中对此进行了记录。
您可以通过查看 otool -lV path/to/whatever
.
的输出来检查您所指的 LaunchDaemon 程序是否正在发生这种情况
这对我来说是一个难题:
- for Bundles/Frameworks 版本位于 Info.plist
- 对于旧的应用程序,它位于资源分支中
但是今天我发现了一个新的可执行文件 (LaunchDaemon),它没有资源分支,没有 Info.plist,根据 Finder 的右窗格显示版本为 1.0.0.1110。问题是版本来自哪里?
据我所知,launchd 和 launchctl 二进制文件似乎是唯一在 Finder 中报告版本号的二进制文件。
从 Mac OS X and iOS Internals 开始,它将 launchd 的启动描述为直接由内核启动,并且“name -- /sbin/launchd -- 被硬编码为变量 init_program_name".
我怀疑版本号也是硬编码的,Finder 知道要显示什么,否则 Finder 会将此视为已知的特殊情况。
如果您使用 'what' 命令,您还可以在二进制文件中看到版本号,在我的例子中,它是 2.0.0 on Yosemite 10.10.2:
$ what /sbin/launchd
/sbin/launchd
PROGRAM:launchd PROJECT:libxpc-559.10.3
VERSION:Darwin System Bootstrapper 2.0.0: Wed Nov 12 18:47:07 PST 2014; root:libxpc_executables-559.10.3~1/launchd/RELEASE_X86_64
我不知道您所指的具体 LaunchDaemon 程序,但对于一般情况,可以在 link 时将 Info.plist 嵌入到可执行文件中。
将 -sectcreate __TEXT __info_plist path/to/Info.plist
传递给 ld
,或者等效地,将 -Wl,-sectcreate,__TEXT,__info_plist,path/to/Info.plist
传递给编译器。
Apple 在 Code Signing Guide: Code Signing Tasks – Adding an Info.plist to Single-File Tools 中对此进行了记录。
您可以通过查看 otool -lV path/to/whatever
.