0

我正在测试以确保我的交叉编译器正常工作。当我编译 hello world 时,它似乎编译得很好,但是当我将 hello.cpp 更改为循环 1000 次的同一程序时,生成的 elf 文件的大小完全相同。无论我进行什么更改,文件的大小始终相同,据我所知,具有相同的内容。什么会导致这个?

4

2 回答 2

6

“据我所知”是什么意思?您可以使用diff或其他一些实用程序进行检查。如果您对某些小型设备使用交叉编译器,则可能有理由将输出分配为指定大小的块,甚至预先分配目标的设备大小。你能用一些工具验证你确实得到了完全相同的文件吗?

于 2010-07-15T21:21:50.183 回答
2

没有更多细节,很难为您提供太多帮助。但这里有一些想法:

  1. 正如 Bobby 所说,您确定将正确的文件传递给它吗?

  2. 您确定您正在运行的可执行文件是正在生成的可执行文件吗?

  3. 编译真的成功了吗?您正在运行的可执行文件可能是编译器最后一次成功运行的可执行文件,而不是您当前的编译尝试。

  4. 正如viraptor所建议的那样,您绝对确定文件是相同的吗?diff 是否说它们相同?您所做的任何更改都可能会得到优化 - 特别是如果您正在更改甚至没有被调用的代码。

真的,很有可能你并没有真正做你认为你在做的事情。

  1. 确保您的编译命令 - 无论是在命令行上还是在 make 文件中或其他任何地方 - 都是正确的。

  2. 您可能应该删除您的可执行文件以确保实际生成了一个新的可执行文件。

  3. 如果您专门尝试编译垃圾,请查看编译器会做什么。它不应该编译。如果是,那么您并没有编译您认为正在编译的内容。

于 2010-07-15T21:27:34.633 回答