有时在编译错误时输出缺少的头文件的名称,并且可以使用Linux包管理器跟踪它来自的包。
但是当错误属于下面的排序时,如何找到缺少的依赖项,它没有为您提供缺少的头文件的名称?
make[2]: *** [examples/undocumented/libshogun/base_map_parameters] Error 1
CMakeFiles/Makefile2:916: recipe for target 'examples/undocumented/libshogun/CMakeFiles/base_map_parameters.dir/all' failed
make[1]: *** [examples/undocumented/libshogun/CMakeFiles/base_map_parameters.dir/all] Error 2
../../../src/shogun/libshogun.so.17.1: undefined reference to `SZ_BufftoBuffDecompress'
../../../src/shogun/libshogun.so.17.1: undefined reference to `SZ_encoder_enabled'
../../../src/shogun/libshogun.so.17.1: undefined reference to `SZ_BufftoBuffCompress'
collect2: error: ld returned 1 exit status
examples/undocumented/libshogun/CMakeFiles/base_migration_dropping_and_new.dir/build.make:129: recipe for target 'examples/undocumented/libshogun/base_migration_dropping_and_new' failed
答案 0 :(得分:3)
您提供的头文件示例是编译时错误。编译器知道文件并可以向您显示缺少的内容。您在上面提到的错误是链接时间错误。
您提出的那个是常见的,而且没有定义符号。通常会发生这种情况,因为库已从链接器行中排除。此错误的另一个常见原因是您链接的库早于程序预期的库。
通常情况下,当发现此类错误时,我会发现自己正在搜索像this one这样的文章。在对文件或库进行计费时,打包管理器不会跟踪功能级别的详细信息。我一直认为使用nm命令检查库并将该元数据放入包装系统是一个很好的增强。
答案 1 :(得分:3)
(这不是一般答案,但是)在这种情况下,googling SZ_BufftoBuffDecompress提供了https://github.com/PacificBiosciences/blasr/issues/4的链接,其中suggested
似乎未正确安装hdf5库。您使用的hdf5库需要szip库。所以你可能需要先安装szip lib然后重新制作你的hdf5包(用szip lib链接它,-lsz)。
所以似乎缺少依赖是szip 。
至于一般搜索,@ Thomas Padron-McCarthy的评论明智地建议
或许添加程序名称
和
在Ubuntu上我也可以添加
apt-get
和install
,直接找到有关如何安装缺失部分的说明!
如果您只需要软件,并且不觉得需要自己编译,请查看github帖子。 Another poster