ree*_*aal 3 c++ module shared-libraries waf node.js
我正在尝试为node.js编写C ++模块。节点正在使用waf作为构建器。
我想检查配置,如果库“ sigar”存在。我正在尝试这样做:
def configure(conf):
conf.check_cxx(lib='sigar')
Run Code Online (Sandbox Code Playgroud)
当我运行“ node-waf configure”时,收到以下消息:
Checking for library sigar : not found
Run Code Online (Sandbox Code Playgroud)
但是libsigar.so存在:
# whereis libsigar
libsigar: /lib64/libsigar.so
Run Code Online (Sandbox Code Playgroud)
安装“ libsigar”库后,我还运行了ldconfig。节点模块可以编译,链接并正常工作。其他库,例如libm,libboost_system等,可以在configure上找到。
有人可以告诉我我在做什么错吗?除了仅将* .so复制到库路径并运行ldconfig之外,安装库还有什么特别的事情吗?
谢谢你的帮助。
我自己解决了。使用-vvv选项运行configure非常有用,对于非常详细的输出。
20:31:48 runner system command -> ['/usr/bin/g++', 'Release/test_1.o', '-o', '/home/reeaal/workspace/hwmonitor/build/.conf_check_0/testbuild/Release/testprog', '-Wl,-Bdynamic', '-lsigar']
Run Code Online (Sandbox Code Playgroud)
当我尝试重新编译程序时,出现了一个链接器错误,该错误确实有所帮助:
g++ test.cpp -Bdynamic -lsigar
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64/libsigar.so: undefined reference to `dlsym'
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64/libsigar.so: undefined reference to `dlopen'
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../lib64/libsigar.so: undefined reference to `dlclose'
collect2: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)
在检查libsigar之前添加链接器标志可解决此问题:
conf.env.append_value('LINKFLAGS', '-ldl')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2822 次 |
| 最近记录: |