Tech Racho エンジニアの「?」を「!」に。
  • インフラ
  • 開発

rbenvのruby-buildでreeをインストールしようとしたところコンパイルエラー

今更ながら、RubyEnterpriseの環境を構築することがありました。

Ubuntu 10.04で、rbenv+ruby-buildをインストールして、ree-1.8.7をビルドしようとしたところ、以下のエラーが出ました。

baba@ubuntu:~$ rbenv install ree-1.8.7-2012.02
Downloading http://rubyenterpriseedition.googlecode.com/files/ruby-enterprise-1.8.7-2012.02.tar.gz...
Installing ruby-enterprise-1.8.7-2012.02...

BUILD FAILED

Inspect or clean up the working tree at /tmp/ruby-build.20120907124126.11684
Results logged to /tmp/ruby-build.20120907124126.11684.log

Last 10 log lines:
/bin/bash ./libtool --tag=CXX --mode=compile /usr/bin/g++ -DHAVE_CONFIG_H -I. -I. -I./src  -I./src  -I'/home/baba/.rbenv/versions/ree-1.8.7-2012.02/include'  -DNO_TCMALLOC_SAMPLES -pthread -DNDEBUG -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc -fno-builtin-calloc -fno-builtin-cfree -fno-builtin-memalign -fno-builtin-posix_memalign -fno-builtin-valloc -fno-builtin-pvalloc  -DNO_FRAME_POINTER -g -O2 -c -o libtcmalloc_minimal_la-tcmalloc.lo `test -f 'src/tcmalloc.cc' || echo './'`src/tcmalloc.cc
libtool: compile:  /usr/bin/g++ -DHAVE_CONFIG_H -I. -I. -I./src -I./src -I/home/baba/.rbenv/versions/ree-1.8.7-2012.02/include -DNO_TCMALLOC_SAMPLES -pthread -DNDEBUG -Wall -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -fno-builtin-malloc -fno-builtin-free -fno-builtin-realloc -fno-builtin-calloc -fno-builtin-cfree -fno-builtin-memalign -fno-builtin-posix_memalign -fno-builtin-valloc -fno-builtin-pvalloc -DNO_FRAME_POINTER -g -O2 -c src/tcmalloc.cc  -fPIC -DPIC -o .libs/libtcmalloc_minimal_la-tcmalloc.o
src/tcmalloc.cc:1672:54: エラー: conflicting declaration ‘void* (* __memalign_hook)(size_t, size_t, const void*)’
/usr/include/malloc.h:183:39: エラー: ‘__memalign_hook’ has a previous declaration as ‘void* (* volatile __memalign_hook)(size_t, size_t, const void*)’
src/tcmalloc.cc: 関数 ‘void PrintStats(int)’ 内:
src/tcmalloc.cc:523:47: 警告: warn_unused_result 属性付きで宣言されている ‘ssize_t write(int, const void*, size_t)’ の戻り値を無視しています [-Wunused-result]
src/tcmalloc.cc: 関数 ‘void {anonymous}::ReportLargeAlloc(Length, void*)’ 内:
src/tcmalloc.cc:1010:47: 警告: warn_unused_result 属性付きで宣言されている ‘ssize_t write(int, const void*, size_t)’ の戻り値を無視しています [-Wunused-result]
make: *** [libtcmalloc_minimal_la-tcmalloc.lo] エラー 1

以下のビルドオプションで回避できました。

CONFIGURE_OPTS="--no-tcmalloc" rbenv install ree-1.8.7-2012.02

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。