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 にコピーすることで解決しました。愚かなエラーをお詫びします。ファイルは既にそこにあると思っていました。