将源代码添加到elf文件

4
我想将我的C++源代码添加到相应的elf二进制文件中,我正在寻找最好的方法来实现这一点。(我使用了几个版本的代码,并不是每个版本都应该提交到svn。)
我能否只使用bash的>>操作符附加源代码而不破坏elf文件呢? 还是使用objcopy --add-section的方式可以实现?
顺便说一下,是否有更好的方法来确定所有已使用的源代码文件,而不仅仅是通过递归#include行来进行grep搜索?

1
我不太确定你在这里具体在问什么。(a) 你为什么要将源代码附加到elf二进制文件中?(b) 这与在Subversion中保留版本有什么关系?(c) 即使你可以使用objcopy插入源代码,一旦它在那里,你打算怎么处理它?(d) 你是想确定哪些源文件被编译成特定的elf二进制文件吗? - Greg Hewgill
(a) 因为这是一个科学程序,方程式经常会稍作修改。因此,必须能够理解使用了哪个方程式。 (b) 没有什么特别的。我只是想提一下,在这里使用svn无法跟踪版本。 (c) 然后你可以看看使用了哪种类型的方程式。 (d) 因为(c)。 - Manuel
你找到合适的答案了吗?看起来列出的答案并不是很有效。 - Lime
2个回答

2

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

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

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

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


1
如果您正在使用gcc,可以使用-M标志获取包含所有已包含文件的文件列表。它会写入到使用-o指定的文件中,如下所示:
gcc -M -c my_file.c -o list_of_included_files.txt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接