c++ - 如何从 g++ 生成的目标代码中剥离表示源头文件绝对路径的字符串

标签 c++ gcc

通过运行 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/

相关文章:

c++ - 内联汇编的麻烦

python - 如何更新/安装 gcovr 以匹配我更新的编译器 gcc

c - for(int i = 0... 的形式是 gnu 扩展吗?

c++ - 由于 undefined reference ,无法链接到 Debian 上的 Crypto++

c++ - 将字符串转换为 const char 然后再转换为 struct hostent 的问题

c++ - 创建对象的拷贝以进行多重比较是一种好习惯吗?

c++ - 奇怪的 "undefined reference"模板成员

c++:生成函数调用树

C++ 初始化静态常量结构变量

c++ - malloc 分配给指针