クロス 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

これは、GCC >= 4.6 に関する align.c 2.6.39 以前のバグのように見えます。おそらく、デフォルトでインストールされている GCC として GCC 4.6 を持つ最近の Fedora でビルドしているのでしょう。私の意見では、GCC < 4.6 を使用すると、このバグは発生しないはずです。

変数「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」は、CONFIG_VSX で ifdef されたコードでのみ参照されるため、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 にコピーすることで解決しました。愚かなエラーをお詫びします。ファイルは既にそこにあると思っていました。

関連情報