Hi, all.
I'm trying to build r-node on a mac, and I'd appreciate any assistance anyone can offer. I've run into the problem that R.app stores its libraries in different locations. I already edited the server/Makefile per some of Jamie's suggestions, so now when I try to make, it can, for example, find node. But I'm running into a problem that seems to be with setting the path to the core library with LDFLAGS. libR.dylib is located at:
I've put the full output of make below. Any help would be greatly appreciated, even if it's to let me know it can't be compiled on OS X.
rm -rf deploy
mkdir deploy
make -C shared
rm -f r-node-shared.js
rm -f ../deploy/htdocs/js/r-node-shared.js
grep ' ' -Hn ../3rdparty/to-function.js ../3rdparty/functional.js js/00-tokens.js js/01-r-node-core.js js/02-observable.js js/03-r-api.js js/R/01-r-object.js js/R/02-r-parser-internal.js js/R/03-r-parser.js js/R/04-r-workspace.js js/R/graphs/01-graph.js js/R/graphs/02-hist.js js/R/graphs/02-lines.js js/R/graphs/02-plot.js js/R/graphs/10-r-webvis-graph.js js/R/graphs/10-server-graph.js js/R/display/01-display.js js/R/display/02-array.js js/R/display/02-list.js js/R/display/02-pager.js js/R/display/02-table.js js/R/display/02-try-error.js js/R/commands/01-command-handler.js js/R/commands/02-assignment.js js/R/commands/02-help.js js/R/commands/02-histogram.js js/R/commands/02-lines.js js/R/commands/02-plot.js js/R/commands/02-print.js js/R/commands/02-summary-general.js js/R/commands/02-unsupported-commands.js && echo "ERROR: tab" && exit 1 || true
' -Hn ../3rdparty/to-function.js ../3rdparty/functional.js js/00-tokens.js js/01-r-node-core.js js/02-observable.js js/03-r-api.js js/R/01-r-object.js js/R/02-r-parser-internal.js js/R/03-r-parser.js js/R/04-r-workspace.js js/R/graphs/01-graph.js js/R/graphs/02-hist.js js/R/graphs/02-lines.js js/R/graphs/02-plot.js js/R/graphs/10-r-webvis-graph.js js/R/graphs/10-server-graph.js js/R/display/01-display.js js/R/display/02-array.js js/R/display/02-list.js js/R/display/02-pager.js js/R/display/02-table.js js/R/display/02-try-error.js js/R/commands/01-command-handler.js js/R/commands/02-assignment.js js/R/commands/02-help.js js/R/commands/02-histogram.js js/R/commands/02-lines.js js/R/commands/02-plot.js js/R/commands/02-print.js js/R/commands/02-summary-general.js js/R/commands/02-unsupported-commands.js && echo "ERROR: dos newline" && exit 1 || true
grep ' $' -Hn ../3rdparty/to-function.js ../3rdparty/functional.js js/00-tokens.js js/01-r-node-core.js js/02-observable.js js/03-r-api.js js/R/01-r-object.js js/R/02-r-parser-internal.js js/R/03-r-parser.js js/R/04-r-workspace.js js/R/graphs/01-graph.js js/R/graphs/02-hist.js js/R/graphs/02-lines.js js/R/graphs/02-plot.js js/R/graphs/10-r-webvis-graph.js js/R/graphs/10-server-graph.js js/R/display/01-display.js js/R/display/02-array.js js/R/display/02-list.js js/R/display/02-pager.js js/R/display/02-table.js js/R/display/02-try-error.js js/R/commands/01-command-handler.js js/R/commands/02-assignment.js js/R/commands/02-help.js js/R/commands/02-histogram.js js/R/commands/02-lines.js js/R/commands/02-plot.js js/R/commands/02-print.js js/R/commands/02-summary-general.js js/R/commands/02-unsupported-commands.js && echo "ERROR: trailing space" && exit 1 || true
rm -f r-node-shared.js
echo "// 33b71abab6ebcd59052023b3dcdb809e3324bcf1" >> r-node-shared.js
cat ../3rdparty/to-function.js ../3rdparty/functional.js js/00-tokens.js js/01-r-node-core.js js/02-observable.js js/03-r-api.js js/R/01-r-object.js js/R/02-r-parser-internal.js js/R/03-r-parser.js js/R/04-r-workspace.js js/R/graphs/01-graph.js js/R/graphs/02-hist.js js/R/graphs/02-lines.js js/R/graphs/02-plot.js js/R/graphs/10-r-webvis-graph.js js/R/graphs/10-server-graph.js js/R/display/01-display.js js/R/display/02-array.js js/R/display/02-list.js js/R/display/02-pager.js js/R/display/02-table.js js/R/display/02-try-error.js js/R/commands/01-command-handler.js js/R/commands/02-assignment.js js/R/commands/02-help.js js/R/commands/02-histogram.js js/R/commands/02-lines.js js/R/commands/02-plot.js js/R/commands/02-print.js js/R/commands/02-summary-general.js js/R/commands/02-unsupported-commands.js >> r-node-shared.js
mkdir -p ../deploy/htdocs/js/
cd ../deploy/htdocs/js && cp -r ../../../shared/r-node-shared.js . && cd -
/Users/aliving1/r-node/shared
make -C client
mkdir -p ../deploy/htdocs/js
mkdir -p ../deploy/htdocs/css
mkdir -p ../deploy/htdocs/assets
mkdir -p ../deploy/htdocs/doc
cd ../deploy/htdocs/js/ && cp -r ../../../client/htdocs/js/* . && \
cp -r ../../../3rdparty/extjs . && \
cp -r ../../../3rdparty/protovis . && \
cp -r ../../../3rdparty/shjs . && \
cd ../css/ && cp -r ../../../client/htdocs/css/* . && \
cd ../doc/ && cp -r ../../../client/htdocs/doc/* . && \
cd ../assets/ && cp -r ../../../client/htdocs/assets/* . && \
cd .. && cp -r ../../client/htdocs/index.* . && \
cp -r ../../client/htdocs/R.css . && \
cd ../../client
make -C server
gcc -o binding.node src/binding.o src/Rconnection.o -shared -L/Library/Frameworks/R.framework/Versions/2.15/Resources/lib -lR
Undefined symbols for architecture x86_64:
"std::ios_base::Init::Init()", referenced from:
___cxx_global_var_init in binding.o
___cxx_global_var_init in Rconnection.o
"std::ios_base::Init::~Init()", referenced from:
___cxx_global_var_init in binding.o
___cxx_global_var_init in Rconnection.o
"v8::HandleScope::HandleScope()", referenced from:
parseRexp(char*, int&)in binding.o
_init in binding.o
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
Connection::New(v8::Arguments const&) in binding.o
Connection::Connect(v8::Arguments const&) in binding.o
Connection::Close(v8::Arguments const&) in binding.o
Connection::Query(v8::Arguments const&) in binding.o
...
"v8::Null()", referenced from:
parseRexp(char*, int&)in binding.o
"v8::String::New(char const*, int)", referenced from:
parseRexp(char*, int&)in binding.o
Connection::Connect(v8::Arguments const&) in binding.o
Connection::Query(v8::Arguments const&) in binding.o
Connection::Login(v8::Arguments const&) in binding.o
Connection::Event(int) in binding.o
Connection::CloseConnectionWithError(char const*)in binding.o
"v8::Exception::Error(v8::Handle<v8::String>)", referenced from:
parseRexp(char*, int&)in binding.o
Connection::Connect(v8::Arguments const&) in binding.o
Connection::Query(v8::Arguments const&) in binding.o
Connection::Login(v8::Arguments const&) in binding.o
Connection::Event(int) in binding.o
Connection::CloseConnectionWithError(char const*)in binding.o
"v8::Array::New(int)", referenced from:
parseRexp(char*, int&)in binding.o
"v8::Integer::New(int)", referenced from:
parseRexp(char*, int&)in binding.o
"v8::Number::New(double)", referenced from:
parseRexp(char*, int&)in binding.o
"v8::Object::Set(v8::Handle<v8::Value>, v8::Handle<v8::Value>, v8::PropertyAttribute)", referenced from:
parseRexp(char*, int&)in binding.o
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"v8::Object::New()", referenced from:
parseRexp(char*, int&)in binding.o
"v8::Value::IsNull() const", referenced from:
parseRexp(char*, int&)in binding.o
"v8::HandleScope::~HandleScope()", referenced from:
parseRexp(char*, int&)in binding.o
_init in binding.o
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
Connection::New(v8::Arguments const&) in binding.o
Connection::Connect(v8::Arguments const&) in binding.o
Connection::Close(v8::Arguments const&) in binding.o
Connection::Query(v8::Arguments const&) in binding.o
...
"std::terminate()", referenced from:
parseRexp(char*, int&)in binding.o
_init in binding.o
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<v8::Local<v8::Value>*, std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > > >, v8::Local<v8::Value> const&)in binding.o
v8::Local<v8::Value>* std::__uninitialized_copy_aux<v8::Local<v8::Value>*, v8::Local<v8::Value>*>(v8::Local<v8::Value>*, v8::Local<v8::Value>*, v8::Local<v8::Value>*, std::__false_type)in binding.o
std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > >::~vector()in binding.o
Connection::New(v8::Arguments const&) in binding.o
...
"v8::HandleScope::CreateHandle(v8::internal::Object*)", referenced from:
v8::Local<v8::Value>::New(v8::Handle<v8::Value>)in binding.o
"v8::HandleScope::RawClose(v8::internal::Object**)", referenced from:
v8::Local<v8::Value> v8::HandleScope::Close<v8::Value>(v8::Handle<v8::Value>)in binding.o
v8::Local<v8::String> v8::HandleScope::Close<v8::String>(v8::Handle<v8::String>)in binding.o
v8::Local<v8::Boolean> v8::HandleScope::Close<v8::Boolean>(v8::Handle<v8::Boolean>)in binding.o
"v8::True()", referenced from:
v8::Boolean::New(bool)in binding.o
"v8::False()", referenced from:
v8::Boolean::New(bool)in binding.o
"v8::FunctionTemplate::New(v8::Handle<v8::Value> (*)(v8::Arguments const&), v8::Handle<v8::Value>, v8::Handle<v8::Signature>)", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"node::EventEmitter::constructor_template", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"v8::FunctionTemplate::Inherit(v8::Handle<v8::FunctionTemplate>)", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"v8::FunctionTemplate::InstanceTemplate()", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"v8::ObjectTemplate::SetInternalFieldCount(int)", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"v8::String::NewSymbol(char const*, int)", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
Connection::StateGetter(v8::Local<v8::String>, v8::AccessorInfo const&) in binding.o
"v8::Signature::New(v8::Handle<v8::FunctionTemplate>, int, v8::Handle<v8::FunctionTemplate>*)", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"v8::FunctionTemplate::PrototypeTemplate()", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"v8::Template::Set(v8::Handle<v8::String>, v8::Handle<v8::Data>, v8::PropertyAttribute)", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"v8::ObjectTemplate::SetAccessor(v8::Handle<v8::String>, v8::Handle<v8::Value> (*)(v8::Local<v8::String>, v8::AccessorInfo const&), void (*)(v8::Local<v8::String>, v8::Local<v8::Value>, v8::AccessorInfo const&), v8::Handle<v8::Value>, v8::AccessControl, v8::PropertyAttribute)", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"v8::FunctionTemplate::GetFunction()", referenced from:
Connection::Initialize(v8::Handle<v8::Object>) in binding.o
"std::__throw_length_error(char const*)", referenced from:
std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<v8::Local<v8::Value>*, std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > > >, v8::Local<v8::Value> const&)in binding.o
"___cxa_begin_catch", referenced from:
std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<v8::Local<v8::Value>*, std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > > >, v8::Local<v8::Value> const&)in binding.o
v8::Local<v8::Value>* std::__uninitialized_copy_aux<v8::Local<v8::Value>*, v8::Local<v8::Value>*>(v8::Local<v8::Value>*, v8::Local<v8::Value>*, v8::Local<v8::Value>*, std::__false_type)in binding.o
"___cxa_rethrow", referenced from:
std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<v8::Local<v8::Value>*, std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > > >, v8::Local<v8::Value> const&)in binding.o
v8::Local<v8::Value>* std::__uninitialized_copy_aux<v8::Local<v8::Value>*, v8::Local<v8::Value>*>(v8::Local<v8::Value>*, v8::Local<v8::Value>*, v8::Local<v8::Value>*, std::__false_type)in binding.o
"___cxa_end_catch", referenced from:
std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > >::_M_insert_aux(__gnu_cxx::__normal_iterator<v8::Local<v8::Value>*, std::vector<v8::Local<v8::Value>, std::allocator<v8::Local<v8::Value> > > >, v8::Local<v8::Value> const&)in binding.o
v8::Local<v8::Value>* std::__uninitialized_copy_aux<v8::Local<v8::Value>*, v8::Local<v8::Value>*>(v8::Local<v8::Value>*, v8::Local<v8::Value>*, v8::Local<v8::Value>*, std::__false_type)in binding.o
"operator delete(void*)", referenced from:
__gnu_cxx::new_allocator<v8::Local<v8::Value> >::deallocate(v8::Local<v8::Value>*, unsigned long)in binding.o
Connection::New(v8::Arguments const&) in binding.o
Connection::Login(char const*, char const*)in binding.o
Connection::Query(char const*)in binding.o
Connection::Connect(char const*, unsigned int)in binding.o
Connection::~Connection()in binding.o
node::ObjectWrap::~ObjectWrap()in binding.o
...
"std::__throw_bad_alloc()", referenced from:
__gnu_cxx::new_allocator<v8::Local<v8::Value> >::allocate(unsigned long, void const*)in binding.o
"operator new(unsigned long)", referenced from:
__gnu_cxx::new_allocator<v8::Local<v8::Value> >::allocate(unsigned long, void const*)in binding.o
Connection::New(v8::Arguments const&) in binding.o
Connection::Login(char const*, char const*)in binding.o
Connection::Query(char const*)in binding.o
Connection::Connect(char const*, unsigned int)in binding.o
new_parsed_Rexp(unsigned int*, Rmessage*)in Rconnection.o
Rlist::fix_content() in Rconnection.o
...
"v8::V8::GlobalizeReference(v8::internal::Object**)", referenced from:
v8::Persistent<v8::String>::New(v8::Handle<v8::String>)in binding.o
v8::Persistent<v8::Object>::New(v8::Handle<v8::Object>)in binding.o
"v8::Value::IsInt32() const", referenced from:
Connection::Connect(v8::Arguments const&) in binding.o
"v8::ThrowException(v8::Handle<v8::Value>)", referenced from:
Connection::Connect(v8::Arguments const&) in binding.o
Connection::Query(v8::Arguments const&) in binding.o
Connection::Login(v8::Arguments const&) in binding.o
"v8::Value::ToString() const", referenced from:
Connection::Connect(v8::Arguments const&) in binding.o
Connection::Query(v8::Arguments const&) in binding.o
Connection::Login(v8::Arguments const&) in binding.o
"v8::String::Utf8Value::Utf8Value(v8::Handle<v8::Value>)", referenced from:
Connection::Connect(v8::Arguments const&) in binding.o
Connection::Query(v8::Arguments const&) in binding.o
Connection::Login(v8::Arguments const&) in binding.o
"v8::Value::Uint32Value() const", referenced from:
Connection::Connect(v8::Arguments const&) in binding.o
"v8::String::Utf8Value::~Utf8Value()", referenced from:
Connection::Connect(v8::Arguments const&) in binding.o
Connection::Query(v8::Arguments const&) in binding.o
Connection::Login(v8::Arguments const&) in binding.o
"v8::Undefined()", referenced from:
Connection::Connect(v8::Arguments const&) in binding.o
Connection::Close(v8::Arguments const&) in binding.o
Connection::Query(v8::Arguments const&) in binding.o
Connection::Login(v8::Arguments const&) in binding.o
v8::Arguments::operator[](int) constin binding.o
node::ObjectWrap::~ObjectWrap()in binding.o
"v8::Exception::TypeError(v8::Handle<v8::String>)", referenced from:
Connection::Query(v8::Arguments const&) in binding.o
Connection::Login(v8::Arguments const&) in binding.o
"v8::Object::InternalFieldCount()", referenced from:
Connection* node::ObjectWrap::Unwrap<Connection>(v8::Handle<v8::Object>) in binding.o
node::ObjectWrap::Wrap(v8::Handle<v8::Object>) in binding.o
"v8::Object::SlowGetPointerFromInternalField(int)", referenced from:
v8::Object::GetPointerFromInternalField(int) in binding.o
"_ev_io_start", referenced from:
Connection::Login(char const*, char const*)in binding.o
Connection::Query(char const*)in binding.o
Connection::Connect(char const*, unsigned int)in binding.o
Connection::Event(int) in binding.o
Connection::MakeConnection() in binding.o
"_ev_io_stop", referenced from:
Connection::Login(char const*, char const*)in binding.o
Connection::Query(char const*)in binding.o
Connection::Close(v8::Local<v8::Value>) in binding.o
Connection::Event(int) in binding.o
Connection::MakeConnection() in binding.o
"node::EventEmitter::Emit(v8::Handle<v8::String>, int, v8::Handle<v8::Value>*)", referenced from:
Connection::Query(char const*)in binding.o
Connection::Close(v8::Local<v8::Value>) in binding.o
Connection::Event(int) in binding.o
Connection::MakeConnection() in binding.o
"v8::Object::SetPointerInInternalField(int, void*)", referenced from:
node::ObjectWrap::Wrap(v8::Handle<v8::Object>) in binding.o
"v8::V8::MakeWeak(v8::internal::Object**, void*, void (*)(v8::Persistent<v8::Value>, void*))", referenced from:
v8::Persistent<v8::Object>::MakeWeak(void*, void (*)(v8::Persistent<v8::Value>, void*))in binding.o
"v8::V8::IsGlobalNearDeath(v8::internal::Object**)", referenced from:
v8::Persistent<v8::Value>::IsNearDeath() const in binding.o
v8::Persistent<v8::Object>::IsNearDeath() const in binding.o
"v8::V8::IsGlobalWeak(v8::internal::Object**)", referenced from:
v8::Persistent<v8::Object>::IsWeak() const in binding.o
"v8::V8::ClearWeak(v8::internal::Object**)", referenced from:
v8::Persistent<v8::Object>::ClearWeak() in binding.o
"v8::Object::SetInternalField(int, v8::Handle<v8::Value>)", referenced from:
node::ObjectWrap::~ObjectWrap()in binding.o
"v8::V8::DisposeGlobal(v8::internal::Object**)", referenced from:
v8::Persistent<v8::Object>::Dispose() in binding.o
"vtable for __cxxabiv1::__class_type_info", referenced from:
typeinfo for node::ObjectWrapin binding.o
typeinfo for Rexpin Rconnection.o
typeinfo for Rmessagein Rconnection.o
typeinfo for Rconnectionin Rconnection.o
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"vtable for __cxxabiv1::__si_class_type_info", referenced from:
typeinfo for node::EventEmitterin binding.o
typeinfo for Connectionin binding.o
typeinfo for Rlistin Rconnection.o
typeinfo for Rvectorin Rconnection.o
typeinfo for Rstringsin Rconnection.o
typeinfo for Rsymbolin Rconnection.o
typeinfo for Rstringin Rconnection.o
...
NOTE: a missing vtable usually means the first non-inline virtual member function has no definition.
"___gxx_personality_v0", referenced from:
Dwarf Exception Unwind Info (__eh_frame) in binding.o
Dwarf Exception Unwind Info (__eh_frame) in Rconnection.o
"std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)", referenced from:
Rexp::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rlist::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rvector::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rstrings::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rsymbol::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rstring::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rdouble::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
...
"std::basic_ostream<char, std::char_traits<char> >::operator<<(int)", referenced from:
Rexp::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rvector::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
"std::basic_ostream<char, std::char_traits<char> >::operator<<(unsigned int)", referenced from:
Rexp::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rstrings::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rdouble::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
Rinteger::os_print(std::basic_ostream<char, std::char_traits<char> >&)in Rconnection.o
ld: symbol(s) not found for architecture x86_64
collect2: ld returned 1 exit status
make[1]: *** [binding.node] Error 1
make: *** [server] Error 2