我认为(如有错误请纠正),在使用 gdb
和 gdbserver
进行远程调试时,运行在 gdbserver
下的目标二进制文件不需要包含在二进制文件中的调试信息,但是运行 gdb
的主机需要。
我们带有调试符号的应用程序二进制文件大小为约112兆字节。如果运行strip命令,则二进制文件仅为6.7兆字节,这将更快地部署到我们的目标平台。
Qt Creator是否可以在部署之前对二进制文件进行strip操作?我们还能够进行调试吗?
strip -u -r ./MyApplication/Contents/MacOS/MyApplication
如何启用额外的构建步骤
从右侧工具栏中选择项目
请确保您在“生成和运行”选项卡上(GraphicsScene只是项目的名称)。 在“构建步骤”下,您会看到两个步骤,qMake
和Make
。选择添加构建步骤以进行自定义进程步骤。
在填写相关字段时,您可能需要更正路径,而不仅仅是复制它们。
当构建完成后,strip命令将会运行。如果出现任何错误,很可能是strip命令的路径或您的应用程序包可执行文件的路径有问题。您可以这样删除调试符号:
在您的make文件中添加一行,这将从中删除所有调试符号:
cd $(MY_BINARY_INSTALL_PATH); strip --strip-debug $(MY_BINARY_INSTALL_PATH)/bin/mybinary -o $(MY_BINARY_INSTALL_PATH)/bin/mybinary
如果您想要从中删除所有符号,可以使用类似以下的内容:
cd $(MY_BINARY_INSTALL_PATH); strip --strip-all $(MY_BINARY_INSTALL_PATH)/bin/mybinary -o $(MY_BINARY_INSTALL_PATH)/bin/mybinary
删除所有符号将有助于显著减小二进制文件的大小。
-r
和-u
这两个参数吗?我在strip
的 man 手册中找不到它们。 - Philipp Ludwig-u 保存所有未定义符号。这是为可重定位对象使用的,以保存外部重定位条目引用的符号。请注意,常见符号也由外部重定位条目引用,而此标志不保存这些符号。 -r 保存动态引用的所有符号。
- TheDarkKnight