[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

Reply via email to