2012/04/10

Jubatus を build できなかった際のエラーログ

REPORTED -> jubatus Issue #33

Mac OS X 10.7.3
Check System Requirements...

$ brew --version
0.9

$ python -V
Python 2.7.1

$ brew list
fcgi gdbm gfortran glog gtest libevent libmpc mercurial msgpack nmap pkg-config readline zookeeper
gcc gflags git gmp jpeg libiconv libtiff mpfr nkf pcre r tmux zsh

$ which gcc
/usr/bin/gcc -> /usr/llvm-gcc-4.2/bin/llvm-gcc-4.2

$ which g++
usr/bin/g++ -> /usr/llvm-gcc-4.2/bin/llvm-g++-4.2

$ ls -l /usr/bin/llvm-cpp-4.2 /usr/bin/llvm-g++ /usr/bin/llvm-g++-4.2 /usr/bin/llvm-gcc /usr/bin/llvm-gcc-4.2 
/usr/bin/llvm-cpp-4.2 -> ../llvm-gcc-4.2/bin/llvm-cpp-4.2
/usr/bin/llvm-g++ -> ../llvm-gcc-4.2/bin/llvm-g++-4.2
/usr/bin/llvm-g++-4.2 -> ../llvm-gcc-4.2/bin/llvm-g++-4.2
/usr/bin/llvm-gcc -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2
/usr/bin/llvm-gcc-4.2 -> ../llvm-gcc-4.2/bin/llvm-gcc-4.2

$ pkg-config pficommon --cflags --libs
-I/usr/local/include -L/usr/local/lib

Next Steps, configure & build (this approach failed).

$ ./waf configure --disable-re2
Checking for 'g++' (c++ compiler) : ok 
Unpacking gtest : yes 
Checking for library pthread : yes 
Checking for library msgpack : yes 
Checking for library glog : yes 
Checking for library event : yes 
Checking for header event.h : yes 
Checking for program pkg-config : /usr/local/bin/pkg-config 
Checking for 'pficommon' : yes 
Checking for header pficommon/network/mprpc.h : yes 
Checking for header unistd.h : yes 
Checking for header sys/types.h : yes 
Checking for header sys/wait.h : yes 
Checking for header sys/stat.h : yes 
Checking for header cxxabi.h : yes 
Checking for header sys/socket.h net/if.h : yes 
Checking for header sys/ioctl.h : yes 
Checking for header fcntl.h : yes 
Checking for header netinet/in.h : yes 
Checking for header arpa/inet.h : yes 
Checking for header dlfcn.h : yes 
Checking for library dl : yes 
Checking for header sys/socket.h net/if.h sys/ioctl.h : yes 
Checking for header netinet/in.h arpa/inet.h : yes 
'configure' finished successfully (5.741s)

$ ./waf build
.
.

