-
Notifications
You must be signed in to change notification settings - Fork 2
How to build h2o with mruby mrmagick
Junichi Kajiwara edited this page Sep 16, 2015
·
1 revision
git clone https://github.com/h2o/h2o
cd h2o/deps
Then, you get mruby-mrmagick.
git clone https://github.com/kjunichi/mruby-mrmagick.git
Once we challenge build h2o.
cd ..
mkdir build
cd build
cmake ..
But You get following errors.
Undefined symbols for architecture x86_64:
"Magick::InitializeMagick(char const*)", referenced from:
myInitializeMagick() in libmruby.a(util.o)
"Magick::Blob::Blob()", referenced from:
_mrb_mrmagick_to_blob in libmruby.a(util.o)
"Magick::Blob::~Blob()", referenced from:
_mrb_mrmagick_to_blob in libmruby.a(util.o)
"Magick::Image::blur(double, double)", referenced from:
_blur in libmruby.a(util.o)
writeAndBlob(Magick::Image*, mrb_state*, mrb_value) in libmruby.a(util.o)
"Magick::Image::read(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
_scale in libmruby.a(util.o)
_blur in libmruby.a(util.o)
_mrb_mrmagick_get_exif_by_entry in libmruby.a(util.o)
writeAndBlob(Magick::Image*, mrb_state*, mrb_value) in libmruby.a(util.o)
"Magick::Image::scale(Magick::Geometry const&)", referenced from:
_scale in libmruby.a(util.o)
writeAndBlob(Magick::Image*, mrb_state*, mrb_value) in libmruby.a(util.o)
"Magick::Image::write(Magick::Blob*)", referenced from:
_mrb_mrmagick_to_blob in libmruby.a(util.o)
"Magick::Image::write(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
_scale in libmruby.a(util.o)
_blur in libmruby.a(util.o)
_mrb_mrmagick_write in libmruby.a(util.o)
"Magick::Image::Image()", referenced from:
_scale in libmruby.a(util.o)
_blur in libmruby.a(util.o)
_mrb_mrmagick_get_exif_by_entry in libmruby.a(util.o)
_mrb_mrmagick_write in libmruby.a(util.o)
_mrb_mrmagick_to_blob in libmruby.a(util.o)
"Magick::Image::~Image()", referenced from:
_scale in libmruby.a(util.o)
_blur in libmruby.a(util.o)
_mrb_mrmagick_get_exif_by_entry in libmruby.a(util.o)
_mrb_mrmagick_write in libmruby.a(util.o)
_mrb_mrmagick_to_blob in libmruby.a(util.o)
"Magick::Geometry::Geometry(char const*)", referenced from:
_scale in libmruby.a(util.o)
writeAndBlob(Magick::Image*, mrb_state*, mrb_value) in libmruby.a(util.o)
"Magick::Geometry::~Geometry()", referenced from:
_scale in libmruby.a(util.o)
writeAndBlob(Magick::Image*, mrb_state*, mrb_value) in libmruby.a(util.o)
"Magick::Blob::data() const", referenced from:
_mrb_mrmagick_to_blob in libmruby.a(util.o)
"Magick::Blob::length() const", referenced from:
_mrb_mrmagick_to_blob in libmruby.a(util.o)
"Magick::Image::attribute(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >) const", referenced from:
_mrb_mrmagick_get_exif_by_entry in libmruby.a(util.o)
"std::__1::locale::use_facet(std::__1::locale::id&) const", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in libmruby.a(util.o)
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libmruby.a(util.o)
"std::__1::ios_base::getloc() const", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in libmruby.a(util.o)
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libmruby.a(util.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(char const*, unsigned long)", referenced from:
_scale in libmruby.a(util.o)
_blur in libmruby.a(util.o)
_mrb_mrmagick_get_exif_by_entry in libmruby.a(util.o)
_mrb_mrmagick_write in libmruby.a(util.o)
writeAndBlob(Magick::Image*, mrb_state*, mrb_value) in libmruby.a(util.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::__init(unsigned long, char)", referenced from:
std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in libmruby.a(util.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::append(char const*)", referenced from:
_mrb_mrmagick_get_exif_by_entry in libmruby.a(util.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::basic_string(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
_mrb_mrmagick_get_exif_by_entry in libmruby.a(util.o)
"std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >::~basic_string()", referenced from:
_scale in libmruby.a(util.o)
_blur in libmruby.a(util.o)
_mrb_mrmagick_get_exif_by_entry in libmruby.a(util.o)
_mrb_mrmagick_write in libmruby.a(util.o)
writeAndBlob(Magick::Image*, mrb_state*, mrb_value) in libmruby.a(util.o)
std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> > std::__1::__pad_and_output<char, std::__1::char_traits<char> >(std::__1::ostreambuf_iterator<char, std::__1::char_traits<char> >, char const*, char const*, char const*, std::__1::ios_base&, char) in libmruby.a(util.o)
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::put(char)", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in libmruby.a(util.o)
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::flush()", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in libmruby.a(util.o)
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::sentry(std::__1::basic_ostream<char, std::__1::char_traits<char> >&)", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libmruby.a(util.o)
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::sentry::~sentry()", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libmruby.a(util.o)
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(double)", referenced from:
_blur in libmruby.a(util.o)
"std::__1::basic_ostream<char, std::__1::char_traits<char> >::operator<<(int)", referenced from:
writeAndBlob(Magick::Image*, mrb_state*, mrb_value) in libmruby.a(util.o)
"std::__1::cout", referenced from:
_myputs in libmruby.a(util.o)
_blur in libmruby.a(util.o)
writeAndBlob(Magick::Image*, mrb_state*, mrb_value) in libmruby.a(util.o)
"std::__1::ctype<char>::id", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in libmruby.a(util.o)
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libmruby.a(util.o)
"std::__1::locale::~locale()", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::endl<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&) in libmruby.a(util.o)
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libmruby.a(util.o)
"std::__1::ios_base::__set_badbit_and_consider_rethrow()", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libmruby.a(util.o)
"std::__1::ios_base::clear(unsigned int)", referenced from:
std::__1::basic_ostream<char, std::__1::char_traits<char> >& std::__1::__put_character_sequence<char, std::__1::char_traits<char> >(std::__1::basic_ostream<char, std::__1::char_traits<char> >&, char const*, unsigned long) in libmruby.a(util.o)
"std::terminate()", referenced from:
___clang_call_terminate in libmruby.a(util.o)
"typeinfo for int", referenced from:
_mrb_funcall_with_block in libmruby.a(vm.cxx.o)
_mrb_context_run in libmruby.a(vm.cxx.o)
GCC_except_table2 in libmruby.a(vm.cxx.o)
GCC_except_table22 in libmruby.a(vm.cxx.o)
_mrb_generate_code in libmruby.a(codegen.cxx.o)
codegen_error(scope*, char const*) in libmruby.a(codegen.cxx.o)
GCC_except_table0 in libmruby.a(codegen.cxx.o)
...
"___cxa_allocate_exception", referenced from:
_mrb_funcall_with_block in libmruby.a(vm.cxx.o)
_mrb_context_run in libmruby.a(vm.cxx.o)
_mrb_generate_code in libmruby.a(codegen.cxx.o)
codegen_error(scope*, char const*) in libmruby.a(codegen.cxx.o)
_mrb_parser_parse in libmruby.a(y.tab.o)
parser_palloc(mrb_parser_state*, unsigned long) in libmruby.a(y.tab.o)
_mrb_exc_raise in libmruby.a(error.cxx.o)
...
"___cxa_begin_catch", referenced from:
_mrb_funcall_with_block in libmruby.a(vm.cxx.o)
_mrb_context_run in libmruby.a(vm.cxx.o)
_mrb_generate_code in libmruby.a(codegen.cxx.o)
_mrb_parser_parse in libmruby.a(y.tab.o)
_mrb_protect in libmruby.a(exception.cxx.o)
_mrb_ensure in libmruby.a(exception.cxx.o)
_mrb_rescue_exceptions in libmruby.a(exception.cxx.o)
...
"___cxa_end_catch", referenced from:
_mrb_funcall_with_block in libmruby.a(vm.cxx.o)
_mrb_context_run in libmruby.a(vm.cxx.o)
_mrb_generate_code in libmruby.a(codegen.cxx.o)
_mrb_parser_parse in libmruby.a(y.tab.o)
_mrb_protect in libmruby.a(exception.cxx.o)
_mrb_ensure in libmruby.a(exception.cxx.o)
_mrb_rescue_exceptions in libmruby.a(exception.cxx.o)
...
"___cxa_guard_abort", referenced from:
scope_new(mrb_state*, scope*, mrb_ast_node*) in libmruby.a(codegen.cxx.o)
"___cxa_guard_acquire", referenced from:
scope_new(mrb_state*, scope*, mrb_ast_node*) in libmruby.a(codegen.cxx.o)
"___cxa_guard_release", referenced from:
scope_new(mrb_state*, scope*, mrb_ast_node*) in libmruby.a(codegen.cxx.o)
"___cxa_throw", referenced from:
_mrb_funcall_with_block in libmruby.a(vm.cxx.o)
_mrb_context_run in libmruby.a(vm.cxx.o)
_mrb_generate_code in libmruby.a(codegen.cxx.o)
codegen_error(scope*, char const*) in libmruby.a(codegen.cxx.o)
_mrb_parser_parse in libmruby.a(y.tab.o)
parser_palloc(mrb_parser_state*, unsigned long) in libmruby.a(y.tab.o)
_mrb_exc_raise in libmruby.a(error.cxx.o)
...
"___gxx_personality_v0", referenced from:
_mrb_funcall_with_block in libmruby.a(vm.cxx.o)
_mrb_context_run in libmruby.a(vm.cxx.o)
Dwarf Exception Unwind Info (__eh_frame) in libmruby.a(vm.cxx.o)
_mrb_generate_code in libmruby.a(codegen.cxx.o)
scope_new(mrb_state*, scope*, mrb_ast_node*) in libmruby.a(codegen.cxx.o)
Dwarf Exception Unwind Info (__eh_frame) in libmruby.a(codegen.cxx.o)
_mrb_parser_parse in libmruby.a(y.tab.o)
...
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[2]: *** [h2o] Error 1
make[1]: *** [CMakeFiles/h2o.dir/all] Error 2
make: *** [all] Error 2
Edit CMakeFiles/h2o.dir/link.txt
this part
-lm /usr/lib/libz.dylib
to
-lm -lc++ -L/usr/local/Cellar/imagemagick/6.9.1-10/lib -lMagick++-6.Q16 -lMagickWand-6.Q16 -lMagickCore-6.Q16 /usr/lib/libz.dylib
you add libc++,and you should write libraries what "Magick++-config --ldflags --libs" says.