- 追加された行はこのように表示されます。
- 削除された行は
このように表示されます。
!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] フォーラムのコンパイルオプションについてのスレッド