gpt4 book ai didi

c++ - waf 找不到现有库

转载 作者:太空狗 更新时间:2023-10-29 20:46:03 25 4
gpt4 key购买 nike

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

如果库“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。 Node 模块编译、链接和工作没有错误。其他库如 libm、libboost_system 等可以在配置中找到。

有人能告诉我我做错了什么吗?除了将 *.so 复制到库路径并运行 ldconfig 之外,安装库还有什么特别的吗?

感谢您的帮助。

最佳答案

我自己解决了。对于非常详细的输出,使用 -vvv 选项运行配置非常有帮助。

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')

关于c++ - waf 找不到现有库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9151304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com