發表文章

目前顯示的是 6月, 2011的文章

struct成員的記憶體位址alignmentt

一般來說, compiler編譯c程式時, 遇到struct時會對成員資料的位址進行alignment的動作, 以增加記憶體讀取的效率. 所以struct往往會佔有比所有資料成員大小和還要多的記憶體空間. 例如下列的struct data的記憶體大小為12. struct data {      char num;       int size;       void *ptr; }; 如果因為特殊需要, 需要節省記憶體, 則可以在程式碼中需要進行pack memory的struct前後, 採用#pragma pack來告訴compiler是否要進行pack memory的動作, 例如下列的struct packed_data的記憶體大小則為9, 不是12. #pragma pack(1) struct packed_data {       char num;       int size;       void *ptr; }; #pragma pack()

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-l...