[71/88] cxxshlib: build/src/classifier/classifier_base.cpp.1.o build/src/classifier/perceptron.cpp.1.o build/src/classifier/pa.cpp.1.o build/src/classifier/pa1.cpp.1.o build/src/classifier/pa2.cpp.1.o build/src/classifier/cw.cpp.1.o build/src/classifier/arow.cpp.1.o build/src/classifier/nherd.cpp.1.o build/src/classifier/classifier_factory.cpp.1.o -> build/src/classifier/libjubatus_classifier.dylib
[72/88] cxxshlib: build/src/common/mprpc/rpc_client.cpp.1.o build/src/common/mprpc/async_client.cpp.1.o -> build/src/common/mprpc/libjubacommon_mprpc.dylib
Undefined symbols for architecture x86_64:
"pfi::network::ipv4_address::~ipv4_address()", referenced from:
std::vector >::~vector()in async_client.cpp.1.o
"pfi::network::mprpc::socket::resolve(std::basic_string, std::allocator > const&, unsigned short)", referenced from:
jubatus::common::mprpc::async_sock::connect_async(std::basic_string, std::allocator > const&, unsigned short)in async_client.cpp.1.o
"pfi::network::ipv4_address::to_string() const", referenced from:
jubatus::common::mprpc::async_sock::connect_async(std::basic_string, std::allocator > const&, unsigned short)in async_client.cpp.1.o
"_msgpack_unpacker_expand_buffer", referenced from:
jubatus::common::mprpc::async_sock::recv_async() in async_client.cpp.1.o
jubatus::common::mprpc::async_sock::async_sock()in async_client.cpp.1.o
"_msgpack_unpacker_destroy", referenced from:
jubatus::common::mprpc::async_sock::~async_sock()in async_client.cpp.1.o
jubatus::common::mprpc::async_sock::~async_sock()in async_client.cpp.1.o
jubatus::common::mprpc::async_sock::async_sock()in async_client.cpp.1.o
"pfi::network::mprpc::socket::~socket()", referenced from:
jubatus::common::mprpc::async_sock::~async_sock()in async_client.cpp.1.o
jubatus::common::mprpc::async_sock::~async_sock()in async_client.cpp.1.o
jubatus::common::mprpc::async_sock::async_sock()in async_client.cpp.1.o
"pfi::network::mprpc::socket::socket(int)", referenced from:
jubatus::common::mprpc::async_sock::async_sock()in async_client.cpp.1.o
"_msgpack_unpacker_init", referenced from:
jubatus::common::mprpc::async_sock::async_sock()in async_client.cpp.1.o
"pfi::system::time::get_clock_time()", referenced from:
jubatus::common::mprpc::rpc_mclient::rpc_mclient(std::vector, std::allocator >, unsigned short>, std::allocator, std::allocator >, unsigned short> > > const&, int)in rpc_client.cpp.1.o
jubatus::common::mprpc::rpc_mclient::rpc_mclient(std::vector, std::allocator >, int>, std::allocator, std::allocator >, int> > > const&, int)in rpc_client.cpp.1.o
"_msgpack_unpacker_execute", referenced from:
msgpack::unpacker::next(msgpack::unpacked)in rpc_client.cpp.1.o
"_msgpack_zone_destroy", referenced from:
msgpack::unpacker::next(msgpack::unpacked)in rpc_client.cpp.1.o
bool jubatus::common::mprpc::async_sock::salvage >(msgpack::type::tuple&)in rpc_client.cpp.1.o
"_msgpack_unpacker_release_zone", referenced from:
msgpack::unpacker::next(msgpack::unpacked)in rpc_client.cpp.1.o
"_msgpack_unpacker_data", referenced from:
msgpack::unpacker::next(msgpack::unpacked)in rpc_client.cpp.1.o
"_msgpack_unpacker_reset", referenced from:
msgpack::unpacker::next(msgpack::unpacked*)in rpc_client.cpp.1.o
jubatus::common::mprpc::async_sock::recv_async() in async_client.cpp.1.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Waf: Leaving directory `/Users/[MYNAME]/Documents/src/jubatus/build'
Build failed
-> task failed (exit status 1): 
{task 4478118736: cxxshlib rpc_client.cpp.1.o,async_client.cpp.1.o -> libjubacommon_mprpc.dylib}
['/usr/bin/g++', 'src/common/mprpc/rpc_client.cpp.1.o', 'src/common/mprpc/async_client.cpp.1.o', '-o', '/Users/[MYNAME]/Documents/src/jubatus/build/src/common/mprpc/libjubacommon_mprpc.dylib', '-L/usr/local/lib', '-lglog', '-levent', '-flat_namespace', '-dynamiclib']

で、コメントを頂いたわけですが、ちょっと待って頂きたい。
(というか最後まで英語で書かなくてごめんなさい)
githubをそもそも使ってなかった身としてはササっとdevelopからbranchして
pull requestするなど相当に難易度が高い(今回Issues報告に当たって初めてアカウント作った)。
github活用してないなんてあり得ない! というのはまぁごもっともな意見ですが…。

下記の行にMSGPACKを追記しなければならないようだが…。
$use = 'PFICOMMON LIBGLOG ZOOKEEPER_MT LIBEVENT'

つまりはこういうことでよろしいんですよね?
$use = 'PFICOMMON MSGPACK LIBGLOG ZOOKEEPER_MT LIBEVENT'

とすると以下のログが吐かれて失敗した。 But, Failed build too.
.
.
[70/88] test_input: src/server/test_input/config.json src/server/test_input/config_svmlight.json src/server/test_input/keywords -> build/src/server/test_input
[71/88] cxxshlib: build/src/common/mprpc/rpc_client.cpp.1.o build/src/common/mprpc/async_client.cpp.1.o -> build/src/common/mprpc/libjubacommon_mprpc.dylib
Undefined symbols for architecture x86_64:
  "pfi::system::time::get_clock_time()", referenced from:
      jubatus::common::mprpc::rpc_mclient::rpc_mclient(std::vector, std::allocator >, unsigned short>, std::allocator, std::allocator >, unsigned short> > > const&, int)in rpc_client.cpp.1.o
      jubatus::common::mprpc::rpc_mclient::rpc_mclient(std::vector, std::allocator >, int>, std::allocator, std::allocator >, int> > > const&, int)in rpc_client.cpp.1.o
  "pfi::network::ipv4_address::~ipv4_address()", referenced from:
      std::vector >::~vector()in async_client.cpp.1.o
  "pfi::network::mprpc::socket::resolve(std::basic_string, std::allocator > const&, unsigned short)", referenced from:
      jubatus::common::mprpc::async_sock::connect_async(std::basic_string, std::allocator > const&, unsigned short)in async_client.cpp.1.o
  "pfi::network::ipv4_address::to_string() const", referenced from:
      jubatus::common::mprpc::async_sock::connect_async(std::basic_string, std::allocator > const&, unsigned short)in async_client.cpp.1.o
  "pfi::network::mprpc::socket::~socket()", referenced from:
      jubatus::common::mprpc::async_sock::~async_sock()in async_client.cpp.1.o
      jubatus::common::mprpc::async_sock::~async_sock()in async_client.cpp.1.o
      jubatus::common::mprpc::async_sock::async_sock()in async_client.cpp.1.o
  "pfi::network::mprpc::socket::socket(int)", referenced from:
      jubatus::common::mprpc::async_sock::async_sock()in async_client.cpp.1.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
Waf: Leaving directory `/Users/walker/Documents/src/jubatus/build'
Build failed
 -> task failed (exit status 1): 
	{task 4365802320: cxxshlib rpc_client.cpp.1.o,async_client.cpp.1.o -> libjubacommon_mprpc.dylib}
['/usr/bin/g++', 'src/common/mprpc/rpc_client.cpp.1.o', 'src/common/mprpc/async_client.cpp.1.o', '-o', '/Users/walker/Documents/src/jubatus/build/src/common/mprpc/libjubacommon_mprpc.dylib', '-L/usr/local/lib', '-lmsgpack', '-lglog', '-levent', '-flat_namespace', '-dynamiclib']

現状だとこちらの環境が悪いのか、このアプローチが良くないのか判断がつかないので
もうちょっと試してからコメントに返信をしたいと思います(あとgithubの使い方覚えます)。

それでは、電波送信終了ー。

0 件のコメント:

コメントを投稿