Мой кросс-компилятор всегда компилирует один и тот же файл - PullRequest
0 голосов
/ 16 июля 2010

Я тестирую, чтобы убедиться, что мой кросс-компилятор работает.Когда я компилирую hello world, кажется, что он компилируется нормально, но когда я изменяю hello.cpp на ту же программу, которая повторяет 1000 раз, сгенерированный файл elf имеет точно такой же размер.Независимо от того, какие изменения я делаю, файл всегда имеет одинаковый размер и, насколько я могу судить, имеет одинаковое содержимое.Что вызвало бы это?

Ответы [ 2 ]

6 голосов
/ 16 июля 2010

Что значит "насколько я могу судить"? Вы можете проверить это с помощью diff или другой утилиты. Если вы используете кросс-компилятор для небольшого устройства, у него может быть причина распределить выходные данные в блоках определенного размера или даже предварительно выделить размер целевого устройства. Можете ли вы с помощью какого-нибудь инструмента проверить, действительно ли вы получаете точно такой же файл?

2 голосов
/ 16 июля 2010

Без подробностей было бы сложно вам сильно помочь.Но вот несколько идей:

  1. Как говорит Бобби, вы уверены, что передаете ему нужные файлы?

  2. уверены, что исполняемый файл, который вы запускаете, генерируется?

  3. На самом ли деле компиляция прошла успешно?Исполняемый файл, который вы запускаете, может быть последним успешным запуском компилятора, а не вашими текущими попытками компиляции.

  4. Как предположил viraptor, вы абсолютно уверены что файлы одинаковые?Дифф говорит, что они одинаковы?Вполне возможно, что любые изменения, которые вы делаете, оптимизируются, особенно если вы вносите изменения в код, который даже не вызывается.

Действительно, шансы на то, что вы 'вы на самом деле не делаете то, что, по вашему мнению, делаете.

  1. Убедитесь, что ваши команды компиляции - будь то в командной строке, в файле make или в любом другом месте - верны.

  2. Вы, вероятно, должны удалить свой исполняемый файл, чтобы убедиться, что фактически генерируется новый.

  3. Посмотрите, что делает компилятор, если вы специально попытаетесь скомпилироватьмусор.Это не должно компилироваться.Если это так, то вы не компилируете то, что думаете, что компилируете.

...