Я пытаюсь собрать CLFS для процессора PPC 8270. Все было хорошо, пока я не использовал команду make ARCH=powerpc CROSS_COMPILE=${CLFS_TARGET}-
.
CC arch/powerpc/kernel/align.o
arch/powerpc/kernel/align.c: In function 'fix_alignment':
arch/powerpc/kernel/align.c:704:33: error: variable 'instruction' set but not used [-Werror=unused-but-set-variable]
cc1: all warnings being treated as errors
make[1]: *** [arch/powerpc/kernel/align.o] Error 1
make: *** [arch/powerpc/kernel] Error 2
В menuconfig
, я использовал конфигурацию по умолчанию, за исключением того, что выбрал совместимость с семейством процессоров PPC 82XX.
решение1
Мне кажется, что это ошибка в align.c 2.6.39 и более ранних версиях относительно GCC >= 4.6. Я предполагаю, что вы строите на последней Fedora, в которой GCC 4.6 установлен по умолчанию. Ошибка не должна появляться при использовании GCC < 4.6 IMHO.
Переменная "instruction" объявляется в строке 704 и инициализируется нулем. Затем она переназначается в строке 746. Этого переназначения недостаточно, чтобы убрать предупреждение gcc. Я проверил это поведение, скомпилировав
int main()
{
int i = 0;
i = 4;
return 1;
}
с /usr/local/gcc-4.7.0/bin/gcc -Wall -o test test.c
и получил
test.c:3:6: warning: variable ‘i’ set but not used [-Wunused-but-set-variable]
Переменная "instruction" упоминается только в коде, который ifdef'ed CONFIG_VSX, так что если у вас не установлен CONFIG_VSX, то вы увидите эту проблему при компиляции с GCC >= 4.6. Установка CONFIG_VSX должна решить проблему. Если это не то, что вам нужно, попробуйте установить CONFIG_PPC_DISABLE_WERROR в menuconfig или используйтеэтиинструкции, которые помогут вам отключить -Werror или исправить код.
Если вы исправите код, рассмотрите возможность отправки его на kernel.org, так как я вижу, что эта ошибка все еще существует в версии 3.3.
решение2
Решено копирование libbfd.2-22.so и zlib.so (переименован в zlib.so.1) в /tools/lib. Извините за глупую ошибку, я думал, что эти файлы уже там.