控制、编辑或发出 dylib 的 LC_UUID 的工具?
Tools to control, edit, or emit the LC_UUID of a dylib?
我正在生成带有嵌入式位码的 dylib,并使用 -bitcode-symbol-map
标志指定一个输出目录,其中生成 UUID.bcsymbolmap
形式的文件。我想教我的构建系统关于那些 bcsymbolmap
文件的知识,以便我可以安装和打包它们,但是很难这样做,因为文件的输出名称由 LC_UUID
中的值决定dylib 似乎由 ld
决定。看来我有两个选择:
想办法在构建的时候显式设置dylib的LC_UUID
,这样我就可以预测bcsymbolmap
文件的输出名称了
为不包含 UUID 的 bcsymbolmap
文件指定一个众所周知的名称(-bitcode-symbol-map
选项确实支持这个),然后在安装时找出关联 dylib 的 LC_UUID
并适当地重命名 bcsymbolmap
文件。
但是,我既没有看到允许我在构建它时指定库的 LC_UUID
的链接器标志,也没有看到允许我在事后更改它的工具(在这里想一些东西像 install_name_tool
),我也没有看到一个实用程序可以轻松地返回给定库的 LC_UUID
(对 bcsymbolmap
文件进行所需的重命名),而不是解析otool -l
的输出,看起来脆弱且令人不快。
我宁愿将我的选择限制在 XCode 附带的东西上。有谁知道可以轻松地为 dylib 注入、编辑或发出 LC_UUID
的工具?
发现比解析 otool -l
输出稍微好一点的东西:运行 dwarfdump -u
在目标上将列出 UUID:
$ dwarfdump -u build/libfoo.dylib
UUID: BF8FAFCC-5B1F-3FC8-B2AF-FCDA16609D71 (arm64) build/libfoo.dylib
它仍然不理想,但至少用 awk
或类似的解析是微不足道的。
Apple 工程师,如果有人看到这个,那么在 ld
中添加一个选项以在构建时显式设置 LC_UUID
将对构建系统非常友好。标志 -no_uuid
已经存在,添加一个 -uuid
标志似乎很容易,该标志将 UUID 作为参数并使用它而不是生成一个。
我正在生成带有嵌入式位码的 dylib,并使用 -bitcode-symbol-map
标志指定一个输出目录,其中生成 UUID.bcsymbolmap
形式的文件。我想教我的构建系统关于那些 bcsymbolmap
文件的知识,以便我可以安装和打包它们,但是很难这样做,因为文件的输出名称由 LC_UUID
中的值决定dylib 似乎由 ld
决定。看来我有两个选择:
想办法在构建的时候显式设置dylib的
LC_UUID
,这样我就可以预测bcsymbolmap
文件的输出名称了为不包含 UUID 的
bcsymbolmap
文件指定一个众所周知的名称(-bitcode-symbol-map
选项确实支持这个),然后在安装时找出关联 dylib 的LC_UUID
并适当地重命名bcsymbolmap
文件。
但是,我既没有看到允许我在构建它时指定库的 LC_UUID
的链接器标志,也没有看到允许我在事后更改它的工具(在这里想一些东西像 install_name_tool
),我也没有看到一个实用程序可以轻松地返回给定库的 LC_UUID
(对 bcsymbolmap
文件进行所需的重命名),而不是解析otool -l
的输出,看起来脆弱且令人不快。
我宁愿将我的选择限制在 XCode 附带的东西上。有谁知道可以轻松地为 dylib 注入、编辑或发出 LC_UUID
的工具?
发现比解析 otool -l
输出稍微好一点的东西:运行 dwarfdump -u
在目标上将列出 UUID:
$ dwarfdump -u build/libfoo.dylib
UUID: BF8FAFCC-5B1F-3FC8-B2AF-FCDA16609D71 (arm64) build/libfoo.dylib
它仍然不理想,但至少用 awk
或类似的解析是微不足道的。
Apple 工程师,如果有人看到这个,那么在 ld
中添加一个选项以在构建时显式设置 LC_UUID
将对构建系统非常友好。标志 -no_uuid
已经存在,添加一个 -uuid
标志似乎很容易,该标志将 UUID 作为参数并使用它而不是生成一个。