Ejscriptを入れようとして失敗 (2)
この続き。
とりあえず build/bin/bld の RPATH = ... をコメントアウトして -rpath オプションを切ってみたら少しは進むようになった。でも mprLib.c で失敗。
# /usr/bin/make -C "./src/mpr" compile ... /usr/bin/cc -c -DPIC -Wall -g3 -fPIC -arch i386 -I. -I../.. -I../../src/include mprLib.c -o ../../obj/mprLib.o mprLib.c: In function ‘sysinit’: mprLib.c:1951: error: ‘_SC_NPROCESSORS_ONLN’ undeclared (first use in this function) mprLib.c:1951: error: (Each undeclared identifier is reported only once mprLib.c:1951: error: for each function it appears in.) mprLib.c: In function ‘mprSendFileToSocket’: mprLib.c:16173: error: storage size of ‘def’ isn’t known mprLib.c:16188: warning: implicit declaration of function ‘sendfile’ mprLib.c:16173: warning: unused variable ‘def’ make[3]: *** [../../obj/mprLib.o] Error 1
‘_SC_NPROCESSORS_ONLN’ は設定情報を取得する sysconf で利用可能なプロセッサ数を得るためのもの。多分1にしておいても問題なさそうなのでコメントアウト。
#if MACOSX alloc.numCpu = 1; /*sysconf(_SC_NPROCESSORS_ONLN);*/ alloc.pageSize = sysconf(_SC_PAGESIZE);
続いて ‘def’ のところ。定義を見ると
#if MACOSX struct sf_hdtr def;
となっている。これはファイルをソケットに送信するシステムコール sendfile に渡すための構造体らしい。直書きしたら通ったけど……
/src/include mprLib.c -o ../../obj/mprLib.o mprLib.c: In function ‘mprSendFileToSocket’: mprLib.c:16195: warning: implicit declaration of function ‘sendfile’ ... # bld "--library" "../../lib/libmpr" "mprLib" "/usr/bin/cc" "-o" "../../lib/libmpr.dylib" "-install_name" "@rpath/libmpr.dylib" "-dynamiclib" "../../obj/mprLib.o" "-g3" "-arch" "i386" "-L/Users/sh/tmp/ejs-0.9.8/lib" "-ldl" "-lm" ld: common symbols not allowed with MH_DYLIB output format with the -multi_module option ../../obj/mprLib.o definition of common __globalMpr (size 16) /usr/bin/libtool: internal link edit command failed bld: link failed make[3]: *** [../../lib/libmpr.dylib] Error 255
参考