[root@localdev Debug]# ldd freeling.node linux-gate.so.1 => (0x00ee2000) libfreeling-3.0-alfa1.so => not found libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00110000) libm.so.6 => /lib/libm.so.6 (0x00c29000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00ae7000) libpthread.so.0 => /lib/libpthread.so.0 (0x008d0000) libc.so.6 => /lib/libc.so.6 (0x0023b000) /lib/ld-linux.so.2 (0x0021c000)
Did I use the wrong binding.gyp command to point to it? On Thursday, March 29, 2012 3:06:44 AM UTC-4, Nathan Rajlich wrote: > > What does `ldd freeling.node` say (assuming you're on Linux)? > > On Wed, Mar 28, 2012 at 10:51 PM, rhasson <> wrote: > >> Nathan, >> >> I have a question about node-gyp. I have a native library that I'm >> building a node binding for. that library (freeling) has been >> built separately and in the build directory has an include and lib folders >> with the headers and .so files. >> I built my module (the node binding to freeling), everything compiles >> fine but when I try to require the module in node I get the following error: >> > require('./freeling') >> Error: libfreeling-3.0-alfa1.so: cannot open shared object file: No such >> file or directory >> at Object..node (module.js:476:11) >> at Module.load (module.js:352:32) >> at Function._load (module.js:310:12) >> at Module.require (module.js:358:17) >> at require (module.js:374:17) >> at repl:1:2 >> at REPLServer.eval (repl.js:85:21) >> at Interface.<anonymous> (repl.js:202:12) >> at Interface.emit (events.js:67:17) >> at Interface._onLine (readline.js:169:10) >> >> Here is my binding.gyp file: >> >> { >> 'targets': [ >> { >> 'target_name': 'freeling', >> 'type': 'loadable_module', >> 'product_extension': 'node', >> 'product_prefix': '', >> 'include_dirs': ['/home/roy/freeling/free3/include'], >> 'libraries': [ >> '/home/roy/freeling/free3/lib/libfreeling.so', >> '/home/roy/freeling/free3/lib/libfreeling-3.0-alfa1.so' >> ], >> 'sources': ['freeling.cc', 'freeling_tokenizer.cc'] >> } >> ] >> } >> >> I'm not sure I'm doing this correctly. Basically, I need to link by >> module to the freeling headers and object files so it recognizes the >> freeling classes and functions I'll be calling from within my module. >> >> Thanks, >> Roy >> >> On Wednesday, March 28, 2012 12:38:29 AM UTC-4, rhasson wrote: >>> >>> Never mind, I found the problem. >>> >>> In my .cc file I was declaring the function as GetWString() instead of >>> FreeLingTokenizer::GetWString(**). After adding the scope it was ok. >>> Now I have another bug but I'll spare you my debugging unless I get stuck. >>> >>> Thank you, switching to 0.7.6 and node-gyp was a great idea, at least >>> now I get real error messages that I can debug. >>> >>> Roy >>> >>> On Wednesday, March 28, 2012 12:29:48 AM UTC-4, rhasson wrote: >>>> >>>> Ok, so I installed 0.7.6 and compiled with node-gyp fine and this time >>>> a little more details but I'm not sure how to resolve this issue. >>>> >>>> > process.version >>>> 'v0.7.6' >>>> > l = require('./freeling.node') >>>> Error: /home/roy/freeling/node_bind/**build/Debug/freeling.node: >>>> undefined symbol: _**ZN17FreeLingTokenizer10GetWStr** >>>> ingEN2v86HandleINS0_6StringEEE >>>> at Object..node (module.js:476:11) >>>> at Module.load (module.js:352:32) >>>> at Function._load (module.js:310:12) >>>> at Module.require (module.js:358:17) >>>> at require (module.js:374:17) >>>> at repl:1:6 >>>> at REPLServer.eval (repl.js:85:21) >>>> at Interface.<anonymous> (repl.js:202:12) >>>> at Interface.emit (events.js:67:17) >>>> at Interface._onLine (readline.js:169:10) >>>> >>>> Inside my class declaration under private I have this: >>>> static std::wstring GetWString(v8::Handle<v8::**String> str); >>>> >>>> Then in my .cc file I have the actual function: >>>> // Convert a V8 string to a wide string. >>>> std::wstring GetWString(v8::Handle<v8::**String> str) { >>>> v8::HandleScope scope; >>>> >>>> uint16_t* buf = new uint16_t[str->Length()+1]; >>>> str->Write(buf); >>>> std::wstring value = reinterpret_cast<wchar_t*>(**buf); >>>> delete [] buf; >>>> >>>> return value; >>>> } >>>> >>>> I'm not sure why the error is "undefined symbol". >>>> >>>> Thanks, >>>> Roy >>>> >>>> On Monday, March 26, 2012 5:30:29 PM UTC-4, SteveCronin wrote: >>>>> >>>>> I'm getting an error when I 'require' a module I have built. >>>>> >>>>> Is this a 32/64bit issue? If so how do I best correct for future node >>>>> compatibility? >>>>> >>>>> node 0.6.13 on Mac OS X 10.7.3 >>>>> >>>>> I'm still using node-waf to manually compile modules -- is that the >>>>> problem? >>>>> Here's the wscript: >>>>> srcdir = '.' >>>>> blddir = 'build' >>>>> VERSION = '1.0.0' >>>>> APPNAME = 'XYZ-ABC-utils' >>>>> >>>>> def set_options(opt): >>>>> opt.tool_options('compiler_**cxx') >>>>> >>>>> def configure(conf): >>>>> conf.check_tool('compiler_cxx'**) >>>>> conf.check_tool('node_addon') >>>>> >>>>> def build(bld): >>>>> obj = bld.new_task_gen('cxx', 'shlib', 'node_addon') >>>>> obj.source = 'node-ABC-support.cc', 'ABC1-support.cc', >>>>> 'ABC2-support.cc', 'ABC3-support.cc' >>>>> obj.libpath = [ bld.path.abspath() ] >>>>> obj.lib = 'GHJ.o' >>>>> bld.env.append_value('**LINKFLAGS', '-lcrypto -lssl -lz'.split()) >>>>> obj.target = 'XYZ-ABC-utils' >>>>> >>>>> Even if I add this line to the script I still get the same errors: >>>>> >>>>> obj.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", >>>>> "-D_LARGEFILE_SOURCE"] >>>>> >>>> >>>> On Monday, March 26, 2012 5:30:29 PM UTC-4, SteveCronin wrote: >>>>> >>>>> I'm getting an error when I 'require' a module I have built. >>>>> >>>>> Is this a 32/64bit issue? If so how do I best correct for future node >>>>> compatibility? >>>>> >>>>> node 0.6.13 on Mac OS X 10.7.3 >>>>> >>>>> I'm still using node-waf to manually compile modules -- is that the >>>>> problem? >>>>> Here's the wscript: >>>>> srcdir = '.' >>>>> blddir = 'build' >>>>> VERSION = '1.0.0' >>>>> APPNAME = 'XYZ-ABC-utils' >>>>> >>>>> def set_options(opt): >>>>> opt.tool_options('compiler_**cxx') >>>>> >>>>> def configure(conf): >>>>> conf.check_tool('compiler_cxx'**) >>>>> conf.check_tool('node_addon') >>>>> >>>>> def build(bld): >>>>> obj = bld.new_task_gen('cxx', 'shlib', 'node_addon') >>>>> obj.source = 'node-ABC-support.cc', 'ABC1-support.cc', >>>>> 'ABC2-support.cc', 'ABC3-support.cc' >>>>> obj.libpath = [ bld.path.abspath() ] >>>>> obj.lib = 'GHJ.o' >>>>> bld.env.append_value('**LINKFLAGS', '-lcrypto -lssl -lz'.split()) >>>>> obj.target = 'XYZ-ABC-utils' >>>>> >>>>> Even if I add this line to the script I still get the same errors: >>>>> >>>>> obj.cxxflags = ["-g", "-D_FILE_OFFSET_BITS=64", >>>>> "-D_LARGEFILE_SOURCE"] >>>>> >>>> -- >> Job Board: http://jobs.nodejs.org/ >> Posting guidelines: >> https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines >> You received this message because you are subscribed to the Google >> Groups "nodejs" group. >> To post to this group, send email to nodejs@googlegroups.com >> To unsubscribe from this group, send email to >> nodejs+unsubscr...@googlegroups.com >> For more options, visit this group at >> http://groups.google.com/group/nodejs?hl=en?hl=en >> > > -- Job Board: http://jobs.nodejs.org/ Posting guidelines: https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines You received this message because you are subscribed to the Google Groups "nodejs" group. To post to this group, send email to nodejs@googlegroups.com To unsubscribe from this group, send email to nodejs+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/nodejs?hl=en?hl=en