交叉 LFS - PPC - 编译时出错

交叉 LFS - PPC - 编译时出错

我正在尝试为 PPC 8270 处理器构建 CLFS。一切都很好,直到我使用该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 是 GCC 4.6。使用 GCC < 4.6 恕我直言,该错误不应该出现。

变量“指令”在第 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]

变量“指令”仅在 ifdef 的 CONFIG_VSX 代码中引用,因此,如果您没有设置 CONFIG_VSX,那么在使用 GCC >= 4.6 进行编译时您将看到此问题。设置 CONFIG_VSX 应该可以解决问题。如果这不是您想要的,请尝试在 menuconfig 中设置 CONFIG_PPC_DISABLE_WERROR 或使用这些帮助您关闭 -Werror 或修补代码的说明。

如果您确实修补了代码,请考虑将其提交到 kernel.org,因为我发现这个错误在 3.3 中仍然存在

答案2

解决了将 libbfd.2-22.so 和 zlib.so(重命名为 zlib.so.1)复制到 /tools/lib 的问题。抱歉这个愚蠢的错误,我以为文件已经在那里了。

相关内容