我正在测试以确保我的交叉编译器正常工作。当我编译hello world时,似乎编译得很好但是当我将hello.cpp更改为循环1000次的同一程序时,生成的elf文件大小完全相同。无论我做什么改变,文件总是相同的大小,据我所知,具有相同的内容。会导致这种情况的原因是什么?
答案 0 :(得分:6)
“据我所知”是什么意思?您可以使用diff
或其他实用程序进行检查。如果您对某个小型设备使用交叉编译器,则可能有理由以指定大小的块分配输出,甚至预先分配目标的设备大小。你能用一些工具验证你确实得到完全相同的文件吗?
答案 1 :(得分:2)
如果没有更多细节,很难帮助你。但这里有一些想法:
正如Bobby所说,你确定你传递了正确的文件吗?
您确定正在运行的可执行文件是正在生成的可执行文件吗?
编译实际上是否成功?您正在运行的可执行文件可能是上次成功运行编译器的可执行文件,而不是您当前的编译尝试。
正如viraptor建议的那样,你绝对确定文件是否相同?差异说他们是一样的吗?您正在进行的任何更改都可能会被优化 - 特别是如果您在代码中进行更改甚至无法调用。
真的,很可能你并没有真正按照自己的想法行事。
确保您的编译命令 - 无论是在命令行上,还是在make文件中还是其他内容 - 都是正确的。
您应该删除可执行文件,以确保实际生成新的可执行文件。
如果您专门尝试编译垃圾,请查看编译器的作用。它不应该编译。如果是,那么你没有编译你认为你正在编译的内容。