waf无法找到现有的库

时间:2012-02-05 17:28:01

标签: c++ node.js module shared-libraries waf

我正在尝试为node.js编写C ++模块。 Node正在使用waf作为构建器。

如果库“sigar”存在,我想检查configure。 我正在尝试这样做:

def configure(conf):
    conf.check_cxx(lib='sigar')

当我运行“node-waf configure”时,我收到以下消息:

Checking for library sigar               : not found 

但是libsigar.so存在:

# whereis libsigar
libsigar: /lib64/libsigar.so

我在安装“libsigar”库后也运行了ldconfig。 节点模块编译,链接和工作没有错误。 其他库如libm,libboost_system等可以在configure上找到。

有人能告诉我我做错了什么吗? 有没有什么特别的安装库,而不是只将* .so复制到库路径并运行ldconfig?

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

我自己解决了。 对于非常详细的输出,使用-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']

当我尝试重新编译程序时,我收到了链接器错误,这确实有帮助:

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

在检查libsigar之前添加链接器标志解决了这个问题:

conf.env.append_value('LINKFLAGS', '-ldl')