最近嘗試自己build uboot,

根據uboot 的README裡面所說

碰到幾個該注意的地方, 在這邊memo一下

1. CROSS_COMPILE的定義

在build uboot前, 若沒有特別定義CROSS_COMPILE,

那麼make的過程就會用預設的gcc compiler去作,

預設的gcc compiler也根據一開始所決定的開發board會跟著不一樣

若是arm系列的處理器就會是arm-linux-gcc

不過由於我的開發環境用的是arm-elf-gcc

所以要定義CROSS_COMPILE=arm-elf-

 

2.

編譯的途中遇到的幾個錯誤

../include/libfdt.h:126: error: syntax error before "void"

這個錯誤是因為gcc compiler認不得inline關鍵字(?)

查了一下網路上面的解法, 似乎只是把inline給忽略掉

不知道是不是compiler版本的問題

--- Patch Below ---

diff --git a/include/compiler.h b/include/compiler.h
index 332618e..cd1e416 100644
--- a/include/compiler.h
+++ b/include/compiler.h
@@ -8,6 +8,12 @@
#include <stddef.h>

#ifdef USE_HOSTCC
+#if defined(__CYGWIN__)
+#include <endian.h>
+#define inline
+typedef unsigned long ulong;
+#endif
+

#if defined(__BEOS__) || \
defined(__NetBSD__) || \


cmd_bootm.c:988:1: directives may not be used inside a macro argument

這個錯誤是因為我抓的uboot版本用了新的macro寫法

就是在macro 的parameter裡用#if這類的directive來傳參數

在舊版的gcc似乎不支援這樣的寫法, 網路上也有找到相關patch gcc的code

不過要更新libgcc

 

弄到這邊, 讓我突然想要自己再弄一個build的環境, 有最新的cross-compiler去避免這些問題

花點時間在cygwin上把gcc build起來好了

 

arrow
arrow
    全站熱搜

    kaogold3 發表在 痞客邦 留言(1) 人氣()