Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ “什么是”呢;条状;(GCC应用程序)用于?_C++_C_Gcc - Fatal编程技术网

C++ “什么是”呢;条状;(GCC应用程序)用于?

C++ “什么是”呢;条状;(GCC应用程序)用于?,c++,c,gcc,C++,C,Gcc,这个小小的申请是为了什么 在没有任何选项的情况下使用它会减小可执行文件的大小,但如何/做什么?它会从二进制文件中删除符号信息。二进制文件包含一些将符号(如函数名)映射到特定位置的信息条带删除这些 在其默认操作中,条带 命令删除符号表并 来自 可执行文件 来自(Mac OS X,但其他类似): 条带删除或修改附加到输出的符号表 汇编程序和链接编辑器。这有助于节省安装后的空间 程序已调试,无法限制动态绑定符号 请注意“程序调试后”这一点,因为调试剥离的可执行文件确实非常困难。“limit Dynam

这个小小的申请是为了什么


在没有任何选项的情况下使用它会减小可执行文件的大小,但如何/做什么?

它会从二进制文件中删除符号信息。二进制文件包含一些将符号(如函数名)映射到特定位置的信息<代码>条带删除这些

在其默认操作中,条带 命令删除符号表并 来自 可执行文件

来自(Mac OS X,但其他类似):

条带删除或修改附加到输出的符号表 汇编程序和链接编辑器。这有助于节省安装后的空间 程序已调试,无法限制动态绑定符号

请注意“程序调试后”这一点,因为调试剥离的可执行文件确实非常困难。“limit Dynamic bound symbols”(限制动态绑定符号)是一种少见的用法:它允许您通过删除指示实际代码所在位置的索引项来访问外部库中的某些函数。手册页中也对此进行了解释


在大多数情况下,像磁盘一样便宜和丰富,您根本不会再为此烦恼。但在空间有限的情况下,如嵌入式设备、救援磁盘等,您可能需要它。

只要保留可执行文件的非压缩副本,您就可以自由发布压缩版本,并在需要时根据非压缩版本进行调试。这在嵌入式开发中很常见,例如:如果一个核心文件(来自运行剥离二进制文件的客户)从现场传入,您可以将未剥离的二进制文件加载到gdb中,然后打开核心文件并具有完全的符号可调试性。虽然硬盘空间便宜,但磁盘性能却不高。二进制文件越小,加载应用程序/库时需要执行的磁盘I/O就越少。我支持这一点。胖程序让我那台功能强大的电脑陷入了可悲的困境。程序员!小就是美!请注意,加载速度慢的另一个原因是碎片库。它们是碎片化的,以使它们更细粒度,并避免——哈哈——不必要的加载。这在快速随机存取SSD时代是不重要的,并且最后一个好处是,它没有让黑客更难(至少对于C++,而不是像java或ObjuleC这样的反射语言帮助)。