2011年6月1日 星期三

cross compile Parted


需要先有 libblkid 和 libuuid 這在 util-linux 裡就有。
Parted 很人性話的會告訴你缺啥?去哪找?


wget http://www.kernel.org/pub/linux/utils/util-linux/v2.21/util-linux-2.21.2.tar.bz2
wget http://ftp.gnu.org/gnu/parted/parted-2.4.tar.gz


將所有需要的 include 和 lib 都放到同一個目錄( install 裡 )下
--------------------------------------------------------------------------------------------------------------------------


util-linux
make distclean
./configure --host=arm-mv5sft-linux-gnueabi --prefix=`pwd`/../install --without-ncurses --disable-makeinstall-chown
make -j4 install

------------------------------------------------------------------------------------------------
--disable-makeinstall-chown 是為了解決下面問題
------------------------------------------------------------------------------------------------
make  install-exec-hook
make[4]: Entering directory `/joseph/LIN/parted/util-linux-2.21.2/term-utils'
chgrp tty /joseph/LIN/parted/util-linux-2.21.2/../install/bin/wall
chgrp: 正在更改 ‘/joseph/LIN/parted/util-linux-2.21.2/../install/bin/wall’ 的所屬群組: 此項作並不被允許
make[4]: *** [install-exec-hook] Error 1
make[4]: Leaving directory `/joseph/LIN/parted/util-linux-2.21.2/term-utils'
make[3]: *** [install-exec-am] Error 2
make[3]: Leaving directory `/joseph/LIN/parted/util-linux-2.21.2/term-utils'
make[2]: *** [install-am] Error 2
make[2]: Leaving directory `/joseph/LIN/parted/util-linux-2.21.2/term-utils'
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory `/joseph/LIN/parted/util-linux-2.21.2'
make: *** [install] Error 2


parted
make distclean
./configure --host=arm-mv5sft-linux-gnueabi --prefix=`pwd`/../install LDFLAGS=-L`pwd`/../install/lib CPPFLAGS=-I`pwd`/../install/include --disable-device-mapper --without-readline 
make -j4 install

------------------------------------------------------------------------------------------------
加上 LDFLAGS & CPPFLAGS 因為需要 util-linux 的 library
------------------------------------------------------------------------------------------------





下面方法也可以, 但會改變到  cross compile 的資料, 
因為多唸點書了, 所以改用上面方法應該比較好.
------------------------------------------------------------------------------------------------ --------------------------
所以!先 Build util-linux
1. crosee compilier util-linux ( util-linux-2.19.1 )
./configure --host=arm-linux --prefix=`pwd`/install --without-ncurses
make install
將所需的 include 和 lib 放到 toolchain 裡。
cp -rf install/include/ install/lib/ /opt/crosstool/arm-linux/gcc-3.4.4-glibc-2.3.5/arm-linux/arm-linux/


2. 
./configure --host=arm-linux --prefix=`pwd`/install --disable-device-mapper --without-readline
make install


會發生 __user 沒定義的錯誤,補上下面 define
#define __user __attribute__((noderef, address_space(1)))


3. 將 libparted.so.1.0.0,libblkid.so.1.1.0, libuuid.so.1.3.0 放到 target board 上。
libparted.so -> libparted.so.1.0.0
libparted.so.1 -> libparted.so.1.0.0
libblkid.so -> libblkid.so.1.1.0
libblkid.so.1 -> libblkid.so.1.1.0
libuuid.so -> libuuid.so.1.3.0
libuuid.so.1 -> libuuid.so.1.3.0



PS:
http://hi.baidu.com/novosbirsk/blog/item/aa4f24167fbb2d1f972b43b5.html
http://magnet2008.iteye.com/blog/588177

沒有留言:

張貼留言