Diary/2015-4-29
gcc-5.1.0/RaspberryPi
- 必要そうなものをインストール
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) ARM用のコンパイルオプションq
- Compiling for Raspberry Pi2 フォーラムのコンパイルオプションについてのスレッド