トップ «前の日記(2011-03-07) 最新 次の日記(2011-03-20)» 編集

今日のなんでやねん


2011-03-17 [長年日記]

[Ruby] rvm package install zlibがコケる

そろそろ本格的にrvm使ってみるかということでrvmを色々イジっている. で,rvmでiconvやらreadlineやらをインストールしたんだが,zlibのインストールでコケてしまう.

% rvm --version
rvm 1.2.9 by Wayne E. Seguin (wayneeseguin@gmail.com) [http://rvm.beginrescueend.com/]
% rvm package install zlib
Fetching zlib-1.2.5.tar.gz to /Users/kita/Developer/.rvm/archives
Extracting zlib-1.2.5.tar.gz to /Users/kita/Developer/.rvm/src
Configuring zlib in /Users/kita/Developer/.rvm/src/zlib-1.2.5.
Compiling zlib in /Users/kita/Developer/.rvm/src/zlib-1.2.5.
Installing zlib to /Users/kita/Developer/.rvm/usr
ERROR: Error running '/usr/bin/make install', please read /Users/kita/Developer/.rvm/log/zlib/make.install.log

make.install.logを読めというので読んでみると

[2011-03-17 20:34:55] /usr/bin/make install
cp libz.a /Users/kita/Developer/.rvm/usr/lib
cp  /Users/kita/Developer/.rvm/usr/lib
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvX] source_file ... target_directory
make: *** [install-libs] Error 64

2つ目のcpの引数が1つしかない. これは多分変数に何も設定されてないんだろう. src/zlib-1.2.5/Makefileを見てみると

cp $(SHAREDLIBV) $(DESTDIR)$(sharedlibdir)

これが該当行.案の定上の方で

SHAREDLIBV=

となっていた. なんでだろうなぁと思ってlog/zlib/configure.logを見てみる.

[2011-03-17 20:34:46]  MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS='-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp' CCFLAGS='-arch i386 -arch x86_64 -g -Os -pipe' CXXFLAGS='-arch i386 -arch x86_64 -g -Os -pipe' LDFLAGS='-arch i386 -arch x86_64 -bind_at_load' LDSHARED='-arch i386 -arch x86_64 cc -dynamiclib -undefined suppress -flat_namespace' ./configure --prefix="/Users/kita/Developer/.rvm/usr"
Checking for gcc...
Checking for shared library support...
Tested gcc -w -c -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp -fPIC ztest63780.c
Tested -arch i386 -arch x86_64 cc -dynamiclib -undefined suppress -flat_namespace -arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp -fPIC -o ztest63780.dylib ztest63780.o
./configure: line 245: -arch: command not found
No shared library support; try without defining CC and CFLAGS
Building static library libz.a version 1.2.5 with gcc.
Checking for off64_t... No.
Checking for fseeko... Yes.
Checking for unistd.h... Yes.
Checking whether to use vs[n]printf() or s[n]printf()... using vs[n]printf().
Checking for vsnprintf() in stdio.h... Yes.
Checking for return value of vsnprintf()... Yes.
Checking for attribute(visibility) support... Yes.

No shared library support? なんだそれは. configureの254行目あたりを見てみると

echo Tested $LDSHARED $SFLAGS -o $test$shared_ext $test.o
$LDSHARED $SFLAGS -o $test$shared_ext $test.o
echo 'No shared library support; try without defining CC and CFLAGS'

こんな感じ. どうもLDSHAREDがちゃんと設定されてないっぽい. configure.logの先頭をもう一度ちゃんと見ると

[2011-03-17 20:34:46]  MACOSX_DEPLOYMENT_TARGET=10.6 CFLAGS='-arch i386 -arch x86_64 -g -Os -pipe -no-cpp-precomp' CCFLAGS='-arch i386 -arch x86_64 -g -Os -pipe' CXXFLAGS='-arch i386 -arch x86_64 -g -Os -pipe' LDFLAGS='-arch i386 -arch x86_64 -bind_at_load' LDSHARED='-arch i386 -arch x86_64 cc -dynamiclib -undefined suppress -flat_namespace' ./configure --prefix="/Users/kita/Developer/.rvm/usr"

ん?

 LDSHARED='-arch i386 -arch x86_64 cc -dynamiclib -undefined suppress -flat_namespace'

なんかccの場所がおかしいね. これは誰が設定してるんだろうか,ということでgrep作戦.

% grep -r -- -dynamiclib scripts
scripts/functions/build:    rvm_configure_env="${rvm_configure_env} LDSHARED='$architectures cc -dynamiclib -undefined suppress -flat_namespace'"

いました.試しに

% diff -u scripts/functions/build{.orig,}

--- scripts/functions/build.orig	2011-03-17 19:34:12.000000000 +0900
+++ scripts/functions/build	2011-03-17 22:00:24.000000000 +0900
@@ -9,7 +9,7 @@
     rvm_configure_env="${rvm_configure_env} CCFLAGS='$architectures -g -Os -pipe'"
     rvm_configure_env="${rvm_configure_env} CXXFLAGS='$architectures -g -Os -pipe'"
     rvm_configure_env="${rvm_configure_env} LDFLAGS='$architectures -bind_at_load'"
-    rvm_configure_env="${rvm_configure_env} LDSHARED='$architectures cc -dynamiclib -undefined suppress -flat_namespace'"
+    rvm_configure_env="${rvm_configure_env} LDSHARED='cc $architectures -dynamiclib -undefined suppress -flat_namespace'"
   fi
   export rvm_configure_env
 }

こんなパッチを当ててみたら,すんなりzlibもインストールできた. これunameがDarwinな人達は誰も困ってないのかなぁ.

本日のツッコミ(全1件) [ツッコミを入れる]
tocky (2011-05-08 03:53)

まったく同じエラーでハマっていたので、すごく助かりました! <br>ありがとうございます。



このへんで勘弁しといたる.


旧「なんでやねん」はこちら.
| 2001/01 | 2001/02 | 2001/03 | 2001/04 | 2001/05 | 2001/06 | 2001/07 | 2001/08/25まで |

リンク上等!

Junichiro Kita