首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CMake /链接libfreeimage / libtiff时出错

CMake /链接libfreeimage / libtiff时出错
EN

Stack Overflow用户
提问于 2017-07-31 16:12:18
回答 3查看 1.5K关注 0票数 2

我对CMake非常陌生,现在我正在尝试用它从https://colmap.github.io/编译COLMAP软件。它会编译模块,但在链接时会失败,并出现许多错误,例如

代码语言:javascript
复制
/usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so: undefined reference to `TIFFReadEncodedStrip@LIBTIFF_4.0'

我已经通过apt包安装了libfreeimage和libtiff (libfreeimage-dev / libtiff4-dev)。我还显式地将libtiff添加到CMakeLists-Files中的依赖项中,如下所示

代码语言:javascript
复制
find_package(TIFF REQUIRED)

代码语言:javascript
复制
set(COLMAP_LIBRARIES
...
${FREEIMAGE_LIBRARIES}
${TIFF_LIBRARIES}

我是否必须在CMake-File中的某处显式地将库设置为具有动态链接?或者还有什么问题呢?

EN

回答 3

Stack Overflow用户

发布于 2017-07-31 17:01:03

看起来libfreeimage.so正在尝试使用tiff库,例如在您的项目中包含tiff:

代码语言:javascript
复制
find_package( TIFF REQUIRED )
if ( TIFF_FOUND )
    include_directories( ${TIFF_INCLUDE_DIRS} )
    target_link_libraries( yourprojectname ${TIFF_LIBRARIES} )
endif( TIFF_FOUND )
票数 4
EN

Stack Overflow用户

发布于 2018-05-26 01:31:50

如果您已经安装了anaconda,请将其从路径中删除(位于~/.zshc/~/.bashrc中),然后重新启动shell。

代码语言:javascript
复制
sudo apt-get remove libtiff5-dev
sudo apt-get install libtiff5-dev

然后,再次尝试制作该项目。

免责声明:适用于我的机器:)

我的配置:Kubuntu16.04 x64

票数 3
EN

Stack Overflow用户

发布于 2019-11-19 14:17:24

我找到了解决它的方法。我希望它能为你工作。

这些问题是由于找不到合适的库文件造成的。

安装所需的软件包如果尚未安装installed.If,则需要的文件已准备就绪,但路径不正确,您可以按照以下步骤进行解决。

  1. ldd /usr/lib/gcc/x86_64-linux-gnu/5/../../../x86_64-linux-gnu/libfreeimage.so

找到依赖文件,它将输出

代码语言:javascript
复制
    ...
libtiff.so.5 => /usr/lib/x86_64-linux-gnu/libtiff.so.5 (0x00007f81bc0e7000)  
...

找到依赖文件后,下一步是要用来替换文件的其他位置的库文件的路径。

2.locate libtiff.so

它将输出

代码语言:javascript
复制
    ...
/home/username/anaconda3/lib/libtiff.so.5
/root/anaconda3/lib/libtiff.so.5    /var/lib/docker/aufs/diff/0faa9badda6fc687ec25d69baecdf401799f90cde729b0bf9fb2ed24dff76e4e/usr/lib/x86_64-linux-gnu/libtiff.so.5
...

你可以看到你想要的路径replace.Sometimes在系统中有多个可用的项目,如果你不确定使用哪一个,你可以尝试,直到你找到正确的文件。

要创建软链接,源文件位于ln命令的前面,后跟依赖位置。例如,

代码语言:javascript
复制
ln -sf /var/lib/docker/aufs/diff/07382a150bf28b01a386095ec78a8d2e92fbf670393b3bd16b6f8fbc2d159ae1/usr/lib/x86_64-linux-gnu/libtiff.so.5 /usr/lib/x86_64-linux-gnu/libtiff.so.5 

最后重新编译,一般都可以解决。祝好运。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45410538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档