code style

2017年6月22日 星期四

U-Boot make error=>dirname: missing operand

在compile Marvell的U-Boot時,出現dirname: missing operand。
一開始以為是makefile傳入的參數錯誤,但不是。
後來上網查,說是有兩個原因。

1:
在64bit OS下運行32 bit的compile,建議裝"ia32-libs",又有人說"ia32-libs"太舊,
要改裝"libc6:i386"。我確實是在64bit 的Ubuntu 16下運行,但都裝了也是不行。

2:
toolchain的位置錯誤。這個讓我try了好久,一般之前我都是設定toolchain位置的bin資料夾即可,但是U-Boot上要加上compiler的prefix才行。

原本
export CROSS_COMPILE=/<your toolchain path>/armv7-marvell-linux-gnueabi/bin
改成
export CROSS_COMPILE=/<your toolchain path>/armv7-marvell-linux-gnueabi/bin/arm-marvell-linux-gnueabi-

這樣make時會合併prefix字串變成arm-marvell-linux-gnueabi-gcc、arm-marvell-linux-gnueabi-ld等等。實際上的prefix要看你的bin底下的compile tool name為準。

沒有留言:

張貼留言