交叉 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 行重新分配。我透過編譯驗證了這種行為

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'ed 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 的問題。抱歉這個愚蠢的錯誤,我以為文件已經在那裡了。

相關內容