我的交叉编译器总是编译相同的文件[关闭]

问题描述 投票:0回答:2

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

c++ gcc elf
2个回答
6
投票

“据我所知”是什么意思?您可以使用

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


2
投票

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

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

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

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

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

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.