waf找不到现有的库
我正在尝试为node.js编写一个C ++模块。 节点正在使用waf作为构build器。
我想检查configuration,如果库“sigar”存在。 我正在试图这样做:
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上find。
有人能告诉我我做错了什么吗? 安装一个库有没有什么特别的事情比只复制一个* .so到库path并运行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']
当我尝试重新编译程序时,出现了一个链接器错误,这真的有所帮助:
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')