Linux/Gcc/LD -工具链。
我想从库和可执行文件中删除STL/Boost调试符号,原因有二:
对于1.增量链接是一个很大的改进,但是AFAIK不支持增量链接。在1999年的dr.dobb博士的日志中有一个解决办法:“伪增量链接”(不再出现在web中,而是在archive.org中)(其想法是将所有内容放在一个动态库中,并将所有更新的对象文件放在第二个先加载的目录中),但这并不是一个通用的解决方案。
对于2.有一个脚本这里,但是a)它对我不起作用(它没有删除符号),b)它的速度非常慢,因为它在管道的末端工作,而更早地删除符号会更有效。
显然,其他调试符号应该保持在适当的位置。
发布于 2008-09-17 10:03:31
GNU条带接受regex参数到- strip符号= STL,而boost符号因其所处的名称空间而被命名损坏。现在我手头还没有GCC的二进制文件,只是看一下名称空间中使用的mangling这个名字,然后构造“来自命名空间的符号”的regex,然后将这个符号传递给-strip符号=。
发布于 2008-09-16 18:52:55
据我所知,gcc没有真正的选择去做你想做的事。主要问题是,要为其提取调试符号的所有代码都是在标头中定义的。
否则,就有可能单独构建一个库,去掉它,并将其链接到已剥离的版本。
但是,仅从编译单元的某些部分获取调试符号,而构建和链接(为您想要的链接时间加速比)在gcc中是不可能的。
发布于 2008-09-16 16:12:09
您可能不想从共享库中删除调试符号,因为您可能在某个时候需要这样做。
如果您正在使用GDB或DDD进行调试,您可能可以从source路径中删除Boost源文件,这样它就无法跟踪到函数中。(或者只是不追踪他们,追踪完毕!)
您可以删除使用调试符号编译程序的选项,这将加快链接时间。
就像您链接到的脚本一样,您可以参考条形程序("man“)来删除所有或特定的符号。
https://stackoverflow.com/questions/73519
复制相似问题