链接较新的库而不是旧库

链接较新的库而不是旧库

我正在尝试从源代码编译点云库(http://pointclouds.org/)。运行cmake和make后,我收到以下链接错误:

Linking CXX executable ../../bin/pcl_convert_pcd_ascii_binary
../../lib/libpcl_io.so.1.7.2: undefined reference to `png_set_longjmp_fn'

作为一个新手,我不确定这个错误意味着什么,但我假设:它plc_convert_pcd_ascii_binary试图构建的可执行文件需要链接到库libpcl_io.so.1.7.2,但这个库包含函数png_set_longjump_fun,而找不到这个函数的定义?

因此,我尝试查看了 Stack Overflow 上的一些类似问题,结果发现png_set_longjump_fun包含在libpng库中,但只是在之后才引入的libpng-1.4.x。运行后dpkg -l | grep libpng*,我得到了以下输出:

ii  libpng12-0:amd64                                      1.2.50-1ubuntu2                                     amd64        PNG library - runtime
ii  libpng12-dev                                          1.2.50-1ubuntu2                                     amd64        PNG library - development

因此,看起来我需要libpng12-dev至少从 升级到libpng14-dev。从 libpng 网站,我看到我可以下载最新版本的源代码(但我可以通过 获得的最新版本apt-get只有)。但我担心如果我通过 apt-get 安装了一个版本,并手动安装了另一个版本,可能会发生一些冲突。但是,如果有依赖此版本但与较新版本不兼容的软件包,libpng12-dev则卸载可能会导致问题。libpng12-dev

因此,我想知道的是,我是否应该卸载/清除libpng12-dev,然后手动安装新版本,或者简单地安装新版本同时保留旧版本。如果我选​​择后者,我如何确保我尝试编译的 PCL 二进制文件将链接到这个新库,而不是旧库?

谢谢 :)

相关内容