トップ 一覧 Farm 検索 ヘルプ RSS ログイン

Diary/2015-4-29の変更点

  • 追加された行はこのように表示されます。
  • 削除された行はこのように表示されます。
!gcc-5.1.0/RaspberryPi
[Cilkplus on RPi2B|https://www.raspberrypi.org/forums/viewtopic.php?f=33&t=102743]を参考に

::必要そうなものをインストール
 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とかしてもよいかも.

::関連情報
* [ARM Options - Using the GNU Compiler Collection (GCC)|https://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html] ARM用のコンパイルオプションq
* [Compiling for Raspberry Pi2|https://www.raspberrypi.org/forums/viewtopic.php?f=33&t=98354] フォーラムのコンパイルオプションについてのスレッド