【问题标题】:HDF5 library segfault (mismatching headers)HDF5 库段错误(标头不匹配)
【发布时间】:2017-08-12 02:20:03
【问题描述】:

我在 ubuntu 上安装了 flann 和 libhdf5-serial-dev c++ 库。之后,我编译了 flann_example.cpp 文件没有问题。但是,当我启动可执行文件时,我收到以下错误消息:

警告! HDF5 库版本不匹配错误 用于编译此应用程序的 HDF5 头文件不匹配 此应用程序链接到的 HDF5 库使用的版本。 如果应用程序继续,可能会发生数据损坏或分段错误。 当应用程序由一个版本的 HDF5 编译但 与不同版本的静态或共享 HDF5 库链接。 您应该重新编译应用程序或检查您的共享库相关 诸如“LD_LIBRARY_PATH”之类的设置。 您可以自行承担风险,通过设置环境来禁用此警告 将变量“HDF5_DISABLE_VERSION_CHECK”的值设置为“1”。 将其设置为 2 或更高将完全抑制警告消息。 标题是 1.8.16,库是 1.8.7 再见... 放弃(核心转储)

我使用以下表达式来抑制此警告:

 cmake -HDF5_DISABLE_VERSION_CHECK=1 -H. -Bbuild

但我仍然有这个消息。我用 ccmake 查找可选标志 HDF5_DISABLE_VERSION_CHECK 以检查它是否设置为 1。但我看不到这个标志。 有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: c++ hdf5 flann


    【解决方案1】:

    您可以通过将环境变量“HDF5_DISABLE_VERSION_CHECK”设置为值“1”来禁用此警告,风险自负。

    HDF5_DISABLE_VERSION_CHECK 是环境变量,而不是编译器 #define 或 CMake 变量。在你的 shell 中设置它:

    export HDF5_DISABLE_VERSION_CHECK=1
    path/to/flann_example
    

    HDF5_DISABLE_VERSION_CHECK=1 path/to/flann_example
    

    但是,解决根本问题(库不匹配)可能会好得多。在 Ubuntu 上,如果您始终安装 Ubuntu 打包版本的库(通过 aptaptitude、Synaptic...)而不是自己安装库,这应该确保所有库版本都兼容。

    【讨论】:

    • 谢谢,我会试试的。要获取 HDF 库,我执行以下指令: sudo apt-get install libhdf5-serial-dev 并收到此消息。
    • @axel - 你从哪里得到 flann?
    • @axel - 您使用的是源代码分发版还是二进制文件?您正在运行哪个版本的 Ubuntu?如果您是针对 Ubuntu 提供的 .deb 从源代码构建,则不应遇到此错误。
    猜你喜欢
    • 1970-01-01
    • 2020-07-11
    • 2018-01-06
    • 2021-02-03
    • 1970-01-01
    • 1970-01-01
    • 2014-03-11
    • 2013-09-12
    • 2020-01-10
    相关资源
    最近更新 更多