通过运行 strings
我注意到我的 g++ 4.7.3
编译器(没有打开调试标志)生成的目标代码包含所有的绝对路径源代码单元中使用的 header 。对目标代码执行 strip -s
不会删除这些字符串。为什么它们首先包含在目标代码中?其次,如何从目标代码中删除它们?
最佳答案
文件名和路径通常来自命令行,因此如果您使用绝对路径编译文件,它将显示在二进制文件中。您需要修改编译源文件的方式,可能会更改构建系统。变化:
g++ -I/home/frey/mylib/include /home/frey/foo.cpp -o foo
到
cd /home/frey
g++ -Imylib/include foo.cpp -o foo
关于c++ - 如何从 g++ 生成的目标代码中剥离表示源头文件绝对路径的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043939/