我想将C ++源代码添加到相应的elf
二进制文件中,我正在寻找最佳方法。 (我正在使用我的代码的几个版本,并不是每个版本都应该提交到svn)。
我是否可以在不使用bash的elf
运算符破坏>>
文件的情况下附加源代码?
或objcopy --add-section
是一种方法吗?
顺便说一句,是否有更好的想法只是从源代码文件中递归grep
所有#include
行来确定所使用的所有源代码文件?
答案 0 :(得分:2)
您可以通过在命令行上使用“-E”选项从大多数C / C ++编译器获取预处理器的输出,例如,
g++ -E my_file.c -o my_file_preproc.c
objcopy是一个简单的赌注,但我今天遇到了the ELF resource compiler,它可能对你有用。它允许您在ELF文件中嵌入您想要的任何内容,甚至可以生成C / C ++代码以允许您额外添加它。因此,您甚至可以创建一个代码可以链接的库,它将直接从可执行文件中打印出可执行文件的源代码。
这提出了另一个想法...而不是只包括所有预处理的源代码,您可以让可执行文件提供打印出使用的等式的选项。
答案 1 :(得分:1)
如果您正在使用gcc,则可以使用-M标志来获取包含所有包含文件列表的文件。它被写入使用-o指定的文件,如下所示:
gcc -M -c my_file.c -o list_of_included_files.txt