4

我想将我的 C++ 源代码添加到相应的elf二进制文件中,并且我正在寻找执行此操作的最佳方法。(我正在使用我的代码的多个版本,并不是每个版本都应该提交到 svn 中)。

我可以在不elf使用 bash>>运算符破坏文件的情况下附加源代码吗?或者objcopy --add-section有办法做到这一点?

顺便说一句,有没有更好的主意,只是从源代码文件中递归地确定grep所有行以确定使用的所有源代码文件?#include

4

2 回答 2

2

您可以使用命令行上的“-E”选项从大多数 C/C++ 编译器获取预处理器的输出,例如,

g++ -E my_file.c -o my_file_preproc.c

objcopy 是一个简单的选择,但我今天遇到了 ELF 资源编译器,它可能对你有用。它允许您在 ELF 文件中嵌入您想要的任何内容,甚至可以生成 C/C++ 代码以允许您添加它。因此,您甚至可以创建一个您的代码可以链接的库,该库将直接从可执行文件中打印出可执行文件的源代码。

这带来了另一个想法……您可以让可执行文件提供一个选项来打印所使用的方程式,而不仅仅是包含所有预处理的源代码。

于 2010-01-18T21:45:42.403 回答
1

如果您使用 gcc,您可以使用 -M 标志来获取包含所有包含文件列表的文件。它被写入使用 -o 指定的文件,如下所示:

gcc -M -c my_file.c -o list_of_included_files.txt
于 2009-11-30T10:04:08.487 回答