トップ 差分 一覧 Farm ソース 検索 ヘルプ PDF RSS ログイン

Diary/2015-4-29

gcc-5.1.0/RaspberryPi

Cilkplus on RPi2Bを参考に

必要そうなものをインストール
sudo apt-get install \
libgmp-dev libmpfi-dev libmpc-dev \
autogen autoconf subversion libisl-dev make gcc flex bison g++ \
gcc-4.8 g++-4.8

スワップを用意
sudo dd if=/dev/zero of=/swapfile bs=1M count=2048
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile

autoconf関連
  • configure.acのAC_PREFREQの値を2.64から2.69に
  • config/override.m4の_GCC_AUTOCONF_VERSIONの値を2.64から2.69に

Cilk関連(RPi2の場合)
  • libcilkrts/configure.tgtのUNSUPPORTED=1をコメントアウト(0にする,では駄目)
  • libcilkrts/runtime/config/generic/cilk-abi-vla.c の vla_internal_heap_freeの第一引数を t から p に
  • libcilkrts/runtime/config/generic/os-fence.hの↓をコメントアウト
COMMON_SYSDEP void __cilkrts_fence(void); ///< MFENCE instruction
  • libcilkrts/runtime/config/generic/os-fence.hに↓を追加
#define __cilkrts_fence() __asm__ volatile ("DSB")

ARMv7にあるDSB命令(Data Synchronization Barrier)を使うということらしい.

configure

RPi2の場合

CC=gcc-4.8 ../configure \
--enable-languages=c,c++ \
--prefix=/usr/local/gcc-5.1.0 \
--target=arm-linux-gnueabihf \
--with-arch=armv7-a --with-fpu=vfp --with-float=hard \
--build=arm-linux-gnueabihf --host=arm-linux-gnueabihf

RPiの場合

CC=gcc-4.8 ../configure \
--enable-languages=c,c++ \
--prefix=/usr/local/gcc-5.1.0 \
--target=arm-linux-gnueabihf \
--with-fpu=vfp --with-float=hard \
--build=arm-linux-gnueabihf --host=arm-linux-gnueabihf
make

RPi2は4コアなのでmake -j4とかしてもよいかも.

関連情報