waf找不到现有的库
waf cannot find an existing library
我正在尝试为node.js编程一个C++模块。节点正在使用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。节点模块编译、链接并正常工作。其他库,如libm、libboostrongystem等,可以在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']
当我试图重新编译程序时,我得到了一个链接器错误,这真的很有帮助:
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')
相关文章:
- std::map<struct,struct>::find 找不到匹配项,但是如果我循环通过 begin() 到 end(),我在那里看到匹配项
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 为什么野牛仍在使用"int yylex(void)",却找不到"int yylex(YYS
- C++ Windows 驱动程序MSB3030无法复制该文件,因为它找不到
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 找不到QtResource文件中的文件
- VC++本机单元测试,找不到调试符号
- RegGetValue在当前用户下找不到名称
- 带有 -stdlib=libc++ 的 clang++ 9.0.1 找不到<optional>
- c++找不到具有相同哈希的无序集合元素
- 找不到以下加速库:boost_fiber
- 找不到 FLTK(缺少:FLTK_INCLUDE_DIR)
- 设置 Visual Studio for MPI: 找不到标识符错误
- "assimp/config.h"找不到,但它在文件夹中
- 链接器找不到在虚拟类 c++ 中访问的静态字段的符号
- C++系统找不到指定的文件错误
- FindPackageHandleStandardArgs.cmake:137 的 CMake 错误(消息):找不到 Boost (缺少:正则表达式)(找到合适的版本"1.72.0",
- vcpkg 添加新库,但找不到
- Qt 5.11.2 (Clang 8.0 (Apple), 64 位), 找不到 QJSEngine 文件
- waf找不到现有的库